package com.frameworkset.common.poolman.sql; import java.io.Serializable; import com.frameworkset.orm.adapter.DB; import com.frameworkset.orm.engine.model.Domain; import com.frameworkset.orm.engine.model.SchemaType; /* <LI><B>TABLE_CAT</B> String => table catalog (may be <code>null</code>) * <LI><B>TABLE_SCHEM</B> String => table schema (may be <code>null</code>) * <LI><B>TABLE_NAME</B> String => table name * <LI><B>COLUMN_NAME</B> String => column name * <LI><B>DATA_TYPE</B> int => SQL type from java.sql.Types * <LI><B>TYPE_NAME</B> String => Data source dependent type name, * for a UDT the type name is fully qualified * <LI><B>COLUMN_SIZE</B> int => column size. For char or date * types this is the maximum number of characters, for numeric or * decimal types this is precision. * <LI><B>BUFFER_LENGTH</B> is not used. * <LI><B>DECIMAL_DIGITS</B> int => the number of fractional digits * <LI><B>NUM_PREC_RADIX</B> int => Radix (typically either 10 or 2) * <LI><B>NULLABLE</B> int => is NULL allowed. * <UL> * <LI> columnNoNulls - might not allow <code>NULL</code> values * <LI> columnNullable - definitely allows <code>NULL</code> values * <LI> columnNullableUnknown - nullability unknown * </UL> * <LI><B>REMARKS</B> String => comment describing column (may be <code>null</code>) * <LI><B>COLUMN_DEF</B> String => default value (may be <code>null</code>) * <LI><B>SQL_DATA_TYPE</B> int => unused * <LI><B>SQL_DATETIME_SUB</B> int => unused * <LI><B>CHAR_OCTET_LENGTH</B> int => for char types the * maximum number of bytes in the column * <LI><B>ORDINAL_POSITION</B> int => index of column in table * (starting at 1) * <LI><B>IS_NULLABLE</B> String => "NO" means column definitely * does not allow NULL values; "YES" means the column might * allow NULL values. An empty string means nobody knows. * <LI><B>SCOPE_CATLOG</B> String => catalog of table that is the scope * of a reference attribute (<code>null</code> if DATA_TYPE isn't REF) * <LI><B>SCOPE_SCHEMA</B> String => schema of table that is the scope * of a reference attribute (<code>null</code> if the DATA_TYPE isn't REF) * <LI><B>SCOPE_TABLE</B> String => table name that this the scope * of a reference attribure (<code>null</code> if the DATA_TYPE isn't REF) * <LI><B>SOURCE_DATA_TYPE</B> short => source type of a distinct type or user-generated * Ref type, SQL type from java.sql.Types (<code>null</code> if DATA_TYPE * isn't DISTINCT or user-generated REF) * </OL>*/ public class ColumnMetaData implements Comparable,Serializable{ private TableMetaData tableMetaData; private String columnName; private int dataType; private String typeName; private int colunmSize; private int numPrecRadix; private String columnDefaultValue; private String remarks; private DB db; private Domain domain; private SchemaType schemaType; private int DECIMAL_DIGITS; /** * yes,no, unknown */ private String nullable; private int CHAR_OCTET_LENGTH; public String getColumnDefaultValue() { return columnDefaultValue; } public void setColumnDefaultValue(String columnDefaultValue) { this.columnDefaultValue = columnDefaultValue; } public String getColumnName() { return columnName; } public void setColumnName(String columnName) { this.columnName = columnName; } public int getColunmSize() { return colunmSize; } public void setColunmSize(int colunmSize) { this.colunmSize = colunmSize; } public int getDataType() { return dataType; } public void setDataType(int dataType,String datatypeName) { this.domain = db.getDomainForSchemaType(dataType, datatypeName); this.schemaType = domain.getType(); this.dataType = dataType; } public String getNullable() { return nullable; } public void setIsNullable(String isNullable) { this.nullable = isNullable; } public int getNumPrecRadix() { return numPrecRadix; } public void setNumPrecRadix(int numPrecRadix) { this.numPrecRadix = numPrecRadix; } public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } public TableMetaData getTableMetaData() { return tableMetaData; } public void setTableMetaData(TableMetaData tableMetaData) { this.tableMetaData = tableMetaData; } public String getTypeName() { return typeName; } public void setTypeName(String typeName) { this.typeName = typeName; } public String toString() { StringBuffer ret = new StringBuffer(); ret.append(" columnName=") .append(columnName) .append(",") .append("dataType=") .append(dataType) .append(",") .append("typeName=") .append(typeName) .append(",") .append("colunmSize=") .append(colunmSize) .append(",") .append("numPrecRadix=") .append(numPrecRadix) .append(",") .append("DECIMAL_DIGITS=") .append(this.getDECIMAL_DIGITS()) .append(",") .append("columnDefaultValue=") .append(columnDefaultValue) .append(",") .append("remarks=") .append(remarks) .append(",") .append("nullable=") .append(nullable); return ret.toString(); } public ColumnMetaData(DB db) { this.db = db; } public SchemaType getSchemaType() { return schemaType; } public int compareTo(Object obj) { if(obj instanceof ColumnMetaData) { ColumnMetaData temp = (ColumnMetaData)obj; if(temp != null) { int ret = this.getColumnName().toLowerCase().compareTo(temp.getColumnName().toLowerCase()); return ret; } else { return 0; } } else return 0; } public int getDECIMAL_DIGITS() { return DECIMAL_DIGITS; } public void setDECIMAL_DIGITS(int decimal_digits) { DECIMAL_DIGITS = decimal_digits; } public void setCHAR_OCTET_LENGTH(int CHAR_OCTET_LENGTH) { this.CHAR_OCTET_LENGTH = CHAR_OCTET_LENGTH; } public int getCHAR_OCTET_LENGTH() { return CHAR_OCTET_LENGTH; } }