package nebula.data.db.mapping; import java.sql.Types; import java.util.EnumMap; import nebula.data.Timable; import nebula.lang.RawTypes; public class DbColumn implements Timable{ public final int jdbcType; static EnumMap<RawTypes, Integer> dbTypeMap = new EnumMap<RawTypes, Integer>(RawTypes.class); static { dbTypeMap.put(RawTypes.Boolean, Types.BOOLEAN); dbTypeMap.put(RawTypes.Long, Types.BIGINT); dbTypeMap.put(RawTypes.Decimal, Types.DECIMAL); dbTypeMap.put(RawTypes.String, Types.VARCHAR); dbTypeMap.put(RawTypes.Text, Types.VARCHAR); dbTypeMap.put(RawTypes.Date, Types.DATE); dbTypeMap.put(RawTypes.Time, Types.TIME); dbTypeMap.put(RawTypes.Datetime, Types.TIMESTAMP); dbTypeMap.put(RawTypes.Timestamp, Types.TIMESTAMP); } public DbColumn(String fieldName, String columnName, boolean key, boolean nullable, boolean array, RawTypes rawType, long size, int precision, int scale) { this.fieldName = fieldName; this.columnName = columnName; this.key = key; this.nullable = nullable; this.array = array; this.rawType = rawType; this.precision = precision; this.scale = scale; if (array) { this.size = 4000; this.jdbcType = Types.VARCHAR; } else { this.size = size; this.jdbcType = dbTypeMap.get(rawType); } } // String fieldName, String columnName, boolean key, boolean nullable, // RawTypes rawType,long size, // int precision, int scale public final String fieldName; public final String columnName; public final boolean key; public final boolean nullable; public final boolean array; public final RawTypes rawType; public final long size; public final int precision; public final int scale; @Override public String toString() { return "DbColumn [fieldName=" + fieldName + ", columnName=" + columnName + ", rawType=" + rawType + ", size=" + size + ", precision=" + precision + ", scale=" + scale + ", key=" + key + "]"; } @Override public long getLastModified() { // TODO Not realized getLastModified return 0; } }