initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / view / bookmark / SchemaNode.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/SchemaNode.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/bookmark/SchemaNode.java
new file mode 100644 (file)
index 0000000..6b44cda
--- /dev/null
@@ -0,0 +1,81 @@
+package com.quantum.view.bookmark;
+
+import java.sql.SQLException;
+
+import com.quantum.model.Bookmark;
+import com.quantum.model.NotConnectedException;
+import com.quantum.model.Schema;
+import com.quantum.model.SchemaHolder;
+
+/**
+ * @author BC
+ */
+public class SchemaNode extends TreeNode implements SchemaHolder {
+
+    private Schema schema;
+    /**
+     * @param parent
+     */
+    public SchemaNode(TreeNode parent, Schema schema) {
+        super(parent);
+        this.schema = schema;
+    }
+
+    /**
+     * @see com.quantum.view.bookmark.TreeNode#getChildren()
+     */
+    public Object[] getChildren() {
+        Bookmark bookmark = getBookmark();
+        if (!bookmark.isConnected()) {
+            return BookmarkListNode.EMPTY_ARRAY;
+        } else {
+            if (this.children.isEmpty()) {
+                initializeChildren();
+            }
+        }
+        return (TreeNode[]) this.children.toArray(new TreeNode[this.children.size()]);
+    }
+
+    protected void initializeChildren() {
+        this.children.clear();
+        Bookmark bookmark = getBookmark();
+        try {
+            String[] types = bookmark.getDatabase().getEntityTypes();
+            for (int i = 0, length = (types == null) ? 0 : types.length;
+                i < length;
+                i++) {
+                this.children.add(new GroupNode(this, this.schema, types[i]));
+            }
+        } catch (NotConnectedException e) {
+        } catch (SQLException e) {
+        }
+    }
+
+    /**
+     * @see com.quantum.view.bookmark.TreeNode#hasChildren()
+     */
+    public boolean hasChildren() {
+        return getBookmark().isConnected();
+    }
+
+    /**
+     * @see com.quantum.view.bookmark.TreeNode#getName()
+     */
+    public String getName() {
+        return this.schema.getDisplayName();
+    }
+
+    /**
+     * @see com.quantum.view.bookmark.TreeNode#getImageName()
+     */
+    protected String getImageName() {
+        return this.schema.isDefault() ? "user.gif" : "schema.gif";
+    }
+
+    /**
+     * @see com.quantum.model.SchemaHolder#getSchema()
+     */
+    public Schema getSchema() {
+        return this.schema;
+    }
+}