1 2 12 package com.versant.core.jdbc.metadata; 13 14 import com.versant.core.jdbc.sql.exp.LiteralExp; 15 16 import java.util.HashMap ; 17 import java.sql.Types ; 18 19 import com.versant.core.common.BindingSupportImpl; 20 21 25 public class JdbcTypes { 26 27 private static final HashMap TYPE_NAME_MAP = new HashMap (); 29 30 static { 31 TYPE_NAME_MAP.put("BIT", new Integer (-7)); 32 TYPE_NAME_MAP.put("TINYINT", new Integer (-6)); 33 TYPE_NAME_MAP.put("SMALLINT", new Integer (5)); 34 TYPE_NAME_MAP.put("INTEGER", new Integer (4)); 35 TYPE_NAME_MAP.put("BIGINT", new Integer (-5)); 36 TYPE_NAME_MAP.put("FLOAT", new Integer (6)); 37 TYPE_NAME_MAP.put("REAL", new Integer (7)); 38 TYPE_NAME_MAP.put("DOUBLE", new Integer (8)); 39 TYPE_NAME_MAP.put("NUMERIC", new Integer (2)); 40 TYPE_NAME_MAP.put("DECIMAL", new Integer (3)); 41 TYPE_NAME_MAP.put("CHAR", new Integer (1)); 42 TYPE_NAME_MAP.put("VARCHAR", new Integer (12)); 43 TYPE_NAME_MAP.put("LONGVARCHAR", new Integer (-1)); 44 TYPE_NAME_MAP.put("DATE", new Integer (91)); 45 TYPE_NAME_MAP.put("TIME", new Integer (92)); 46 TYPE_NAME_MAP.put("TIMESTAMP", new Integer (93)); 47 TYPE_NAME_MAP.put("BINARY", new Integer (-2)); 48 TYPE_NAME_MAP.put("VARBINARY", new Integer (-3)); 49 TYPE_NAME_MAP.put("LONGVARBINARY", new Integer (-4)); 50 TYPE_NAME_MAP.put("NULL", new Integer (0)); 51 TYPE_NAME_MAP.put("OTHER", new Integer (1111)); 52 TYPE_NAME_MAP.put("JAVA_OBJECT", new Integer (2000)); 53 TYPE_NAME_MAP.put("DISTINCT", new Integer (2001)); 54 TYPE_NAME_MAP.put("STRUCT", new Integer (2002)); 55 TYPE_NAME_MAP.put("ARRAY", new Integer (2003)); 56 TYPE_NAME_MAP.put("BLOB", new Integer (2004)); 57 TYPE_NAME_MAP.put("CLOB", new Integer (2005)); 58 TYPE_NAME_MAP.put("REF", new Integer (2006)); 59 } 60 61 private JdbcTypes() { } 62 63 67 public static int parse(String s) throws IllegalArgumentException { 68 Integer i = (Integer )TYPE_NAME_MAP.get(s); 69 if (i == null) { 70 throw BindingSupportImpl.getInstance().illegalArgument("Invalid JDBC type: '" + s + "'"); 71 } 72 return i.intValue(); 73 } 74 75 79 public static String toString(int type) throws IllegalArgumentException { 80 switch (type) { 81 case Types.BIT: return "BIT"; 82 case Types.TINYINT: return "TINYINT"; 83 case Types.SMALLINT: return "SMALLINT"; 84 case Types.INTEGER: return "INTEGER"; 85 case Types.BIGINT: return "BIGINT"; 86 case Types.FLOAT: return "FLOAT"; 87 case Types.REAL: return "REAL"; 88 case Types.DOUBLE: return "DOUBLE"; 89 case Types.NUMERIC: return "NUMERIC"; 90 case Types.DECIMAL: return "DECIMAL"; 91 case Types.CHAR: return "CHAR"; 92 case Types.VARCHAR: return "VARCHAR"; 93 case Types.LONGVARCHAR: return "LONGVARCHAR"; 94 case Types.DATE: return "DATE"; 95 case Types.TIME: return "TIME"; 96 case Types.TIMESTAMP: return "TIMESTAMP"; 97 case Types.BINARY: return "BINARY"; 98 case Types.VARBINARY: return "VARBINARY"; 99 case Types.LONGVARBINARY: return "LONGVARBINARY"; 100 case Types.NULL: return "NULL"; 101 case Types.OTHER: return "OTHER"; 102 case Types.JAVA_OBJECT: return "JAVA_OBJECT"; 103 case Types.DISTINCT: return "DISTINCT"; 104 case Types.STRUCT: return "STRUCT"; 105 case Types.ARRAY: return "ARRAY"; 106 case Types.BLOB: return "BLOB"; 107 case Types.CLOB: return "CLOB"; 108 case Types.REF: return "REF"; 109 } 110 throw BindingSupportImpl.getInstance().illegalArgument("Invalid JDBC type: " + type); 111 } 112 113 118 public static int getUpdateCost(int jdbcType) { 119 switch (jdbcType) { 120 case Types.BIT: return 0; 121 case Types.TINYINT: return 1; 122 case Types.SMALLINT: return 2; 123 case Types.INTEGER: return 3; 124 case Types.BIGINT: return 4; 125 case Types.FLOAT: return 5; 126 case Types.REAL: return 6; 127 case Types.DOUBLE: return 7; 128 case Types.NUMERIC: return 8; 129 case Types.DECIMAL: return 9; 130 case Types.DATE: return 10; 131 case Types.TIME: return 11; 132 case Types.TIMESTAMP: return 12; 133 case Types.VARCHAR: return 13; 134 case Types.CHAR: return 14; 135 case Types.VARBINARY: return 15; 136 case Types.BINARY: return 16; 137 case Types.LONGVARCHAR: return 17; 138 case Types.LONGVARBINARY: return 18; 139 case Types.CLOB: return 19; 140 case Types.BLOB: return 20; 141 case Types.ARRAY: return 21; 142 case Types.REF: return 22; 143 case Types.JAVA_OBJECT: return 23; 144 case Types.OTHER: return 24; 145 case Types.STRUCT: return 25; 146 case Types.DISTINCT: return 26; 147 case Types.NULL: return 27; 148 } 149 throw BindingSupportImpl.getInstance().illegalArgument("Invalid JDBC type: " + jdbcType); 150 } 151 152 157 public static int getLiteralType(int jdbcType) { 158 switch (jdbcType) { 159 case Types.BIT: 160 case Types.TINYINT: 161 case Types.SMALLINT: 162 case Types.INTEGER: 163 case Types.BIGINT: 164 case Types.FLOAT: 165 case Types.REAL: 166 case Types.DOUBLE: 167 case Types.NUMERIC: 168 case Types.DECIMAL: 169 return LiteralExp.TYPE_OTHER; 170 } 171 return LiteralExp.TYPE_STRING; 172 } 173 174 } 175 | Popular Tags |