6d5adbeaa6287769eeec75a1c073e2e0bbd0794e
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / view / bookmark / EntityNode.java
1 package com.quantum.view.bookmark;
2
3 import com.quantum.model.Column;
4 import com.quantum.model.Entity;
5 import com.quantum.model.EntityHolder;
6 import com.quantum.model.SchemaHolder;
7 import com.quantum.model.Table;
8 import com.quantum.model.View;
9
10 /**
11  * @author BC
12  */
13 public class EntityNode extends TreeNode implements EntityHolder {
14
15     private Entity entity;
16     private boolean longFormName;
17     
18     public EntityNode(TreeNode parent, Entity entity) {
19         this(parent, entity, false);
20     }
21     public EntityNode(TreeNode parent, Entity entity, boolean longFormName) {
22         super(parent);
23         this.entity = entity;
24         this.longFormName = longFormName;
25         
26         if (parent instanceof SchemaHolder) {
27             SchemaHolder schemaHolder = (SchemaHolder) parent;
28             if (!schemaHolder.getSchema().getDisplayName().equals(entity.getSchema())) {
29                 this.longFormName = true;
30             }
31         }
32     }
33
34     public Object[] getChildren() {
35         initializeChildren();
36         if (this.children.size() > 0) {
37             return (ColumnNode[]) this.children.toArray(new ColumnNode[this.children.size()]);
38         } else {
39             return BookmarkListNode.EMPTY_ARRAY;
40         }
41     }
42
43     protected synchronized void initializeChildren() {
44         this.children.clear();
45         Column[] columns = this.entity.getColumns();
46         for (int i = 0, length = (columns == null) ? 0 : columns.length;
47             i < length;
48             i++) {
49             this.children.add(new ColumnNode(this, columns[i]));
50         }
51         // TODO: fire property change event
52     }
53
54     public boolean hasChildren() {
55         if (!isSequence()) {
56             return true;
57         } else {
58             return false;
59         }
60     }
61     
62     public Entity getEntity() {
63         return this.entity;
64     }
65     
66     public String getName() {
67         return this.entity.getName();
68     }
69     
70     public String getLabelName() {
71         return (this.longFormName) ? this.entity.getCondQualifiedName() : this.entity.getName();
72     }
73     
74     public boolean isTable() {
75         return Entity.TABLE_TYPE.equals(this.entity.getType());
76     }
77
78     public boolean isView() {
79         return Entity.VIEW_TYPE.equals(this.entity.getType());
80     }
81
82     public boolean isSequence() {
83         return Entity.SEQUENCE_TYPE.equals(this.entity.getType());
84     }
85
86     protected String getImageName() {
87         if (isSequence()) {
88             return "sequence.gif";
89         } else if (isView()) {
90             return "view.gif";
91         } else {
92             return (this.entity.exists() == null || this.entity.exists().booleanValue()) 
93                 ? "bigtable.gif" : "missingtable.gif";
94         }
95     }
96
97     public String getLabelDecorations(LabelDecorationInstructions instructions) {
98         String decoration = null;
99         if (instructions.isSizeVisible()) {
100             Integer size = getSize();
101             if (size != null) {
102                 decoration = ((decoration == null) ? "" : decoration) 
103                     + "[" + size + "]";
104             }
105         }
106         return decoration;
107     }
108     
109     private Integer getSize() {
110         if (isTable()) {
111             return ((Table) this.entity).getSize();
112         } else if (isView()) {
113             return ((View) this.entity).getSize();
114         } else {
115             return null;
116         }
117     }
118     
119     public int compareTo(Object o) {
120         if (o instanceof EntityNode) {
121             EntityNode that = (EntityNode) o;
122             return this.entity.getCondQualifiedName().compareTo(
123                 that.entity.getCondQualifiedName());
124         } else {
125             return super.compareTo(o);
126         }
127     }
128 }