1 package com.daffodilwoods.database.utility; 2 3 import com.daffodilwoods.daffodildb.server.datasystem.interfaces.Datatype; 4 import com.daffodilwoods.database.resource.*; 5 import java.sql.Types ; 6 import java.sql.SQLException ; 7 import com.daffodilwoods.database.general.IllegalColumnPropertyException; 8 import java.util.HashMap ; 9 public class TypeConverter 10 { 11 private static HashMap databaseTypesMap = new HashMap (35); 12 13 static { 14 databaseTypesMap.put("CHARACTER",new Integer ( Datatype.CHARACTER)); 15 databaseTypesMap.put("INTEGER",new Integer (Datatype.INTEGER)); 16 databaseTypesMap.put("LONG",new Integer ( Datatype.LONG)); 17 databaseTypesMap.put("SHORT",new Integer (Datatype.SHORT)); 18 databaseTypesMap.put("BOOLEAN",new Integer (Datatype.BOOLEAN)); 19 databaseTypesMap.put("FLOAT",new Integer (Datatype.FLOAT)); 20 databaseTypesMap.put("DOUBLE",new Integer (Datatype.DOUBLE)); 21 databaseTypesMap.put("DATE",new Integer (Datatype.DATE)); 22 databaseTypesMap.put("MODULE",new Integer (Datatype.MODULE)); 23 databaseTypesMap.put("SUM",new Integer (Datatype.SUM)); 24 databaseTypesMap.put("ARRAY",new Integer (Datatype.ARRAY)); 25 databaseTypesMap.put("RECORD",new Integer (Datatype.RECORD)); 26 databaseTypesMap.put("RECORDSET",new Integer (Datatype.RECORDSET)); 27 databaseTypesMap.put("BIGDECIMAL",new Integer (Datatype.BIGDECIMAL)); 28 databaseTypesMap.put("TIME",new Integer (Datatype.TIME)); 29 databaseTypesMap.put("TIMESTAMP",new Integer (Datatype.TIMESTAMP)); 30 databaseTypesMap.put("BYTE",new Integer (Datatype.BYTE)); 31 databaseTypesMap.put("BLOB",new Integer (Datatype.BLOB)); 32 databaseTypesMap.put("CLOB",new Integer (Datatype.CLOB)); 33 databaseTypesMap.put("REF",new Integer (Datatype.REF)); 34 databaseTypesMap.put("STRUCT",new Integer (Datatype.STRUCT)); 35 databaseTypesMap.put("VARCHAR",new Integer (Datatype.VARCHAR)); 36 databaseTypesMap.put("CHAR",new Integer (Datatype.CHAR)); 37 databaseTypesMap.put("CHARACTER VARYING",new Integer (Datatype.CHARACTERVARYING)); 38 databaseTypesMap.put("CHAR VARYING",new Integer (Datatype.CHARVARYING)); 39 databaseTypesMap.put("CHARACTER LARGE OBJECT",new Integer (Datatype.CHARACTERLARGEOBJECT)); 40 databaseTypesMap.put("CHAR LARGE OBJECT",new Integer (Datatype.CHARLARGEOBJECT)); 41 databaseTypesMap.put("BINARY LARGE OBJECT",new Integer (Datatype.BINARYLARGEOBJECT)); 42 databaseTypesMap.put("BIT",new Integer (Datatype.BIT)); 43 databaseTypesMap.put("BIT VARYING",new Integer (Datatype.BITVARYING)); 44 databaseTypesMap.put("NUMERIC",new Integer (Datatype.NUMERIC)); 45 databaseTypesMap.put("DECIMAL",new Integer (Datatype.DECIMAL)); 46 databaseTypesMap.put("DEC",new Integer (Datatype.DEC)); 47 databaseTypesMap.put("INT",new Integer (Datatype.INT)); 48 databaseTypesMap.put("REAL",new Integer (Datatype.REAL)); 49 databaseTypesMap.put("DOUBLE PRECISION",new Integer (Datatype.DOUBLEPRECISION)); 50 databaseTypesMap.put("SMALLINT",new Integer (Datatype.SMALLINT)); 51 databaseTypesMap.put("TINYINT",new Integer (Datatype.TINYINT)); 52 databaseTypesMap.put("BIGINT",new Integer (Datatype.BIGINT)); 53 databaseTypesMap.put("LONG VARCHAR",new Integer (Datatype.LONGVARCHAR)); 54 databaseTypesMap.put("LONG VARBINARY",new Integer (Datatype.LONGVARBINARY)); 55 databaseTypesMap.put("VARBINARY",new Integer (Datatype.VARBINARY)); 56 databaseTypesMap.put("BINARY",new Integer (Datatype.BINARY)); 57 databaseTypesMap.put("TABLEKEY",new Integer (Datatype.TABLEKEY)); 58 59 }; 60 61 public TypeConverter() throws DException 62 {} 63 64 public static String getDataBaseTypeName(int databaseType) throws DException { 65 switch (databaseType){ 66 case Datatype.CHARACTER : return "CHARACTER"; 67 case Datatype.INTEGER : return "INTEGER"; 68 case Datatype.LONG : return "LONG"; 69 case Datatype.SHORT : return "SHORT"; 70 case Datatype.BOOLEAN : return "BOOLEAN"; 71 case Datatype.FLOAT : return "FLOAT"; 72 case Datatype.DOUBLE : return "DOUBLE"; 73 case Datatype.DATE : return "DATE"; 74 case Datatype.MODULE : return "MODULE"; 75 case Datatype.SUM : return "SUM"; 76 case Datatype.ARRAY : return "ARRAY"; 77 case Datatype.RECORD : return "RECORD"; 78 case Datatype.RECORDSET : return "RECORDSET"; 79 case Datatype.BIGDECIMAL : return "BIGDECIMAL"; 80 case Datatype.TIME : return "TIME"; 81 case Datatype.TIMESTAMP : return "TIMESTAMP"; 82 case Datatype.BYTE : return "BYTE"; 83 case Datatype.BLOB : return "BLOB"; 84 case Datatype.CLOB : return "CLOB"; 85 case Datatype.REF : return "REF"; 86 case Datatype.STRUCT : return "STRUCT"; 87 88 case Datatype.VARCHAR : return "VARCHAR"; 89 case Datatype.CHAR : return "CHAR"; 90 case Datatype.CHARACTERVARYING :return "CHARACTER VARYING"; 91 case Datatype.CHARVARYING : return "CHAR VARYING"; 92 case Datatype.CHARACTERLARGEOBJECT : return "CHARACTER LARGE OBJECT"; 93 case Datatype.CHARLARGEOBJECT : return "CHAR LARGE OBJECT"; 94 case Datatype.BINARYLARGEOBJECT : return "BINARY LARGE OBJECT"; 95 case Datatype.BIT : return "BIT"; 96 case Datatype.BITVARYING : return "BIT VARYING"; 97 case Datatype.NUMERIC : return "NUMERIC"; 98 case Datatype.DECIMAL : return "DECIMAL"; 99 case Datatype.DEC : return "DEC"; 100 case Datatype.INT : return "INT"; 101 case Datatype.REAL : return "REAL"; 102 case Datatype.DOUBLEPRECISION : return "DOUBLE PRECISION"; 103 case Datatype.SMALLINT : return "SMALLINT"; 104 105 case Datatype.TINYINT : return "TINYINT"; 106 case Datatype.BIGINT : return "BIGINT"; 107 case Datatype.LONGVARCHAR : return "LONG VARCHAR"; 108 case Datatype.LONGVARBINARY : return "LONG VARBINARY"; 109 case Datatype.VARBINARY : return "VARBINARY"; 110 case Datatype.BINARY : return "BINARY"; 111 case Datatype.TABLEKEY : return "TABLEKEY"; 112 } 113 throw new IllegalColumnPropertyException("DSE1168", new Object []{"","Type",new Integer (databaseType)}); 114 } 115 116 public static int getCorrespondingSqlTypeOfDatabaseType(int type) throws DException { 117 switch (type) { 118 case Datatype.CHAR : 119 case Datatype.CHARACTER : return Types.CHAR; 120 case Datatype.INT : 121 case Datatype.INTEGER : return Types.INTEGER; 122 case Datatype.BIGINT : 123 case Datatype.LONG : return Types.BIGINT; 124 case Datatype.SMALLINT : 125 case Datatype.SHORT : return Types.SMALLINT; 126 case Datatype.REAL : return Types.REAL ; 127 case Datatype.FLOAT : return Types.FLOAT; 128 case Datatype.DOUBLEPRECISION : 129 case Datatype.DOUBLE : return Types.DOUBLE; 130 case Datatype.DATE : return Types.DATE; 131 case Datatype.MODULE : return Types.BIGINT; 132 case Datatype.SUM : return Types.DOUBLE; 133 case Datatype.ARRAY : return Types.ARRAY; 134 case Datatype.RECORD : return Types.BIGINT; 135 case Datatype.NUMERIC : 136 case Datatype.DECIMAL : 137 case Datatype.DEC : 138 case Datatype.BIGDECIMAL : return Types.DECIMAL; 139 case Datatype.TIME : return Types.TIME; 140 case Datatype.TIMESTAMP : return Types.TIMESTAMP; 141 case Datatype.TINYINT : 142 case Datatype.BYTE : return Types.TINYINT; 143 144 case Datatype.LONGVARBINARY : 145 case Datatype.BINARYLARGEOBJECT : 146 case Datatype.BLOB : return Types.BLOB; 147 case Datatype.LONGVARCHAR : 148 case Datatype.CHARACTERLARGEOBJECT : 149 case Datatype.CHARLARGEOBJECT : 150 case Datatype.CLOB : return Types.CLOB; 151 case Datatype.REF : return Types.REF; 152 case Datatype.STRUCT : return Types.STRUCT; 153 154 case Datatype.CHARACTERVARYING : 155 case Datatype.CHARVARYING : 156 case Datatype.VARCHAR : return Types.VARCHAR; 157 case Datatype.BIT : return Types.BINARY; 158 case Datatype.BITVARYING : return Types.VARBINARY; 159 160 } 161 return Types.OTHER; 162 163 } 164 165 166 167 public static String getCorrespondingJavaClassOfDatabaseType(int type) throws DException { 168 switch (type) { 169 case Datatype.CHAR : 170 case Datatype.VARCHAR : 171 case Datatype.CHARACTERVARYING : 172 case Datatype.CHARVARYING : 173 case Datatype.CHARACTER : return "java.lang.String"; 174 175 case Datatype.INT : 176 case Datatype.INTEGER : return "int"; 177 178 case Datatype.MODULE : 179 case Datatype.RECORD : 180 case Datatype.BIGINT : 181 case Datatype.LONG : return "long"; 182 183 case Datatype.SMALLINT : 184 case Datatype.SHORT : return "short"; 185 186 case Datatype.BOOLEAN : return "boolean"; 187 188 case Datatype.REAL : return "float"; 189 190 case Datatype.SUM : 191 case Datatype.FLOAT : 192 case Datatype.DOUBLEPRECISION : 193 case Datatype.DOUBLE : return "double"; 194 195 case Datatype.DATE : return "java.sql.Date"; 196 197 case Datatype.ARRAY : return "java.sql.Array"; 198 199 case Datatype.NUMERIC : 200 case Datatype.DECIMAL : 201 case Datatype.DEC : 202 case Datatype.BIGDECIMAL : return "java.math.BigDecimal"; 203 204 case Datatype.TIME : return "java.sql.Time"; 205 206 case Datatype.TIMESTAMP : return "java.sql.TimeStamp"; 207 208 case Datatype.TINYINT : 209 case Datatype.BYTE : return "byte"; 210 211 case Datatype.LONGVARBINARY : 212 case Datatype.BINARYLARGEOBJECT : 213 case Datatype.BLOB : return "java.sql.Blob"; 214 215 case Datatype.CHARACTERLARGEOBJECT : 216 case Datatype.CHARLARGEOBJECT : 217 case Datatype.LONGVARCHAR : 218 case Datatype.CLOB : return "java.sql.Clob"; 219 220 case Datatype.REF : return "java.sql.Ref"; 221 222 case Datatype.STRUCT : return "java.sql.Struct"; 223 224 case Datatype.BIT : 225 case Datatype.BITVARYING : return "java.lang.String"; 226 } 227 return "java.lang.Object"; 228 229 } 230 231 public static String getCorrespondingJavaClassesOfSqlTypes(int type) throws DException { 232 switch (type) { 233 case Types.VARCHAR : 234 case Types.LONGVARCHAR : 235 case Types.CHAR : return "java.lang.String"; 236 case Types.INTEGER : return "int"; 237 case Types.BIGINT : return "long"; 238 case Types.SMALLINT : return "short"; 239 240 case Types.BIT : 241 return "boolean"; 242 243 case Types.REAL : return "float"; 244 case Types.FLOAT : 245 case Types.DOUBLE : return "double"; 246 247 case Types.TINYINT : return "byte"; 248 case Types.NUMERIC : 249 case Types.DECIMAL : return "java.math.BigDecimal"; 250 case Types.DATE : return "java.sql.Date"; 251 case Types.TIME : return "java.sql.Time"; 252 case Types.TIMESTAMP : return "java.sql.TimeStamp"; 253 254 case Types.BINARY : 255 case Types.VARBINARY : 256 case Types.LONGVARBINARY : return "java.lang.String"; case Types.ARRAY : return "java.sql.Array"; 258 case Types.CLOB : return "java.sql.Clob"; 259 case Types.BLOB : return "java.sql.Blob"; 260 case Types.REF : return "java.sql.Ref"; 261 case Types.STRUCT : return "java.sql.Struct"; 262 } 263 return "java.Object"; 264 265 } 266 267 public static int getCorrespondingDatabaseTypeOfSqlTypes(int type) throws DException { 268 switch (type) { 269 case Types.VARCHAR : 270 case Types.LONGVARCHAR : return Datatype.VARCHAR; 271 case Types.CHAR : return Datatype.CHARACTER; 272 case Types.INTEGER : return Datatype.INTEGER; 273 case Types.BIGINT : return Datatype.LONG; 274 case Types.SMALLINT : return Datatype.SHORT; 275 276 case Types.BIT : 277 return Datatype.BOOLEAN; 278 279 case Types.REAL : return Datatype.REAL; 280 case Types.FLOAT : return Datatype.FLOAT; 281 case Types.DOUBLE : return Datatype.DOUBLE; 282 283 case Types.TINYINT : return Datatype.BYTE; 284 case Types.NUMERIC : 285 case Types.DECIMAL : return Datatype.BIGDECIMAL; 286 case Types.DATE : return Datatype.DATE; 287 case Types.TIME : return Datatype.TIME; 288 case Types.TIMESTAMP : return Datatype.TIMESTAMP; 289 290 case Types.BINARY : return Datatype.BIT; 291 case Types.VARBINARY : 292 case Types.LONGVARBINARY : return Datatype.BITVARYING; 293 case Types.ARRAY : return Datatype.ARRAY; 294 case Types.CLOB : return Datatype.CLOB; 295 case Types.BLOB : return Datatype.BLOB; 296 case Types.REF : return Datatype.REF; 297 case Types.STRUCT : return Datatype.STRUCT; 298 } 299 return Datatype.CHARACTER; 300 301 } 302 public static int getDataBaseType(String databaseType) throws DException { 303 databaseType = databaseType.toUpperCase(); 304 if(databaseTypesMap.containsKey(databaseType) ) 305 return databaseTypesMap.get(databaseType).hashCode(); 306 throw new IllegalColumnPropertyException("DSE1168",new Object []{"","Type",databaseType}); 307 } 308 } 309 | Popular Tags |