001: /*
002: * Copyright 2004 Clinton Begin
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package com.ibatis.sqlmap.engine.type;
017:
018: import java.sql.Types;
019: import java.util.HashMap;
020: import java.util.Map;
021:
022: /**
023: * Singleton
024: */
025: public class JdbcTypeRegistry {
026:
027: /**
028: * Value for the unknown type
029: */
030: public static final int UNKNOWN_TYPE = -99999999;
031:
032: private static final Map TYPE_MAP = new HashMap();
033:
034: /**
035: * Value for a JDBC 3.o datalink type
036: */
037: public final static int JDBC_30_DATALINK = 70;
038:
039: /**
040: * Value for a JDBC 3.o boolean type
041: */
042: public final static int JDBC_30_BOOLEAN = 16;
043:
044: static {
045: initializeTypes();
046: }
047:
048: private JdbcTypeRegistry() {
049: }
050:
051: private static void setType(String name, int value) {
052: TYPE_MAP.put(name, new Integer(value));
053: }
054:
055: /**
056: * Looks up a type by name, and returns it's int value (from java.sql.Types)
057: *
058: * @param name - the type name
059: *
060: * @return - the int value (from java.sql.Types)
061: */
062: public static int getType(String name) {
063: if (name == null)
064: return UNKNOWN_TYPE;
065: Integer i = (Integer) TYPE_MAP.get(name);
066: if (i != null) {
067: return i.intValue();
068: } else {
069: return UNKNOWN_TYPE;
070: }
071: }
072:
073: private static void initializeTypes() {
074: setType("ARRAY", Types.ARRAY);
075: setType("BIGINT", Types.BIGINT);
076: setType("BINARY", Types.BINARY);
077: setType("BIT", Types.BIT);
078: setType("BLOB", Types.BLOB);
079: setType("BOOLEAN", JDBC_30_BOOLEAN);
080: setType("CHAR", Types.CHAR);
081: setType("CLOB", Types.CLOB);
082: setType("DATALINK", JDBC_30_DATALINK);
083: setType("DATE", Types.DATE);
084: setType("DECIMAL", Types.DECIMAL);
085: setType("DISTINCT", Types.DISTINCT);
086: setType("DOUBLE", Types.DOUBLE);
087: setType("FLOAT", Types.FLOAT);
088: setType("INTEGER", Types.INTEGER);
089: setType("JAVA_OBJECT", Types.JAVA_OBJECT);
090: setType("LONGVARBINARY", Types.LONGVARBINARY);
091: setType("LONGVARCHAR", Types.LONGVARCHAR);
092: setType("NULL", Types.NULL);
093: setType("NUMERIC", Types.NUMERIC);
094: setType("OTHER", Types.OTHER);
095: setType("REAL", Types.REAL);
096: setType("REF", Types.REF);
097: setType("SMALLINT", Types.SMALLINT);
098: setType("STRUCT", Types.STRUCT);
099: setType("TIME", Types.TIME);
100: setType("TIMESTAMP", Types.TIMESTAMP);
101: setType("TINYINT", Types.TINYINT);
102: setType("VARBINARY", Types.VARBINARY);
103: setType("VARCHAR", Types.VARCHAR);
104:
105: setType("CH", Types.CHAR);
106: setType("VC", Types.VARCHAR);
107:
108: setType("DT", Types.DATE);
109: setType("TM", Types.TIME);
110: setType("TS", Types.TIMESTAMP);
111:
112: setType("NM", Types.NUMERIC);
113: setType("II", Types.INTEGER);
114: setType("BI", Types.BIGINT);
115: setType("SI", Types.SMALLINT);
116: setType("TI", Types.TINYINT);
117:
118: setType("DC", Types.DECIMAL);
119: setType("DB", Types.DOUBLE);
120: setType("FL", Types.FLOAT);
121:
122: setType("ORACLECURSOR", -10);
123:
124: }
125:
126: }
|