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 public void visit(Table table) {
22 for (int i = 0; i < predicates.length; i++) {
23 final Column column = findColumn(table, predicates[i]);
24 if (column != null) {
25 table.setCaptionColumn(column);
26 return;
27 }
28 }
29 }
30
31 final Predicate[] predicates = new Predicate[] {
32 new Predicate() {
33 public boolean evaluate(Object obj) {
34 if (!(obj instanceof Column))
35 throw new UnsupportedOperationException();
36 final Column column = (Column) obj;
37 return column.isCaption();
38 }
39 }, new Predicate() {
40 public boolean evaluate(Object obj) {
41 if (!(obj instanceof Column))
42 throw new UnsupportedOperationException();
43 final Column column = (Column) obj;
44 return "name".equalsIgnoreCase(column.getName());
45 }
46 }, new Predicate() {
47 public boolean evaluate(Object obj) {
48 if (!(obj instanceof Column))
49 throw new UnsupportedOperationException();
50 final Column column = (Column) obj;
51 if (StringUtils.isEmpty(column.getName()))
52 return false;
53 return column.getName().toLowerCase().endsWith("name");
54 }
55 }
56
57 };
58
59 private Column findColumn(Table table, Predicate predicate) {
60 for (Iterator i = table.getColumns().iterator(); i.hasNext();) {
61 final Column column = (Column) i.next();
62 if (predicate.evaluate(column))
63 return column;
64 }
65 return null;
66 }
67
68 }