public static void updateMetaData(ResultSetMetaData rsmd,
DefaultTableMetaData metaData,
int column) {
try
{
if (rsmd.isCurrency(column + 1))
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Numeric.NAMESPACE, MetaAttributeNames.Numeric.CURRENCY, Boolean.TRUE);
}
else
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Numeric.NAMESPACE, MetaAttributeNames.Numeric.CURRENCY, Boolean.FALSE);
}
if (rsmd.isSigned(column + 1))
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Numeric.NAMESPACE, MetaAttributeNames.Numeric.SIGNED, Boolean.TRUE);
}
else
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Numeric.NAMESPACE, MetaAttributeNames.Numeric.SIGNED, Boolean.FALSE);
}
final String tableName = rsmd.getTableName(column + 1);
if (tableName != null)
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Database.NAMESPACE, MetaAttributeNames.Database.TABLE, tableName);
}
final String schemaName = rsmd.getSchemaName(column + 1);
if (schemaName != null)
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Database.NAMESPACE, MetaAttributeNames.Database.SCHEMA, schemaName);
}
final String catalogName = rsmd.getCatalogName(column + 1);
if (catalogName != null)
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Database.NAMESPACE, MetaAttributeNames.Database.CATALOG, catalogName);
}
final String label = rsmd.getColumnLabel(column + 1);
if (label != null)
{
metaData.setColumnAttribute
(column, MetaAttributeNames.Formatting.NAMESPACE, MetaAttributeNames.Formatting.LABEL, label);
}
final int displaySize = rsmd.getColumnDisplaySize(column + 1);
metaData.setColumnAttribute (column, MetaAttributeNames.Formatting.NAMESPACE,
MetaAttributeNames.Formatting.DISPLAY_SIZE, IntegerCache.getInteger(displaySize));
final int precision = rsmd.getPrecision(column + 1);
metaData.setColumnAttribute (column, MetaAttributeNames.Numeric.NAMESPACE,
MetaAttributeNames.Numeric.PRECISION, IntegerCache.getInteger(precision));
final int scale = rsmd.getScale(column +1);
metaData.setColumnAttribute (column, MetaAttributeNames.Numeric.NAMESPACE,
MetaAttributeNames.Numeric.SCALE, IntegerCache.getInteger(scale));
}
catch (SQLException sqle)
{
// It is non-fatal if the meta-data cannot be read from the result set. Drivers are
// buggy all the time ..
}
}
|