1:
31: package ;
32:
33: import ;
34: import ;
35: import ;
36: import ;
37: import ;
38: import ;
39: import ;
40: import ;
41: import ;
42:
43: import ;
44:
45:
49: public class TypeMapper
50: {
51: private static final Class byteArrayClass = byte[].class;
52:
53: private static Class mapSQLType (final int t)
54: {
55: switch (t)
56: {
57: case Types.ARRAY:
58: return Object[].class;
59: case Types.BIGINT:
60: return Long.class;
61: case Types.BINARY:
62: return byteArrayClass;
63: case Types.BIT:
64: return Boolean.class;
65: case Types.BLOB:
66: return Blob.class;
67: case 16:
68: return Boolean.class;
69: case Types.CHAR:
70: return String.class;
71: case Types.CLOB:
72: return Clob.class;
73: case 70:
74: return Object.class;
75: case Types.DATE:
76: return java.sql.Date.class;
77: case Types.DECIMAL:
78: return java.math.BigDecimal.class;
79: case Types.DISTINCT:
80: return Object.class;
81: case Types.DOUBLE:
82: return Double.class;
83: case Types.FLOAT:
84: return Double.class;
85: case Types.INTEGER:
86: return Integer.class;
87: case Types.JAVA_OBJECT:
88: return Object.class;
89: case Types.LONGVARBINARY:
90: return byteArrayClass;
91: case Types.LONGVARCHAR:
92: return String.class;
93: case Types.NULL:
94: return Object.class;
95: case Types.NUMERIC:
96: return java.math.BigDecimal.class;
97: case Types.OTHER:
98: return Object.class;
99: case Types.REAL:
100: return Float.class;
101: case Types.REF:
102: return Ref.class;
103: case Types.SMALLINT:
104: return Short.class;
105: case Types.STRUCT:
106: return Struct.class;
107: case Types.TIME:
108: return Time.class;
109: case Types.TIMESTAMP:
110: return Timestamp.class;
111: case Types.TINYINT:
112: return Byte.class;
113: case Types.VARBINARY:
114: return byteArrayClass;
115: case Types.VARCHAR:
116: return String.class;
117: default:
118: return Object.class;
119: }
120: }
121:
122: public static Class[] mapTypes (final ResultSetMetaData rsmd)
123: {
124: final Class[] types;
125: try
126: {
127: types = new Class[rsmd.getColumnCount()];
128: }
129: catch (SQLException sqle)
130: {
131: return null;
132: }
133:
134: final ClassLoader cl = ObjectUtilities.getClassLoader(TypeMapper.class);
135: for (int i = 0; i < types.length; i++)
136: {
137: try
138: {
139: try
140: {
141: final String tn = rsmd.getColumnClassName(i + 1);
142: types[i] = cl.loadClass(tn);
143: }
144: catch (Exception oops)
145: {
146: final int colType = rsmd.getColumnType(i + 1);
147: types[i] = mapSQLType(colType);
148: }
149: }
150: catch (Exception e)
151: {
152: types[i] = Object.class;
153: }
154: }
155:
156: return types;
157: }
158:
159: private TypeMapper ()
160: {
161: }
162: }