Quantum version 2.4.1
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / sql / SQLMetaDataResults.java
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 (file)
index 0000000..61b3333
--- /dev/null
@@ -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("<Error>"); //$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;
+       }
+}