1 23 24 package org.objectweb.cjdbc.driver.protocol; 25 26 import java.io.IOException ; 27 import java.sql.Types ; 28 29 import org.objectweb.cjdbc.common.stream.CJDBCInputStream; 30 import org.objectweb.cjdbc.common.stream.CJDBCOutputStream; 31 32 47 public final class TypeTag 48 { 49 private String internalString; 50 51 52 53 private static final String TPREFIX = "T-"; 54 55 56 63 64 65 66 67 public static final TypeTag TYPE_ERROR = new TypeTag( 68 TPREFIX 69 + "Type not found or unsupported"); 70 71 public static final TypeTag STRING = new TypeTag(TPREFIX + "String"); 72 73 public static final TypeTag BIGDECIMAL = new TypeTag(TPREFIX 74 + "BigDecimal"); 75 76 public static final TypeTag BOOLEAN = new TypeTag(TPREFIX 77 + "Boolean"); 78 79 public static final TypeTag INTEGER = new TypeTag(TPREFIX 80 + "Integer"); 81 82 public static final TypeTag LONG = new TypeTag(TPREFIX + "Long"); 83 84 public static final TypeTag FLOAT = new TypeTag(TPREFIX + "Float"); 85 86 public static final TypeTag DOUBLE = new TypeTag(TPREFIX + "Double"); 87 88 public static final TypeTag BYTE_ARRAY = new TypeTag(TPREFIX + "Byte[]"); 89 90 public static final TypeTag SQL_DATE = new TypeTag(TPREFIX 91 + "SqlDate"); 92 93 public static final TypeTag SQL_TIME = new TypeTag(TPREFIX 94 + "SqlTime"); 95 96 public static final TypeTag SQL_TIMESTAMP = new TypeTag(TPREFIX 97 + "SqlTimestamp"); 98 99 public static final TypeTag CLOB = new TypeTag(TPREFIX + "Clob"); 100 101 public static final TypeTag BLOB = new TypeTag(TPREFIX + "Blob"); 102 103 104 105 106 public static final TypeTag RESULTSET = new TypeTag(TPREFIX 107 + "ResultSet"); 108 109 public static final TypeTag NULL_RESULTSET = new TypeTag("null ResultSet"); 110 111 112 public static final TypeTag FIELD = new TypeTag(TPREFIX + "Field"); 113 114 public static final TypeTag COL_TYPES = new TypeTag(TPREFIX 115 + "Column types"); 116 117 public static final TypeTag ROW = new TypeTag(TPREFIX + "Row"); 118 119 120 121 public static final TypeTag NOT_EXCEPTION = new TypeTag("OK"); 122 123 124 public static final TypeTag EXCEPTION = new TypeTag(TPREFIX 125 + "Exception"); 126 127 public static final TypeTag BACKEND_EXCEPTION = new TypeTag(TPREFIX 128 + "BackendException"); 129 130 public static final TypeTag CORE_EXCEPTION = new TypeTag(TPREFIX 131 + "CoreException"); 132 133 134 public static final TypeTag CONTROLLER_READY = new TypeTag("Ready"); 135 136 private TypeTag(String init) 137 { 138 this.internalString = init; 139 } 140 141 147 public TypeTag(CJDBCInputStream in) throws IOException 148 { 149 this(in.readUTF()); 150 } 151 152 158 public void sendToStream(CJDBCOutputStream out) throws IOException 159 { 160 out.writeUTF(this.internalString); 161 } 162 163 171 public boolean equals(Object o) 172 { 173 System.err 174 .println("internal bug: TypeTag was compared with something else at:"); 175 (new Throwable ()).printStackTrace(); 176 return false; 177 } 178 179 185 public boolean equals(TypeTag b) 186 { 187 192 196 return this.internalString.equals(b.internalString); 197 } 198 199 204 public String toSring() 205 { 206 return internalString; 207 } 208 209 219 220 public static TypeTag jdbcToJavaObjectType(int jdbcType) 221 { 222 switch (jdbcType) 223 { 224 225 case Types.CHAR : 226 case Types.VARCHAR : 227 case Types.LONGVARCHAR : 228 return TypeTag.STRING; 229 230 case Types.NUMERIC : 231 case Types.DECIMAL : 232 return TypeTag.BIGDECIMAL; 233 234 case Types.BIT : 235 return TypeTag.BOOLEAN; 236 237 case Types.TINYINT : 238 case Types.SMALLINT : 239 case Types.INTEGER : 240 return TypeTag.INTEGER; 241 242 case Types.BIGINT : 243 return TypeTag.LONG; 244 245 case Types.REAL : 246 return TypeTag.FLOAT; 247 248 case Types.FLOAT : 249 case Types.DOUBLE : 250 return TypeTag.DOUBLE; 251 252 case Types.BINARY : 253 case Types.VARBINARY : 254 case Types.LONGVARBINARY : 255 return TypeTag.BYTE_ARRAY; 256 257 case Types.DATE : 258 return TypeTag.SQL_DATE; 259 260 case Types.TIME : 261 return TypeTag.SQL_TIME; 262 263 case Types.TIMESTAMP : 264 return TypeTag.SQL_TIMESTAMP; 265 266 268 case Types.CLOB : 269 return TypeTag.CLOB; 270 271 case Types.BLOB : 272 return TypeTag.BLOB; 273 274 276 278 default : 279 return TypeTag.TYPE_ERROR; 280 } 281 } 282 } 283 | Popular Tags |