1
2
3
4
5
6
7 package org.asyrinx.joey.gen.command.rdb2java.standard;
8
9 import java.util.Iterator;
10 import java.util.List;
11
12 import org.asyrinx.brownie.core.lang.StringUtils;
13 import org.asyrinx.joey.gen.command.rdb2java.NamingStrategy;
14 import org.asyrinx.joey.gen.model.Element;
15 import org.asyrinx.joey.gen.model.rdb.Column;
16 import org.asyrinx.joey.gen.model.rdb.Databases;
17 import org.asyrinx.joey.gen.model.rdb.RdbEnumeration;
18 import org.asyrinx.joey.gen.model.rdb.Table;
19
20 /***
21 * @author takeshi
22 */
23 public class BasicNaming implements NamingStrategy {
24
25 /***
26 *
27 */
28 public BasicNaming() {
29 super();
30 }
31
32 private char separator = '_';
33
34 protected String doUnderscoreBasedNaming(String schemaName) {
35 final StringBuffer result = new StringBuffer();
36 final List parts = StringUtils.tokenize(schemaName, String.valueOf(getSeparator()));
37 for (Iterator i = parts.iterator(); i.hasNext();) {
38 String namePart = i.next().toString().toLowerCase();
39 result.append(StringUtils.capitalize(namePart));
40 }
41 return result.toString();
42 }
43
44 protected String toName(Element element) {
45 final Object optionName = element.getOptions().get(JavaOptions.JAVA_NAME);
46 return (optionName != null) ? optionName.toString() : doUnderscoreBasedNaming(element.getName());
47 }
48
49 private final String[] EnumPropertyDeleteTargets = new String[] { "Id", "Cd", "Code", "No" };
50
51
52
53
54
55
56 public String toEnumPropertyName(String name) {
57 for (int i = 0; i < EnumPropertyDeleteTargets.length; i++) {
58 if (name.endsWith(EnumPropertyDeleteTargets[i])) {
59 return name.substring(0, name.length() - EnumPropertyDeleteTargets[i].length());
60 }
61 }
62 return name + "Enum";
63 }
64
65
66
67
68
69
70 public String toAppDomainName(Databases databases) {
71 return toName(databases);
72 }
73
74
75
76
77
78
79 public String toEnumerationName(RdbEnumeration enumeration) {
80 return null;
81 }
82
83
84
85
86
87
88 public String toClassName(Table table) {
89 return toName(table);
90 }
91
92
93
94
95
96
97 public String toPropertyName(Column column) {
98 return StringUtils.uncapitalize(toName(column));
99 }
100
101 /***
102 * @return Returns the separator.
103 */
104 public char getSeparator() {
105 return separator;
106 }
107
108 /***
109 * @param separator
110 * The separator to set.
111 */
112 public void setSeparator(char separator) {
113 this.separator = separator;
114 }
115 }