1 package org.apache.torque.engine.database.model;
2
3 /* ====================================================================
4 * The Apache Software License, Version 1.1
5 *
6 * Copyright (c) 2001 The Apache Software Foundation. All rights
7 * reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * 2. Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in
18 * the documentation and/or other materials provided with the
19 * distribution.
20 *
21 * 3. The end-user documentation included with the redistribution,
22 * if any, must include the following acknowledgment:
23 * "This product includes software developed by the
24 * Apache Software Foundation (http://www.apache.org/)."
25 * Alternately, this acknowledgment may appear in the software itself,
26 * if and wherever such third-party acknowledgments normally appear.
27 *
28 * 4. The names "Apache" and "Apache Software Foundation" and
29 * "Apache Turbine" must not be used to endorse or promote products
30 * derived from this software without prior written permission. For
31 * written permission, please contact apache@apache.org.
32 *
33 * 5. Products derived from this software may not be called "Apache",
34 * "Apache Turbine", nor may "Apache" appear in their name, without
35 * prior written permission of the Apache Software Foundation.
36 *
37 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48 * SUCH DAMAGE.
49 * ====================================================================
50 *
51 * This software consists of voluntary contributions made by many
52 * individuals on behalf of the Apache Software Foundation. For more
53 * information on the Apache Software Foundation, please see
54 * <http://www.apache.org/>.
55 */
56
57 import java.util.Hashtable;
58 import java.sql.Types;
59
60 // I don't know if the peer system deals
61 // with the recommended mappings.
62 //
63 //import java.sql.Date;
64 //import java.sql.Time;
65 //import java.sql.Timestamp;
66
67 /***
68 * A class that maps JDBC types to their corresponding
69 * Java object types, and Java native types. Used
70 * by Column.java to perform object/native mappings.
71 *
72 * These are the official SQL type to Java type mappings.
73 * These don't quite correspond to the way the peer
74 * system works so we'll have to make some adjustments.
75 * <pre>
76 * -------------------------------------------------------
77 * SQL Type | Java Type | Peer Type
78 * -------------------------------------------------------
79 * CHAR | String | String
80 * VARCHAR | String | String
81 * LONGVARCHAR | String | String
82 * NUMERIC | java.math.BigDecimal | java.math.BigDecimal
83 * DECIMAL | java.math.BigDecimal | java.math.BigDecimal
84 * BIT | boolean OR Boolean | Boolean
85 * TINYINT | byte OR Byte | Byte
86 * SMALLINT | short OR Short | Short
87 * INTEGER | int OR Integer | Integer
88 * BIGINT | long OR Long | Long
89 * REAL | float OR Float | Float
90 * FLOAT | double OR Double | Double
91 * DOUBLE | double OR Double | Double
92 * BINARY | byte[] | ?
93 * VARBINARY | byte[] | ?
94 * LONGVARBINARY | byte[] | ?
95 * DATE | java.sql.Date | java.util.Date
96 * TIME | java.sql.Time | java.util.Date
97 * TIMESTAMP | java.sql.Timestamp | java.util.Date
98 *
99 * -------------------------------------------------------
100 * A couple variations have been introduced to cover cases
101 * that may arise, but are not covered above
102 * BOOLEANCHAR | boolean OR Boolean | String
103 * BOOLEANINT | boolean OR Boolean | Integer
104 * </pre>
105 *
106 * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
107 * @version $Id: TypeMap.java,v 1.2 2003/06/24 11:10:32 mpoeschl Exp $
108 */
109 public class TypeMap
110 {
111 public static final String CHAR = "CHAR";
112 public static final String VARCHAR = "VARCHAR";
113 public static final String LONGVARCHAR = "LONGVARCHAR";
114 public static final String CLOB = "CLOB";
115 public static final String NUMERIC = "NUMERIC";
116 public static final String DECIMAL = "DECIMAL";
117 public static final String BIT = "BIT";
118 public static final String TINYINT = "TINYINT";
119 public static final String SMALLINT = "SMALLINT";
120 public static final String INTEGER = "INTEGER";
121 public static final String BIGINT = "BIGINT";
122 public static final String REAL = "REAL";
123 public static final String FLOAT = "FLOAT";
124 public static final String DOUBLE = "DOUBLE";
125 public static final String BINARY = "BINARY";
126 public static final String VARBINARY = "VARBINARY";
127 public static final String LONGVARBINARY = "LONGVARBINARY";
128 public static final String BLOB = "BLOB";
129 public static final String DATE = "DATE";
130 public static final String TIME = "TIME";
131 public static final String TIMESTAMP = "TIMESTAMP";
132 public static final String BOOLEANCHAR = "BOOLEANCHAR";
133 public static final String BOOLEANINT = "BOOLEANINT";
134 private static final String[] TEXT_TYPES =
135 {
136 CHAR, VARCHAR, LONGVARCHAR, CLOB, DATE, TIME, TIMESTAMP, BOOLEANCHAR
137 };
138
139 public static final String CHAR_OBJECT_TYPE = "new String()";
140 public static final String VARCHAR_OBJECT_TYPE = "new String()";
141 public static final String LONGVARCHAR_OBJECT_TYPE = "new String()";
142 public static final String CLOB_OBJECT_TYPE = "new String()";
143 public static final String NUMERIC_OBJECT_TYPE = "new BigDecimal(0)";
144 public static final String DECIMAL_OBJECT_TYPE = "new BigDecimal(0)";
145 public static final String BIT_OBJECT_TYPE = "new Boolean(true)";
146 public static final String TINYINT_OBJECT_TYPE = "new Byte((byte)0)";
147 public static final String SMALLINT_OBJECT_TYPE = "new Short((short)0)";
148 public static final String INTEGER_OBJECT_TYPE = "new Integer(0)";
149 public static final String BIGINT_OBJECT_TYPE = "new Long(0)";
150 public static final String REAL_OBJECT_TYPE = "new Float(0)";
151 public static final String FLOAT_OBJECT_TYPE = "new Double(0)";
152 public static final String DOUBLE_OBJECT_TYPE = "new Double(0)";
153 public static final String BINARY_OBJECT_TYPE = "new Object()"; //?
154 public static final String VARBINARY_OBJECT_TYPE = "new Object()"; //?
155 public static final String LONGVARBINARY_OBJECT_TYPE = "new Object()"; //?
156 public static final String BLOB_OBJECT_TYPE = "new Object()"; //?
157 public static final String DATE_OBJECT_TYPE = "new Date()";
158 public static final String TIME_OBJECT_TYPE = "new Date()";
159 public static final String TIMESTAMP_OBJECT_TYPE = "new Date()";
160 public static final String BOOLEANCHAR_OBJECT_TYPE = "new String()";
161 public static final String BOOLEANINT_OBJECT_TYPE = "new Integer(0)";
162
163 public static final String CHAR_NATIVE_TYPE = "String";
164 public static final String VARCHAR_NATIVE_TYPE = "String";
165 public static final String LONGVARCHAR_NATIVE_TYPE = "String";
166 public static final String CLOB_NATIVE_TYPE = "String";
167 public static final String NUMERIC_NATIVE_TYPE = "BigDecimal";
168 public static final String DECIMAL_NATIVE_TYPE = "BigDecimal";
169 public static final String BIT_NATIVE_TYPE = "boolean";
170 public static final String TINYINT_NATIVE_TYPE = "byte";
171 public static final String SMALLINT_NATIVE_TYPE = "short";
172 public static final String INTEGER_NATIVE_TYPE = "int";
173 public static final String BIGINT_NATIVE_TYPE = "long";
174 public static final String REAL_NATIVE_TYPE = "float";
175 public static final String FLOAT_NATIVE_TYPE = "double";
176 public static final String DOUBLE_NATIVE_TYPE = "double";
177 public static final String BINARY_NATIVE_TYPE = "byte[]";
178 public static final String VARBINARY_NATIVE_TYPE = "byte[]";
179 public static final String LONGVARBINARY_NATIVE_TYPE = "byte[]";
180 public static final String BLOB_NATIVE_TYPE = "byte[]";
181 public static final String DATE_NATIVE_TYPE = "Date";
182 public static final String TIME_NATIVE_TYPE = "Date";
183 public static final String TIMESTAMP_NATIVE_TYPE = "Date";
184 public static final String BOOLEANCHAR_NATIVE_TYPE = "boolean";
185 public static final String BOOLEANINT_NATIVE_TYPE = "boolean";
186
187 public static final String BIT_NATIVE_OBJECT_TYPE = "Boolean";
188 public static final String TINYINT_NATIVE_OBJECT_TYPE = "Byte";
189 public static final String SMALLINT_NATIVE_OBJECT_TYPE = "Short";
190 public static final String INTEGER_NATIVE_OBJECT_TYPE = "Integer";
191 public static final String BIGINT_NATIVE_OBJECT_TYPE = "Long";
192 public static final String REAL_NATIVE_OBJECT_TYPE = "Float";
193 public static final String FLOAT_NATIVE_OBJECT_TYPE = "Double";
194 public static final String DOUBLE_NATIVE_OBJECT_TYPE = "Double";
195 public static final String BOOLEANCHAR_NATIVE_OBJECT_TYPE = "Boolean";
196 public static final String BOOLEANINT_NATIVE_OBJECT_TYPE = "Boolean";
197
198 public static final String CHAR_VILLAGE_METHOD = "asString()";
199 public static final String VARCHAR_VILLAGE_METHOD = "asString()";
200 public static final String LONGVARCHAR_VILLAGE_METHOD = "asString()";
201 public static final String CLOB_VILLAGE_METHOD = "asString()";
202 public static final String NUMERIC_VILLAGE_METHOD = "asBigDecimal()";
203 public static final String DECIMAL_VILLAGE_METHOD = "asBigDecimal()";
204 public static final String BIT_VILLAGE_METHOD = "asBoolean()";
205 public static final String TINYINT_VILLAGE_METHOD = "asByte()";
206 public static final String SMALLINT_VILLAGE_METHOD = "asShort()";
207 public static final String INTEGER_VILLAGE_METHOD = "asInt()";
208 public static final String BIGINT_VILLAGE_METHOD = "asLong()";
209 public static final String REAL_VILLAGE_METHOD = "asFloat()";
210 public static final String FLOAT_VILLAGE_METHOD = "asDouble()";
211 public static final String DOUBLE_VILLAGE_METHOD = "asDouble()";
212 public static final String BINARY_VILLAGE_METHOD = "asBytes()";
213 public static final String VARBINARY_VILLAGE_METHOD = "asBytes()";
214 public static final String LONGVARBINARY_VILLAGE_METHOD = "asBytes()";
215 public static final String BLOB_VILLAGE_METHOD = "asBytes()";
216 public static final String DATE_VILLAGE_METHOD = "asUtilDate()";
217 public static final String TIME_VILLAGE_METHOD = "asUtilDate()";
218 public static final String TIMESTAMP_VILLAGE_METHOD = "asUtilDate()";
219 public static final String BOOLEANCHAR_VILLAGE_METHOD = "asBoolean()";
220 public static final String BOOLEANINT_VILLAGE_METHOD = "asBoolean()";
221
222 public static final String BIT_VILLAGE_OBJECT_METHOD = "asBooleanObj()";
223 public static final String TINYINT_VILLAGE_OBJECT_METHOD = "asByteObj()";
224 public static final String SMALLINT_VILLAGE_OBJECT_METHOD = "asShortObj()";
225 public static final String INTEGER_VILLAGE_OBJECT_METHOD = "asIntegerObj()";
226 public static final String BIGINT_VILLAGE_OBJECT_METHOD = "asLongObj()";
227 public static final String REAL_VILLAGE_OBJECT_METHOD = "asFloatObj()";
228 public static final String FLOAT_VILLAGE_OBJECT_METHOD = "asDoubleObj()";
229 public static final String DOUBLE_VILLAGE_OBJECT_METHOD = "asDoubleObj()";
230 public static final String BOOLEANCHAR_VILLAGE_OBJECT_METHOD = "asBooleanObj()";
231 public static final String BOOLEANINT_VILLAGE_OBJECT_METHOD = "asBooleanObj()";
232
233 public static final String CHAR_PP_METHOD = "getString(ppKey)";
234 public static final String VARCHAR_PP_METHOD = "getString(ppKey)";
235 public static final String LONGVARCHAR_PP_METHOD = "getString(ppKey)";
236 public static final String NUMERIC_PP_METHOD = "getBigDecimal(ppKey)";
237 public static final String DECIMAL_PP_METHOD = "getBigDecimal(ppKey)";
238 public static final String BIT_PP_METHOD = "getBoolean(ppKey)";
239 public static final String TINYINT_PP_METHOD = "getByte(ppKey)";
240 public static final String SMALLINT_PP_METHOD = "getShort(ppKey)";
241 public static final String INTEGER_PP_METHOD = "getInt(ppKey)";
242 public static final String BIGINT_PP_METHOD = "getLong(ppKey)";
243 public static final String REAL_PP_METHOD = "getFloat(ppKey)";
244 public static final String FLOAT_PP_METHOD = "getDouble(ppKey)";
245 public static final String DOUBLE_PP_METHOD = "getDouble(ppKey)";
246 public static final String BINARY_PP_METHOD = "getBytes(ppKey)";
247 public static final String VARBINARY_PP_METHOD = "getBytes(ppKey)";
248 public static final String LONGVARBINARY_PP_METHOD = "getBytes(ppKey)";
249 public static final String DATE_PP_METHOD = "getDate(ppKey)";
250 public static final String TIME_PP_METHOD = "getDate(ppKey)";
251 public static final String TIMESTAMP_PP_METHOD = "getDate(ppKey)";
252 public static final String BOOLEANCHAR_PP_METHOD = "getBoolean(ppKey)";
253 public static final String BOOLEANINT_PP_METHOD = "getBoolean(ppKey)";
254
255 private static Hashtable jdbcToJavaObjectMap = null;
256 private static Hashtable jdbcToJavaNativeMap = null;
257 private static Hashtable jdbcToJavaNativeObjectMap = null;
258 private static Hashtable jdbcToVillageMethodMap = null;
259 private static Hashtable jdbcToVillageObjectMethodMap = null;
260 private static Hashtable jdbcToPPMethodMap = null;
261 private static Hashtable torqueTypeToJdbcTypeMap = null;
262 private static Hashtable jdbcToTorqueTypeMap = null;
263 private static boolean isInitialized = false;
264
265 /***
266 * Initializes the SQL to Java map so that it
267 * can be used by client code.
268 */
269 public synchronized static void initialize()
270 {
271 if (!isInitialized)
272 {
273 /*
274 * Create JDBC -> Java object mappings.
275 */
276
277 jdbcToJavaObjectMap = new Hashtable();
278
279 jdbcToJavaObjectMap.put(CHAR, CHAR_OBJECT_TYPE);
280 jdbcToJavaObjectMap.put(VARCHAR, VARCHAR_OBJECT_TYPE);
281 jdbcToJavaObjectMap.put(LONGVARCHAR, LONGVARCHAR_OBJECT_TYPE);
282 jdbcToJavaObjectMap.put(CLOB, CLOB_OBJECT_TYPE);
283 jdbcToJavaObjectMap.put(NUMERIC, NUMERIC_OBJECT_TYPE);
284 jdbcToJavaObjectMap.put(DECIMAL, DECIMAL_OBJECT_TYPE);
285 jdbcToJavaObjectMap.put(BIT, BIT_OBJECT_TYPE);
286 jdbcToJavaObjectMap.put(TINYINT, TINYINT_OBJECT_TYPE);
287 jdbcToJavaObjectMap.put(SMALLINT, SMALLINT_OBJECT_TYPE);
288 jdbcToJavaObjectMap.put(INTEGER, INTEGER_OBJECT_TYPE);
289 jdbcToJavaObjectMap.put(BIGINT, BIGINT_OBJECT_TYPE);
290 jdbcToJavaObjectMap.put(REAL, REAL_OBJECT_TYPE);
291 jdbcToJavaObjectMap.put(FLOAT, FLOAT_OBJECT_TYPE);
292 jdbcToJavaObjectMap.put(DOUBLE, DOUBLE_OBJECT_TYPE);
293 jdbcToJavaObjectMap.put(BINARY, BINARY_OBJECT_TYPE);
294 jdbcToJavaObjectMap.put(VARBINARY, VARBINARY_OBJECT_TYPE);
295 jdbcToJavaObjectMap.put(LONGVARBINARY, LONGVARBINARY_OBJECT_TYPE);
296 jdbcToJavaObjectMap.put(BLOB, BLOB_OBJECT_TYPE);
297 jdbcToJavaObjectMap.put(DATE, DATE_OBJECT_TYPE);
298 jdbcToJavaObjectMap.put(TIME, TIME_OBJECT_TYPE);
299 jdbcToJavaObjectMap.put(TIMESTAMP, TIMESTAMP_OBJECT_TYPE);
300 jdbcToJavaObjectMap.put(BOOLEANCHAR, BOOLEANCHAR_OBJECT_TYPE);
301 jdbcToJavaObjectMap.put(BOOLEANINT, BOOLEANINT_OBJECT_TYPE);
302
303 /*
304 * Create JDBC -> native Java type mappings.
305 */
306
307 jdbcToJavaNativeMap = new Hashtable();
308
309 jdbcToJavaNativeMap.put(CHAR, CHAR_NATIVE_TYPE);
310 jdbcToJavaNativeMap.put(VARCHAR, VARCHAR_NATIVE_TYPE);
311 jdbcToJavaNativeMap.put(LONGVARCHAR, LONGVARCHAR_NATIVE_TYPE);
312 jdbcToJavaNativeMap.put(CLOB, CLOB_NATIVE_TYPE);
313 jdbcToJavaNativeMap.put(NUMERIC, NUMERIC_NATIVE_TYPE);
314 jdbcToJavaNativeMap.put(DECIMAL, DECIMAL_NATIVE_TYPE);
315 jdbcToJavaNativeMap.put(BIT, BIT_NATIVE_TYPE);
316 jdbcToJavaNativeMap.put(TINYINT, TINYINT_NATIVE_TYPE);
317 jdbcToJavaNativeMap.put(SMALLINT, SMALLINT_NATIVE_TYPE);
318 jdbcToJavaNativeMap.put(INTEGER, INTEGER_NATIVE_TYPE);
319 jdbcToJavaNativeMap.put(BIGINT, BIGINT_NATIVE_TYPE);
320 jdbcToJavaNativeMap.put(REAL, REAL_NATIVE_TYPE);
321 jdbcToJavaNativeMap.put(FLOAT, FLOAT_NATIVE_TYPE);
322 jdbcToJavaNativeMap.put(DOUBLE, DOUBLE_NATIVE_TYPE);
323 jdbcToJavaNativeMap.put(BINARY, BINARY_NATIVE_TYPE);
324 jdbcToJavaNativeMap.put(VARBINARY, VARBINARY_NATIVE_TYPE);
325 jdbcToJavaNativeMap.put(LONGVARBINARY, LONGVARBINARY_NATIVE_TYPE);
326 jdbcToJavaNativeMap.put(BLOB, BLOB_NATIVE_TYPE);
327 jdbcToJavaNativeMap.put(DATE, DATE_NATIVE_TYPE);
328 jdbcToJavaNativeMap.put(TIME, TIME_NATIVE_TYPE);
329 jdbcToJavaNativeMap.put(TIMESTAMP, TIMESTAMP_NATIVE_TYPE);
330 jdbcToJavaNativeMap.put(BOOLEANCHAR, BOOLEANCHAR_NATIVE_TYPE);
331 jdbcToJavaNativeMap.put(BOOLEANINT, BOOLEANINT_NATIVE_TYPE);
332
333 jdbcToJavaNativeObjectMap = new Hashtable();
334 jdbcToJavaNativeObjectMap.put(BIT, BIT_NATIVE_OBJECT_TYPE);
335 jdbcToJavaNativeObjectMap.put(TINYINT, TINYINT_NATIVE_OBJECT_TYPE);
336 jdbcToJavaNativeObjectMap.put(SMALLINT, SMALLINT_NATIVE_OBJECT_TYPE);
337 jdbcToJavaNativeObjectMap.put(INTEGER, INTEGER_NATIVE_OBJECT_TYPE);
338 jdbcToJavaNativeObjectMap.put(BIGINT, BIGINT_NATIVE_OBJECT_TYPE);
339 jdbcToJavaNativeObjectMap.put(REAL, REAL_NATIVE_OBJECT_TYPE);
340 jdbcToJavaNativeObjectMap.put(FLOAT, FLOAT_NATIVE_OBJECT_TYPE);
341 jdbcToJavaNativeObjectMap.put(DOUBLE, DOUBLE_NATIVE_OBJECT_TYPE);
342 jdbcToJavaNativeObjectMap.put(BOOLEANCHAR,
343 BOOLEANCHAR_NATIVE_OBJECT_TYPE);
344 jdbcToJavaNativeObjectMap.put(BOOLEANINT,
345 BOOLEANINT_NATIVE_OBJECT_TYPE);
346
347 /*
348 * Create JDBC -> Village asX() mappings.
349 */
350
351 jdbcToVillageMethodMap = new Hashtable();
352
353 jdbcToVillageMethodMap.put(CHAR, CHAR_VILLAGE_METHOD);
354 jdbcToVillageMethodMap.put(VARCHAR, VARCHAR_VILLAGE_METHOD);
355 jdbcToVillageMethodMap.put(LONGVARCHAR, LONGVARCHAR_VILLAGE_METHOD);
356 jdbcToVillageMethodMap.put(CLOB, CLOB_VILLAGE_METHOD);
357 jdbcToVillageMethodMap.put(NUMERIC, NUMERIC_VILLAGE_METHOD);
358 jdbcToVillageMethodMap.put(DECIMAL, DECIMAL_VILLAGE_METHOD);
359 jdbcToVillageMethodMap.put(BIT, BIT_VILLAGE_METHOD);
360 jdbcToVillageMethodMap.put(TINYINT, TINYINT_VILLAGE_METHOD);
361 jdbcToVillageMethodMap.put(SMALLINT, SMALLINT_VILLAGE_METHOD);
362 jdbcToVillageMethodMap.put(INTEGER, INTEGER_VILLAGE_METHOD);
363 jdbcToVillageMethodMap.put(BIGINT, BIGINT_VILLAGE_METHOD);
364 jdbcToVillageMethodMap.put(REAL, REAL_VILLAGE_METHOD);
365 jdbcToVillageMethodMap.put(FLOAT, FLOAT_VILLAGE_METHOD);
366 jdbcToVillageMethodMap.put(DOUBLE, DOUBLE_VILLAGE_METHOD);
367 jdbcToVillageMethodMap.put(BINARY, BINARY_VILLAGE_METHOD);
368 jdbcToVillageMethodMap.put(VARBINARY, VARBINARY_VILLAGE_METHOD);
369 jdbcToVillageMethodMap.put(LONGVARBINARY, LONGVARBINARY_VILLAGE_METHOD);
370 jdbcToVillageMethodMap.put(BLOB, BLOB_VILLAGE_METHOD);
371 jdbcToVillageMethodMap.put(DATE, DATE_VILLAGE_METHOD);
372 jdbcToVillageMethodMap.put(TIME, TIME_VILLAGE_METHOD);
373 jdbcToVillageMethodMap.put(TIMESTAMP, TIMESTAMP_VILLAGE_METHOD);
374 jdbcToVillageMethodMap.put(BOOLEANCHAR, BOOLEANCHAR_VILLAGE_METHOD);
375 jdbcToVillageMethodMap.put(BOOLEANINT, BOOLEANINT_VILLAGE_METHOD);
376
377
378 jdbcToVillageObjectMethodMap = new Hashtable();
379 jdbcToVillageObjectMethodMap.put(BIT, BIT_VILLAGE_OBJECT_METHOD);
380 jdbcToVillageObjectMethodMap.put(TINYINT,
381 TINYINT_VILLAGE_OBJECT_METHOD);
382 jdbcToVillageObjectMethodMap.put(SMALLINT,
383 SMALLINT_VILLAGE_OBJECT_METHOD);
384 jdbcToVillageObjectMethodMap.put(INTEGER,
385 INTEGER_VILLAGE_OBJECT_METHOD);
386 jdbcToVillageObjectMethodMap.put(BIGINT,
387 BIGINT_VILLAGE_OBJECT_METHOD);
388 jdbcToVillageObjectMethodMap.put(REAL, REAL_VILLAGE_OBJECT_METHOD);
389 jdbcToVillageObjectMethodMap.put(FLOAT, FLOAT_VILLAGE_OBJECT_METHOD);
390 jdbcToVillageObjectMethodMap.put(DOUBLE,
391 DOUBLE_VILLAGE_OBJECT_METHOD);
392 jdbcToVillageObjectMethodMap.put(BOOLEANCHAR,
393 BOOLEANCHAR_VILLAGE_OBJECT_METHOD);
394 jdbcToVillageObjectMethodMap.put(BOOLEANINT,
395 BOOLEANINT_VILLAGE_OBJECT_METHOD);
396
397 /*
398 * Create JDBC -> ParameterParser getX() mappings.
399 */
400
401 jdbcToPPMethodMap = new Hashtable();
402
403 jdbcToPPMethodMap.put(CHAR, CHAR_PP_METHOD);
404 jdbcToPPMethodMap.put(VARCHAR, VARCHAR_PP_METHOD);
405 jdbcToPPMethodMap.put(LONGVARCHAR, LONGVARCHAR_PP_METHOD);
406 jdbcToPPMethodMap.put(NUMERIC, NUMERIC_PP_METHOD);
407 jdbcToPPMethodMap.put(DECIMAL, DECIMAL_PP_METHOD);
408 jdbcToPPMethodMap.put(BIT, BIT_PP_METHOD);
409 jdbcToPPMethodMap.put(TINYINT, TINYINT_PP_METHOD);
410 jdbcToPPMethodMap.put(SMALLINT, SMALLINT_PP_METHOD);
411 jdbcToPPMethodMap.put(INTEGER, INTEGER_PP_METHOD);
412 jdbcToPPMethodMap.put(BIGINT, BIGINT_PP_METHOD);
413 jdbcToPPMethodMap.put(REAL, REAL_PP_METHOD);
414 jdbcToPPMethodMap.put(FLOAT, FLOAT_PP_METHOD);
415 jdbcToPPMethodMap.put(DOUBLE, DOUBLE_PP_METHOD);
416 jdbcToPPMethodMap.put(BINARY, BINARY_PP_METHOD);
417 jdbcToPPMethodMap.put(VARBINARY, VARBINARY_PP_METHOD);
418 jdbcToPPMethodMap.put(LONGVARBINARY, LONGVARBINARY_PP_METHOD);
419 jdbcToPPMethodMap.put(DATE, DATE_PP_METHOD);
420 jdbcToPPMethodMap.put(TIME, TIME_PP_METHOD);
421 jdbcToPPMethodMap.put(TIMESTAMP, TIMESTAMP_PP_METHOD);
422 jdbcToPPMethodMap.put(BOOLEANCHAR, BOOLEANCHAR_PP_METHOD);
423 jdbcToPPMethodMap.put(BOOLEANINT, BOOLEANINT_PP_METHOD);
424
425 /*
426 * Create JDBC -> Java object mappings.
427 */
428
429 torqueTypeToJdbcTypeMap = new Hashtable();
430
431 torqueTypeToJdbcTypeMap.put(CHAR, CHAR);
432 torqueTypeToJdbcTypeMap.put(VARCHAR, VARCHAR);
433 torqueTypeToJdbcTypeMap.put(LONGVARCHAR, LONGVARCHAR);
434 torqueTypeToJdbcTypeMap.put(CLOB, CLOB);
435 torqueTypeToJdbcTypeMap.put(NUMERIC, NUMERIC);
436 torqueTypeToJdbcTypeMap.put(DECIMAL, DECIMAL);
437 torqueTypeToJdbcTypeMap.put(BIT, BIT);
438 torqueTypeToJdbcTypeMap.put(TINYINT, TINYINT);
439 torqueTypeToJdbcTypeMap.put(SMALLINT, SMALLINT);
440 torqueTypeToJdbcTypeMap.put(INTEGER, INTEGER);
441 torqueTypeToJdbcTypeMap.put(BIGINT, BIGINT);
442 torqueTypeToJdbcTypeMap.put(REAL, REAL);
443 torqueTypeToJdbcTypeMap.put(FLOAT, FLOAT);
444 torqueTypeToJdbcTypeMap.put(DOUBLE, DOUBLE);
445 torqueTypeToJdbcTypeMap.put(BINARY, BINARY);
446 torqueTypeToJdbcTypeMap.put(VARBINARY, VARBINARY);
447 torqueTypeToJdbcTypeMap.put(LONGVARBINARY, LONGVARBINARY);
448 torqueTypeToJdbcTypeMap.put(BLOB, BLOB);
449 torqueTypeToJdbcTypeMap.put(DATE, DATE);
450 torqueTypeToJdbcTypeMap.put(TIME, TIME);
451 torqueTypeToJdbcTypeMap.put(TIMESTAMP, TIMESTAMP);
452 torqueTypeToJdbcTypeMap.put(BOOLEANCHAR, CHAR);
453 torqueTypeToJdbcTypeMap.put(BOOLEANINT, INTEGER);
454
455 /*
456 * Create JDBC type code to torque type map.
457 */
458 jdbcToTorqueTypeMap = new Hashtable();
459
460 jdbcToTorqueTypeMap.put(new Integer(Types.CHAR), CHAR);
461 jdbcToTorqueTypeMap.put(new Integer(Types.VARCHAR), VARCHAR);
462 jdbcToTorqueTypeMap.put(new Integer(Types.LONGVARCHAR), LONGVARCHAR);
463 jdbcToTorqueTypeMap.put(new Integer(Types.CLOB), CLOB);
464 jdbcToTorqueTypeMap.put(new Integer(Types.NUMERIC), NUMERIC);
465 jdbcToTorqueTypeMap.put(new Integer(Types.DECIMAL), DECIMAL);
466 jdbcToTorqueTypeMap.put(new Integer(Types.BIT), BIT);
467 jdbcToTorqueTypeMap.put(new Integer(Types.TINYINT), TINYINT);
468 jdbcToTorqueTypeMap.put(new Integer(Types.SMALLINT), SMALLINT);
469 jdbcToTorqueTypeMap.put(new Integer(Types.INTEGER), INTEGER);
470 jdbcToTorqueTypeMap.put(new Integer(Types.BIGINT), BIGINT);
471 jdbcToTorqueTypeMap.put(new Integer(Types.REAL), REAL);
472 jdbcToTorqueTypeMap.put(new Integer(Types.FLOAT), FLOAT);
473 jdbcToTorqueTypeMap.put(new Integer(Types.DOUBLE), DOUBLE);
474 jdbcToTorqueTypeMap.put(new Integer(Types.BINARY), BINARY);
475 jdbcToTorqueTypeMap.put(new Integer(Types.VARBINARY), VARBINARY);
476 jdbcToTorqueTypeMap.put(new Integer(Types.LONGVARBINARY), LONGVARBINARY);
477 jdbcToTorqueTypeMap.put(new Integer(Types.BLOB), BLOB);
478 jdbcToTorqueTypeMap.put(new Integer(Types.DATE), DATE);
479 jdbcToTorqueTypeMap.put(new Integer(Types.TIME), TIME);
480 jdbcToTorqueTypeMap.put(new Integer(Types.TIMESTAMP), TIMESTAMP);
481
482 isInitialized = true;
483 }
484 }
485
486 /***
487 * Report whether this object has been initialized.
488 *
489 * @return true if this object has been initialized
490 */
491 public static boolean isInitialized()
492 {
493 return isInitialized;
494 }
495
496 /***
497 * Return a Java object which corresponds to the
498 * JDBC type provided. Use in MapBuilder generation.
499 *
500 * @param jdbcType the JDBC type
501 * @return name of the Object
502 */
503 public static String getJavaObject(String jdbcType)
504 {
505 // Make sure the we are initialized.
506 if (!isInitialized)
507 {
508 initialize();
509 }
510 return (String) jdbcToJavaObjectMap.get(jdbcType);
511 }
512
513 /***
514 * Return native java type which corresponds to the
515 * JDBC type provided. Use in the base object class generation.
516 *
517 * @param jdbcType the JDBC type
518 * @return name of the native java type
519 */
520 public static String getJavaNative(String jdbcType)
521 {
522 // Make sure the we are initialized.
523 if (!isInitialized)
524 {
525 initialize();
526 }
527 return (String) jdbcToJavaNativeMap.get(jdbcType);
528 }
529
530 /***
531 * Return native java type which corresponds to the
532 * JDBC type provided. Use in the base object class generation.
533 *
534 * @param jdbcType the JDBC type
535 * @return name of the Object
536 */
537 public static String getJavaNativeObject(String jdbcType)
538 {
539 // Make sure the we are initialized.
540 if (!isInitialized)
541 {
542 initialize();
543 }
544 String s = (String) jdbcToJavaNativeObjectMap.get(jdbcType);
545 if (s == null)
546 {
547 s = (String) jdbcToJavaNativeMap.get(jdbcType);
548 }
549 return s;
550 }
551
552 /***
553 * Return Village asX() method which corresponds to the
554 * JDBC type provided. Use in the Peer class generation.
555 *
556 * @param jdbcType the JDBC type
557 * @return name of the Village asX() method
558 */
559 public static String getVillageMethod(String jdbcType)
560 {
561 // Make sure the we are initialized.
562 if (!isInitialized)
563 {
564 initialize();
565 }
566 return (String) jdbcToVillageMethodMap.get(jdbcType);
567 }
568
569 /***
570 * Return Village asX() method which corresponds to the
571 * JDBC type provided. Use in the Peer class generation.
572 *
573 * @param jdbcType the JDBC type
574 * @return name of the Village asX() method
575 */
576 public static String getVillageObjectMethod(String jdbcType)
577 {
578 // Make sure the we are initialized.
579 if (!isInitialized)
580 {
581 initialize();
582 }
583 String s = (String) jdbcToVillageObjectMethodMap.get(jdbcType);
584 if (s == null)
585 {
586 s = (String) jdbcToVillageMethodMap.get(jdbcType);
587 }
588 return s;
589 }
590
591 /***
592 * Return ParameterParser getX() method which corresponds to the
593 * JDBC type provided. Use in the Object class generation.
594 *
595 * @param jdbcType the JDBC type
596 * @return name of the ParameterParser getX() method
597 */
598 public static String getPPMethod(String jdbcType)
599 {
600 // Make sure the we are initialized.
601 if (!isInitialized)
602 {
603 initialize();
604 }
605 return (String) jdbcToPPMethodMap.get(jdbcType);
606 }
607
608 /***
609 * Returns the correct jdbc type for torque added types
610 *
611 * @param type the torque added type
612 * @return name of the the correct jdbc type
613 */
614 public static String getJdbcType(String type)
615 {
616 // Make sure the we are initialized.
617 if (!isInitialized)
618 {
619 initialize();
620 }
621 return (String) torqueTypeToJdbcTypeMap.get(type);
622 }
623
624 /***
625 * Returns Torque type constant corresponding to JDBC type code.
626 * Used but Torque JDBC task.
627 *
628 * @param sqlType the SQL type
629 * @return Torque type constant
630 */
631 public static String getTorqueType(Integer sqlType)
632 {
633 // Make sure the we are initialized.
634 if (!isInitialized)
635 {
636 initialize();
637 }
638 return (String) jdbcToTorqueTypeMap.get(sqlType);
639 }
640
641 /***
642 * Returns true if the type is boolean in the java
643 * object and a numeric (1 or 0) in the db.
644 *
645 * @param type The type to check.
646 * @return true if the type is BOOLEANINT
647 */
648 public static boolean isBooleanInt(String type)
649 {
650 return BOOLEANINT.equals(type);
651 }
652
653 /***
654 * Returns true if the type is boolean in the
655 * java object and a String "Y" or "N" in the db.
656 *
657 * @param type The type to check.
658 * @return true if the type is BOOLEANCHAR
659 */
660 public static boolean isBooleanChar(String type)
661 {
662 return BOOLEANCHAR.equals(type);
663 }
664
665 /***
666 * Returns true if values for the type need to be quoted.
667 *
668 * @param type The type to check.
669 * @return true if values for the type need to be quoted.
670 */
671 public static final boolean isTextType(String type)
672 {
673 for (int i = 0; i < TEXT_TYPES.length; i++)
674 {
675 if (type.equals(TEXT_TYPES[i]))
676 {
677 return true;
678 }
679 }
680
681 // If we get this far, there were no matches.
682 return false;
683 }
684 }
This page was automatically generated by Maven