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