1
2
3
4
5
6
7 package org.asyrinx.joey.gen.command.rdb;
8
9 import java.util.Iterator;
10
11 import org.apache.commons.collections.Predicate;
12 import org.apache.commons.lang.StringUtils;
13 import org.asyrinx.joey.gen.model.rdb.Column;
14 import org.asyrinx.joey.gen.model.rdb.Table;
15
16 /***
17 * @author takeshi
18 */
19 public class PrepareCaptionColumn extends RdbCommand {
20
21 /***
22 *
23 */
24 public PrepareCaptionColumn() {
25 super();
26 }
27
28
29
30
31
32
33 public void visit(Table table) {
34 for (int i = 0; i < predicates.length; i++) {
35 final Column column = findColumn(table, predicates[i]);
36 if (column != null) {
37 table.setCaptionColumn(column);
38 return;
39 }
40 }
41 }
42
43 final Predicate[] predicates = new Predicate[] {
44 new Predicate() {
45 public boolean evaluate(Object obj) {
46 if (!(obj instanceof Column))
47 throw new UnsupportedOperationException();
48 final Column column = (Column) obj;
49 return column.isCaption();
50 }
51 }, new Predicate() {
52 public boolean evaluate(Object obj) {
53 if (!(obj instanceof Column))
54 throw new UnsupportedOperationException();
55 final Column column = (Column) obj;
56 return "name".equalsIgnoreCase(column.getName());
57 }
58 }, new Predicate() {
59 public boolean evaluate(Object obj) {
60 if (!(obj instanceof Column))
61 throw new UnsupportedOperationException();
62 final Column column = (Column) obj;
63 if (StringUtils.isEmpty(column.getName()))
64 return false;
65 return column.getName().toLowerCase().endsWith("name");
66 }
67 }
68
69 };
70
71 private Column findColumn(Table table, Predicate predicate) {
72 for (Iterator i = table.getColumns().iterator(); i.hasNext();) {
73 final Column column = (Column) i.next();
74 if (predicate.evaluate(column))
75 return column;
76 }
77 return null;
78 }
79
80 }