View Javadoc
1   /**
2    *    Copyright 2006-2016 the original author or authors.
3    *
4    *    Licensed under the Apache License, Version 2.0 (the "License");
5    *    you may not use this file except in compliance with the License.
6    *    You may obtain a copy of the License at
7    *
8    *       http://www.apache.org/licenses/LICENSE-2.0
9    *
10   *    Unless required by applicable law or agreed to in writing, software
11   *    distributed under the License is distributed on an "AS IS" BASIS,
12   *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   *    See the License for the specific language governing permissions and
14   *    limitations under the License.
15   */
16  package org.mybatis.generator.internal.types;
17  
18  import java.sql.Types;
19  import java.util.HashMap;
20  import java.util.Map;
21  
22  /**
23   * TODO - Delete Me
24   * 
25   * @author Jeff Butler
26   */
27  public class JdbcTypeNameTranslator {
28  
29      private static Map<Integer, String> typeToName;
30      private static Map<String, Integer> nameToType;
31  
32      static {
33          typeToName = new HashMap<Integer, String>();
34          typeToName.put(Types.ARRAY, "ARRAY"); //$NON-NLS-1$
35          typeToName.put(Types.BIGINT, "BIGINT"); //$NON-NLS-1$
36          typeToName.put(Types.BINARY, "BINARY"); //$NON-NLS-1$
37          typeToName.put(Types.BIT, "BIT"); //$NON-NLS-1$
38          typeToName.put(Types.BLOB, "BLOB"); //$NON-NLS-1$
39          typeToName.put(Types.BOOLEAN, "BOOLEAN"); //$NON-NLS-1$
40          typeToName.put(Types.CHAR, "CHAR"); //$NON-NLS-1$
41          typeToName.put(Types.CLOB, "CLOB"); //$NON-NLS-1$
42          typeToName.put(Types.DATALINK, "DATALINK"); //$NON-NLS-1$
43          typeToName.put(Types.DATE, "DATE"); //$NON-NLS-1$
44          typeToName.put(Types.DECIMAL, "DECIMAL"); //$NON-NLS-1$
45          typeToName.put(Types.DISTINCT, "DISTINCT"); //$NON-NLS-1$
46          typeToName.put(Types.DOUBLE, "DOUBLE"); //$NON-NLS-1$
47          typeToName.put(Types.FLOAT, "FLOAT"); //$NON-NLS-1$
48          typeToName.put(Types.INTEGER, "INTEGER"); //$NON-NLS-1$
49          typeToName.put(Types.JAVA_OBJECT, "JAVA_OBJECT"); //$NON-NLS-1$
50          typeToName.put(Types.LONGVARBINARY, "LONGVARBINARY"); //$NON-NLS-1$
51          typeToName.put(Types.LONGVARCHAR, "LONGVARCHAR"); //$NON-NLS-1$
52          typeToName.put(Types.NCHAR, "NCHAR"); //$NON-NLS-1$
53          typeToName.put(Types.NCLOB, "NCLOB"); //$NON-NLS-1$
54          typeToName.put(Types.NVARCHAR, "NVARCHAR"); //$NON-NLS-1$
55          typeToName.put(Types.LONGNVARCHAR, "LONGNVARCHAR"); //$NON-NLS-1$
56          typeToName.put(Types.NULL, "NULL"); //$NON-NLS-1$
57          typeToName.put(Types.NUMERIC, "NUMERIC"); //$NON-NLS-1$
58          typeToName.put(Types.OTHER, "OTHER"); //$NON-NLS-1$
59          typeToName.put(Types.REAL, "REAL"); //$NON-NLS-1$
60          typeToName.put(Types.REF, "REF"); //$NON-NLS-1$
61          typeToName.put(Types.SMALLINT, "SMALLINT"); //$NON-NLS-1$
62          typeToName.put(Types.STRUCT, "STRUCT"); //$NON-NLS-1$
63          typeToName.put(Types.TIME, "TIME"); //$NON-NLS-1$
64          typeToName.put(Types.TIMESTAMP, "TIMESTAMP"); //$NON-NLS-1$
65          typeToName.put(Types.TINYINT, "TINYINT"); //$NON-NLS-1$
66          typeToName.put(Types.VARBINARY, "VARBINARY"); //$NON-NLS-1$
67          typeToName.put(Types.VARCHAR, "VARCHAR"); //$NON-NLS-1$
68  
69          nameToType = new HashMap<String, Integer>();
70          nameToType.put("ARRAY", Types.ARRAY); //$NON-NLS-1$
71          nameToType.put("BIGINT", Types.BIGINT); //$NON-NLS-1$
72          nameToType.put("BINARY", Types.BINARY); //$NON-NLS-1$
73          nameToType.put("BIT", Types.BIT); //$NON-NLS-1$
74          nameToType.put("BLOB", Types.BLOB); //$NON-NLS-1$
75          nameToType.put("BOOLEAN", Types.BOOLEAN); //$NON-NLS-1$
76          nameToType.put("CHAR", Types.CHAR); //$NON-NLS-1$
77          nameToType.put("CLOB", Types.CLOB); //$NON-NLS-1$
78          nameToType.put("DATALINK", Types.DATALINK); //$NON-NLS-1$
79          nameToType.put("DATE", Types.DATE); //$NON-NLS-1$
80          nameToType.put("DECIMAL", Types.DECIMAL); //$NON-NLS-1$
81          nameToType.put("DISTINCT", Types.DISTINCT); //$NON-NLS-1$
82          nameToType.put("DOUBLE", Types.DOUBLE); //$NON-NLS-1$
83          nameToType.put("FLOAT", Types.FLOAT); //$NON-NLS-1$
84          nameToType.put("INTEGER", Types.INTEGER); //$NON-NLS-1$
85          nameToType.put("JAVA_OBJECT", Types.JAVA_OBJECT); //$NON-NLS-1$
86          nameToType.put("LONGVARBINARY", Types.LONGVARBINARY); //$NON-NLS-1$
87          nameToType.put("LONGVARCHAR", Types.LONGVARCHAR); //$NON-NLS-1$
88          nameToType.put("NCHAR", Types.NCHAR); //$NON-NLS-1$
89          nameToType.put("NCLOB", Types.NCLOB); //$NON-NLS-1$
90          nameToType.put("NVARCHAR", Types.NVARCHAR); //$NON-NLS-1$
91          nameToType.put("LONGNVARCHAR", Types.LONGNVARCHAR); //$NON-NLS-1$
92          nameToType.put("NULL", Types.NULL); //$NON-NLS-1$
93          nameToType.put("NUMERIC", Types.NUMERIC); //$NON-NLS-1$
94          nameToType.put("OTHER", Types.OTHER); //$NON-NLS-1$
95          nameToType.put("REAL", Types.REAL); //$NON-NLS-1$
96          nameToType.put("REF", Types.REF); //$NON-NLS-1$
97          nameToType.put("SMALLINT", Types.SMALLINT); //$NON-NLS-1$
98          nameToType.put("STRUCT", Types.STRUCT); //$NON-NLS-1$
99          nameToType.put("TIME", Types.TIME); //$NON-NLS-1$
100         nameToType.put("TIMESTAMP", Types.TIMESTAMP); //$NON-NLS-1$
101         nameToType.put("TINYINT", Types.TINYINT); //$NON-NLS-1$
102         nameToType.put("VARBINARY", Types.VARBINARY); //$NON-NLS-1$
103         nameToType.put("VARCHAR", Types.VARCHAR); //$NON-NLS-1$
104     }
105 
106     /**
107      * Utility Class - no instances
108      */
109     private JdbcTypeNameTranslator() {
110         super();
111     }
112 
113     /**
114      * Translates from a java.sql.Types values to the proper iBATIS string
115      * representation of the type.
116      * 
117      * @param jdbcType
118      *            a value from java.sql.Types
119      * @return the iBATIS String representation of a JDBC type
120      */
121     public static String getJdbcTypeName(int jdbcType) {
122         String answer = typeToName.get(jdbcType);
123         if (answer == null) {
124             answer = "OTHER"; //$NON-NLS-1$
125         }
126 
127         return answer;
128     }
129 
130     /**
131      * Translates from the string representation of the type to the
132      * java.sql.Types value.
133      * 
134      * @param jdbcTypeName
135      *            the iBATIS String representation of a JDBC type
136      * @return a value from java.sql.Types
137      */
138     public static int getJdbcType(String jdbcTypeName) {
139         Integer answer = nameToType.get(jdbcTypeName);
140         if (answer == null) {
141             answer = Types.OTHER;
142         }
143 
144         return answer;
145     }
146 }