package org.beanfuse.db.meta; import java.sql.ResultSet; import java.sql.SQLException; import java.util.StringTokenizer; import org.beanfuse.db.dialect.Dialect; /** * JDBC column metadata * * @author chaostone */ public class ColumnMetadata implements Comparable { private String name; private String typeName; private int columnSize; private int decimalDigits; private String isNullable; private int typeCode; public ColumnMetadata() { super(); } public ColumnMetadata(ResultSet rs) throws SQLException { name = rs.getString("COLUMN_NAME"); columnSize = rs.getInt("COLUMN_SIZE"); decimalDigits = rs.getInt("DECIMAL_DIGITS"); isNullable = rs.getString("IS_NULLABLE"); typeCode = rs.getInt("DATA_TYPE"); typeName = new StringTokenizer(rs.getString("TYPE_NAME"), "() ").nextToken(); } public String getName() { return name; } public String getTypeName() { return typeName; } public int getColumnSize() { return columnSize; } public int getDecimalDigits() { return decimalDigits; } public String getNullable() { return isNullable; } public String toString() { return "ColumnMetadata(" + name + ')'; } public int getTypeCode() { return typeCode; } public String getSqlType(Dialect dialect) { return dialect.getTypeName(typeCode, columnSize, columnSize, decimalDigits); } public int compareTo(Object o) { ColumnMetadata other = (ColumnMetadata) o; return getName().compareToIgnoreCase(other.getName()); } }