001: /* Copyright 2002-2005 The Apache Software Foundation
002: *
003: * Licensed under the Apache License, Version 2.0 (the "License");
004: * you may not use this file except in compliance with the License.
005: * You may obtain a copy of the License at
006: *
007: * http://www.apache.org/licenses/LICENSE-2.0
008: *
009: * Unless required by applicable law or agreed to in writing, software
010: * distributed under the License is distributed on an "AS IS" BASIS,
011: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012: * See the License for the specific language governing permissions and
013: * limitations under the License.
014: */
015:
016: package org.apache.ojb.tools.mapping.reversedb2.ojbmetatreemodel;
017:
018: import org.apache.commons.collections.iterators.ArrayIterator;
019: import org.apache.ojb.broker.metadata.ClassDescriptor;
020: import org.apache.ojb.broker.metadata.CollectionDescriptor;
021: import org.apache.ojb.broker.metadata.DescriptorRepository;
022: import org.apache.ojb.broker.metadata.FieldDescriptor;
023: import org.apache.ojb.broker.metadata.IndexDescriptor;
024: import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
025:
026: /**
027: *
028: * @author Administrator
029: */
030: public class OjbMetaClassDescriptorNode extends OjbMetaTreeNode
031: implements javax.swing.tree.MutableTreeNode {
032:
033: private static java.util.ArrayList supportedActions = new java.util.ArrayList();
034:
035: private ClassDescriptor cld;
036:
037: /** Creates a new instance of OjbMetaClassDescriptorNode */
038: public OjbMetaClassDescriptorNode(DescriptorRepository pRepository,
039: OjbMetaDataTreeModel pTreeModel, OjbMetaRootNode pparent,
040: ClassDescriptor pCld) {
041: super (pRepository, pTreeModel, pparent);
042: this .cld = pCld;
043: }
044:
045: public boolean getAllowsChildren() {
046: return true;
047: }
048:
049: public Object getAttribute(String key) {
050: return null;
051: }
052:
053: public Class getPropertyEditorClass() {
054: return null;
055: }
056:
057: public boolean isLeaf() {
058: return false;
059: }
060:
061: public void setAttribute(String key, Object value) {
062:
063: }
064:
065: /** Purpose of this method is to fill the children of the node. It should
066: * replace all children in alChildren (the arraylist containing the children)
067: * of this node and notify the TreeModel that a change has occurred.
068: */
069: protected boolean _load() {
070: java.util.ArrayList newChildren = new java.util.ArrayList();
071:
072: /* @todo make this work */
073: // if (cld.getConnectionDescriptor() != null)
074: // {
075: // newChildren.add(new OjbMetaJdbcConnectionDescriptorNode(
076: // this.getOjbMetaTreeModel().getRepository(),
077: // this.getOjbMetaTreeModel(),
078: // this,
079: // cld.getConnectionDescriptor()));
080: // }
081: //
082: // Add collection descriptors
083: java.util.Iterator it = cld.getCollectionDescriptors()
084: .iterator();
085: while (it.hasNext()) {
086: CollectionDescriptor collDesc = (CollectionDescriptor) it
087: .next();
088: newChildren.add(new OjbMetaCollectionDescriptorNode(this
089: .getOjbMetaTreeModel().getRepository(), this
090: .getOjbMetaTreeModel(), this , collDesc));
091:
092: }
093:
094: // Add extent classes Class
095:
096: it = cld.getExtentClassNames().iterator();
097: while (it.hasNext()) {
098: String extentClassName = (String) it.next();
099: newChildren.add(new OjbMetaExtentClassNode(this
100: .getOjbMetaTreeModel().getRepository(), this
101: .getOjbMetaTreeModel(), this , extentClassName));
102:
103: }
104:
105: // Get Field descriptors FieldDescriptor
106: if (cld.getFieldDescriptions() != null) {
107: it = new ArrayIterator(cld.getFieldDescriptions());
108: while (it.hasNext()) {
109: FieldDescriptor fieldDesc = (FieldDescriptor) it.next();
110: newChildren.add(new OjbMetaFieldDescriptorNode(this
111: .getOjbMetaTreeModel().getRepository(), this
112: .getOjbMetaTreeModel(), this , fieldDesc));
113: }
114: } else {
115: System.out.println(cld.getClassNameOfObject()
116: + " does not have field descriptors");
117: }
118:
119: // Get Indices IndexDescriptor
120: it = cld.getIndexes().iterator();
121: while (it.hasNext()) {
122: IndexDescriptor indexDesc = (IndexDescriptor) it.next();
123: newChildren.add(new OjbMetaIndexDescriptorNode(this
124: .getOjbMetaTreeModel().getRepository(), this
125: .getOjbMetaTreeModel(), this , indexDesc));
126:
127: }
128:
129: // Get references ObjectReferenceDescriptor
130: it = cld.getObjectReferenceDescriptors().iterator();
131: while (it.hasNext()) {
132: ObjectReferenceDescriptor objRefDesc = (ObjectReferenceDescriptor) it
133: .next();
134: newChildren.add(new OjbMetaObjectReferenceDescriptorNode(
135: this .getOjbMetaTreeModel().getRepository(), this
136: .getOjbMetaTreeModel(), this , objRefDesc));
137:
138: }
139: // Add
140: this .alChildren = newChildren;
141: this .getOjbMetaTreeModel().nodeStructureChanged(this );
142: return true;
143: }
144:
145: public String toString() {
146: return "ClassDescriptor:" + this .cld.getClassNameOfObject();
147: // return "ClassDescriptor:" + this.cld.getClassOfObject().getName();
148: }
149:
150: /**
151: * @see org.apache.ojb.tools.mapping.reversedb2.ActionTarget#getActions()
152: */
153: public java.util.Iterator getActions() {
154: return supportedActions.iterator();
155: }
156:
157: /**
158: * @see org.apache.ojb.tools.mapping.reversedb2.ActionTarget#actionListCachable()
159: */
160: public boolean actionListCachable() {
161: return true;
162: }
163:
164: public boolean actionListStatic() {
165: return true;
166: }
167:
168: /** Adds <code>child</code> to the receiver at <code>index</code>.
169: * <code>child</code> will be messaged with <code>setParent</code>.
170: *
171: */
172: public void insert(javax.swing.tree.MutableTreeNode child, int index) {
173: }
174:
175: /** Removes <code>node</code> from the receiver. <code>setParent</code>
176: * will be messaged on <code>node</code>.
177: *
178: */
179: public void remove(javax.swing.tree.MutableTreeNode node) {
180: }
181:
182: /** Removes the child at <code>index</code> from the receiver.
183: *
184: */
185: public void remove(int index) {
186: }
187:
188: /** Removes the receiver from its parent.
189: *
190: */
191: public void removeFromParent() {
192: }
193:
194: /** Sets the parent of the receiver to <code>newParent</code>.
195: *
196: */
197: public void setParent(javax.swing.tree.MutableTreeNode newParent) {
198: }
199:
200: /** Resets the user object of the receiver to <code>object</code>.
201: *
202: */
203: public void setUserObject(Object object) {
204: }
205:
206: /**
207: * Return the descriptor object this node is associated with. E.g. if the
208: * node displays a class descriptor, the ClassDescriptor describing the class
209: * should be returned. Used for creating a Transferable.
210: */
211: public Object getAssociatedDescriptor() {
212: return cld;
213: }
214:
215: }
|