View Javadoc

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