1 package com.quantum.sql;
3 import java.sql.ResultSet;
4 import java.sql.ResultSetMetaData;
5 import java.sql.SQLException;
6 import java.util.ArrayList;
8 import java.util.Vector;
10 import com.quantum.model.Bookmark;
11 import com.quantum.model.Entity;
17 public class SQLMetaDataResults extends SQLResultSetResults {
22 private SQLMetaDataResults(String query, Bookmark bookmark, Entity entity) {
23 super(query, bookmark, entity);
26 static SQLResultSetResults create(Bookmark bookmark, ResultSet set, String query, Entity entity) throws SQLException {
28 SQLMetaDataResults results = new SQLMetaDataResults(query, bookmark, entity);
29 results.parseResultSet(set);
39 * @throws SQLException
41 protected void parseResultSet(ResultSet set) throws SQLException {
43 List columns = new ArrayList();
44 columns.add(new Column("ColumnName", "", 0)); //$NON-NLS-1$
45 columns.add(new Column("Type Name", "", 0)); //$NON-NLS-1$
46 columns.add(new Column("Size", "", 0)); //$NON-NLS-1$
47 columns.add(new Column("Scale", "", 0)); //$NON-NLS-1$
48 columns.add(new Column("Nullable", "", 0)); //$NON-NLS-1$
49 columns.add(new Column("AutoIncrement", "", 0)); //$NON-NLS-1$
50 columns.add(new Column("Type", "", 0)); //$NON-NLS-1$
51 setColumns((Column[]) columns.toArray(new Column[columns.size()]));
53 ResultSetMetaData metaData = set.getMetaData();
55 List rowList = new ArrayList();
56 for (int i = 1; i <= metaData.getColumnCount(); i++) {
57 Vector row = new Vector();
58 row.addElement(metaData.getColumnName(i));
59 row.addElement(metaData.getColumnTypeName(i));
62 precision = metaData.getPrecision(i);
63 } catch (Throwable t) {
64 // Do nothing. An exception can be generated by some very large row sizes, like BLOB in Oracle.
65 // Then getPrecision() will generate an exception. So we ignore it and go on.
68 precision = metaData.getColumnDisplaySize(i);
70 int scale = metaData.getScale(i);
72 row.addElement(new Long(precision));
73 row.addElement(new Integer(scale));
75 int nullable = metaData.isNullable(i);
76 if (nullable == ResultSetMetaData.columnNoNulls) {
77 row.addElement("Not Null"); //$NON-NLS-1$
78 } else if (nullable == ResultSetMetaData.columnNullable) {
79 row.addElement("Nullable"); //$NON-NLS-1$
81 nullable == ResultSetMetaData.columnNullableUnknown) {
82 row.addElement("Nullable"); //$NON-NLS-1$
84 row.addElement("<Error>"); //$NON-NLS-1$
87 (metaData.isAutoIncrement(i)
91 rowList.add(new Row(row));
92 row.addElement(new Integer(metaData.getColumnType(i)));
94 setRows((Row[]) rowList.toArray(new Row[rowList.size()]));
97 public boolean isMetaData() {