Source code: com/ghettojedi/aop/example/Main.java
1 package com.ghettojedi.aop.example;
2
3 import org.apache.commons.collections.Predicate;
4 import org.apache.commons.collections.Transformer;
5
6 import java.util.Arrays;
7 import java.util.Collection;
8
9 import com.ghettojedi.aop.example.patterns.observer.Observer;
10 import com.ghettojedi.aop.example.patterns.observer.Subject;
11
12 public class Main {
13 public static void main(String[] args) {
14 helloWorld();
15 enumerableMixin();
16 compositeBook();
17 }
18
19 private static void helloWorld() {
20 HelloWorld hello = HelloWorld.create();
21 hello.test();
22 hello.hello();
23 }
24
25 private static void enumerableMixin() {
26 EnumerableList list = EnumerableList.create();
27 list.addAll(Arrays.asList(new String[]{"January", "Ferbruary", "Mars", "April", "May", "June", "July",
28 "August", "September", "October", "November", "December"}));
29
30 Collection theMonthsWithoutR = list.reject(new Predicate() {
31 public boolean evaluate(Object object) {
32 return ((String) object).toLowerCase().indexOf("r") >= 0;
33 }
34 });
35 System.out.println(theMonthsWithoutR);
36
37 EnumerableSet set = EnumerableSet.create();
38 set.addAll(list);
39
40 Collection upperCaseMonths = set.collect(new Transformer() {
41 public Object transform(Object object) {
42 return ((String) object).toUpperCase();
43 }
44 });
45 System.out.println(upperCaseMonths);
46 }
47
48 private static void compositeBook() {
49 Book book = Book.create("Design Patterns", "GoF");
50 book.attach(new Observer() {
51 public void update(Subject subject) {
52 System.out.println("Someone updated the book");
53 }
54 });
55
56 Page page1 = Page.create(1);
57 page1.add(Line.create("There are many patterns...."));
58 page1.add(Line.create("Some on the first page."));
59 book.add(page1);
60
61 Page page2 = Page.create(2);
62 page2.add(Line.create("But most on the second page!"));
63 page2.add(Line.create("Composite"));
64 page2.add(Line.create("Visitor"));
65 book.add(page2);
66
67 book.accept(new PrintlnVisitor());
68 }
69 }