List<ColumnInfo> columns = new ArrayList<ColumnInfo>();
dimension = rsmd.getColumnCount();
if (dimension <= 0) {
String errorMessage = "ResultSet for " + name + " has zero dimension.";
throw new FailureDetectingRowMetaDataException(errorMessage);
}
for (int i = 1; i <= dimension; i++) {
ColumnInfo ci = new ColumnInfo();
ci.setSchemaName(rsmd.getSchemaName(i));
ci.setCatalogName(rsmd.getCatalogName(i));
ci.setTableName(rsmd.getTableName(i));
ci.setColumnClassName(rsmd.getColumnClassName(i));
ci.setColumnName(convertToUpperCase(rsmd.getColumnLabel(i)));
ci.setColumnTypeName(rsmd.getColumnTypeName(i));
ci.setColumnDisplaySize(rsmd.getColumnDisplaySize(i));
ci.setSQLDataType(rsmd.getColumnType(i));
ci.setPrecision(rsmd.getPrecision(i));
ci.setScale(rsmd.getScale(i));
ci.setNull(rsmd.isNullable(i));
ci.setAutoIncrement(rsmd.isAutoIncrement(i));
ci.setCaseSensitive(rsmd.isCaseSensitive(i));
ci.setCurrency(rsmd.isCurrency(i));
ci.setDefinitelyWritable(rsmd.isDefinitelyWritable(i));
ci.setReadOnly(rsmd.isReadOnly(i));
ci.setSearchable(rsmd.isSearchable(i));
ci.setSigned(rsmd.isSigned(i));
ci.setWritable(rsmd.isWritable(i));
columns.add(i-1, ci);
}
//set properties
setColumnInfoList(columns);
}
catch(SQLException ex) {
throw new FailureDetectingRowMetaDataException(ex);
}
}