package squill.mgen; import java.math.BigDecimal; import java.sql.*; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * @author Michael Hunger * @since 27.08.2008 */ class TypeMap { public static Map<Integer, Class<?>> typeMap = new HashMap<Integer, Class<?>>(); static { typeMap.put(Types.CHAR, String.class); typeMap.put(Types.VARCHAR, String.class); typeMap.put(Types.LONGVARCHAR, String.class); typeMap.put(Types.NUMERIC, BigDecimal.class); typeMap.put(Types.DECIMAL, BigDecimal.class); typeMap.put(Types.BIT, Boolean.class); typeMap.put(Types.BOOLEAN, Boolean.class); typeMap.put(Types.TINYINT, Byte.class); typeMap.put(Types.SMALLINT, Short.class); typeMap.put(Types.INTEGER, Integer.class); typeMap.put(Types.BIGINT, Long.class); typeMap.put(Types.REAL, Float.class); typeMap.put(Types.FLOAT, Double.class); typeMap.put(Types.DOUBLE, Double.class); typeMap.put(Types.BINARY, byte[].class); typeMap.put(Types.VARBINARY, byte[].class); typeMap.put(Types.LONGVARBINARY, byte[].class); typeMap.put(Types.DATE, Date.class); typeMap.put(Types.TIME, Time.class); typeMap.put(Types.TIMESTAMP, Timestamp.class); typeMap.put(Types.CLOB, Clob.class); typeMap.put(Types.BLOB, Blob.class); typeMap.put(Types.ARRAY, Array.class); typeMap.put(Types.STRUCT, Struct.class); typeMap.put(Types.REF, Ref.class); typeMap.put(Types.DATALINK, java.net.URL.class); typeMap.put(Types.OTHER, Object.class); } public static Class<?> getType(final DbColumn col) { if (col.getSqlType() == Types.DECIMAL) { return (col.hasScale() ? BigDecimal.class : Integer.class); } return typeMap.get(col.getSqlType()); } public static String getTypeString(final DbColumn col) { Class<?> type = getType(col); if (type == null) { type = Object.class; } return type.getCanonicalName(); } }