X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/sql/SQLMetaDataResults.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/sql/SQLMetaDataResults.java new file mode 100644 index 0000000..61b3333 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/sql/SQLMetaDataResults.java @@ -0,0 +1,91 @@ +package com.quantum.sql; + +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; +import java.util.Vector; + +import com.quantum.model.Bookmark; +import com.quantum.model.Entity; + + +/** + * @author BC + */ +public class SQLMetaDataResults extends SQLResultSetResults { + + /** + * @param query + */ + private SQLMetaDataResults(String query, Bookmark bookmark, Entity entity) { + super(query, bookmark, entity); + } + + static SQLResultSetResults create(Bookmark bookmark, ResultSet set, String query, Entity entity) throws SQLException { + + SQLMetaDataResults results = new SQLMetaDataResults(query, bookmark, entity); + results.parseResultSet(set); + + return results; + } + + /** + * @param set + * @param results + * @param metaData + * @param columnCount + * @throws SQLException + */ + protected void parseResultSet(ResultSet set) throws SQLException { + + List columns = new ArrayList(); + columns.add(new Column("ColumnName", "", 0)); //$NON-NLS-1$ + columns.add(new Column("Type", "", 0)); //$NON-NLS-1$ + columns.add(new Column("Size", "", 0)); //$NON-NLS-1$ + columns.add(new Column("Nullable", "", 0)); //$NON-NLS-1$ + columns.add(new Column("AutoIncrement", "", 0)); //$NON-NLS-1$ + setColumns((Column[]) columns.toArray(new Column[columns.size()])); + + ResultSetMetaData metaData = set.getMetaData(); + + List rowList = new ArrayList(); + for (int i = 1; i <= metaData.getColumnCount(); i++) { + Vector row = new Vector(); + row.addElement(metaData.getColumnName(i)); + row.addElement(metaData.getColumnTypeName(i)); + int textSize = metaData.getColumnDisplaySize(i); + int precision = metaData.getPrecision(i); + int scale = metaData.getScale(i); + if (scale == 0 && precision == 0) { + row.addElement(Integer.toString(precision)); + } else { + row.addElement(textSize + ", " + precision + ", " + scale); //$NON-NLS-1$ //$NON-NLS-2$ + } + int nullable = metaData.isNullable(i); + if (nullable == ResultSetMetaData.columnNoNulls) { + row.addElement("Not Null"); //$NON-NLS-1$ + } else if (nullable == ResultSetMetaData.columnNullable) { + row.addElement("Nullable"); //$NON-NLS-1$ + } else if ( + nullable == ResultSetMetaData.columnNullableUnknown) { + row.addElement("Nullable"); //$NON-NLS-1$ + } else { + row.addElement(""); //$NON-NLS-1$ + } + row.addElement( + (metaData.isAutoIncrement(i) + ? Boolean.TRUE + : Boolean.FALSE) + .toString()); + rowList.add(new Row(row)); + } + setRows((Row[]) rowList.toArray(new Row[rowList.size()])); + set.close(); + } + + public boolean isMetaData() { + return true; + } +}