package ddth.dasp.handlersocket.bo.hs; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; public class ColumnConfig { public enum ColumnType { INT, LONG, FLOAT, DOUBLE, STRING, BINARY } private final static Map<String, ColumnType> COLUMN_TYPE_MAPPING = new HashMap<String, ColumnType>(); static { COLUMN_TYPE_MAPPING.put("int", ColumnType.INT); COLUMN_TYPE_MAPPING.put("Int", ColumnType.INT); COLUMN_TYPE_MAPPING.put("INT", ColumnType.INT); COLUMN_TYPE_MAPPING.put("integer", ColumnType.INT); COLUMN_TYPE_MAPPING.put("Integer", ColumnType.INT); COLUMN_TYPE_MAPPING.put("INTEGER", ColumnType.INT); COLUMN_TYPE_MAPPING.put("long", ColumnType.LONG); COLUMN_TYPE_MAPPING.put("Long", ColumnType.LONG); COLUMN_TYPE_MAPPING.put("LONG", ColumnType.LONG); COLUMN_TYPE_MAPPING.put("float", ColumnType.FLOAT); COLUMN_TYPE_MAPPING.put("Float", ColumnType.FLOAT); COLUMN_TYPE_MAPPING.put("FLOAT", ColumnType.FLOAT); COLUMN_TYPE_MAPPING.put("double", ColumnType.DOUBLE); COLUMN_TYPE_MAPPING.put("Double", ColumnType.DOUBLE); COLUMN_TYPE_MAPPING.put("DOUBLE", ColumnType.DOUBLE); COLUMN_TYPE_MAPPING.put("binary", ColumnType.BINARY); COLUMN_TYPE_MAPPING.put("Binary", ColumnType.BINARY); COLUMN_TYPE_MAPPING.put("BINARY", ColumnType.BINARY); COLUMN_TYPE_MAPPING.put("bin", ColumnType.BINARY); COLUMN_TYPE_MAPPING.put("Bin", ColumnType.BINARY); COLUMN_TYPE_MAPPING.put("BIN", ColumnType.BINARY); } private String name, mappedName, type; public ColumnConfig(String name, String mappedName, String type) { this.name = name; this.mappedName = mappedName; this.type = type; } public String getName() { return name; } public String getMappedName() { return mappedName != null ? mappedName : name; } public ColumnType getType() { ColumnType colType = COLUMN_TYPE_MAPPING.get(type); return colType != null ? colType : ColumnType.STRING; } /** * Gets column value from a {@link ResultSet}. * * @param rs * @return * @throws SQLException */ public Object getValue(ResultSet rs) throws SQLException { ColumnType colType = getType(); switch (colType) { case BINARY: return rs.getBytes(name); case DOUBLE: return rs.getDouble(name); case FLOAT: return rs.getDouble(name); case INT: return rs.getInt(name); case LONG: return rs.getLong(name); case STRING: default: return rs.getString(name); } } }