/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * ObjectAttributeNode.java * * Created on 3. Juni 2004, 15:06 */ package Sirius.navigator.ui.attributes; import Sirius.navigator.connection.*; import Sirius.navigator.resource.ResourceManager; import Sirius.navigator.types.iterator.AttributeIterator; import Sirius.navigator.types.iterator.AttributeRestriction; import Sirius.navigator.types.iterator.SimpleAttributeRestriction; import Sirius.navigator.types.iterator.SingleAttributeIterator; import Sirius.navigator.types.treenode.ClassTreeNode; import Sirius.navigator.types.treenode.ObjectTreeNode; import Sirius.server.localserver.attribute.Attribute; import Sirius.server.middleware.types.*; import java.util.*; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.tree.DefaultMutableTreeNode; /** * DOCUMENT ME! * * @author pascal * @version $Revision$, $Date$ */ public class ObjectAttributeNode extends AttributeNode { //~ Static fields/initializers --------------------------------------------- private static final ResourceManager resource = ResourceManager.getManager(); //~ Instance fields -------------------------------------------------------- private final MetaObject MetaObject; private final Icon icon; private final SingleAttributeIterator attributeIterator; //~ Constructors ----------------------------------------------------------- /** * Creates a new ObjectAttributeNode object. * * @param name DOCUMENT ME! * @param ignoreSubstitute DOCUMENT ME! * @param ignoreArrayHelperObjects DOCUMENT ME! * @param ignoreInvisibleAttributes DOCUMENT ME! * @param MetaObject DOCUMENT ME! */ public ObjectAttributeNode(final String name, final boolean ignoreSubstitute, final boolean ignoreArrayHelperObjects, final boolean ignoreInvisibleAttributes, final MetaObject MetaObject) { this(name, ignoreSubstitute, ignoreArrayHelperObjects, ignoreInvisibleAttributes, name, MetaObject); } /** * Creates a new instance of ObjectAttributeNode. * * @param name DOCUMENT ME! * @param ignoreSubstitute DOCUMENT ME! * @param ignoreArrayHelperObjects DOCUMENT ME! * @param ignoreInvisibleAttributes DOCUMENT ME! * @param attributeId DOCUMENT ME! * @param MetaObject DOCUMENT ME! */ public ObjectAttributeNode(final String name, final boolean ignoreSubstitute, final boolean ignoreArrayHelperObjects, final boolean ignoreInvisibleAttributes, final Object attributeId, final MetaObject MetaObject) { super(name, ignoreSubstitute, ignoreArrayHelperObjects, ignoreInvisibleAttributes, attributeId); this.MetaObject = MetaObject; this.attributeIterator = new SingleAttributeIterator(this.objectAttributeRestriction, false); MetaClass tempClass = null; Collection attributeValues = null; // load class icon ... try { tempClass = SessionManager.getProxy().getMetaClass(MetaObject.getClassID(), MetaObject.getDomain()); } catch (Exception exp) { logger.error("could not load class for Object :" + MetaObject, exp); // NOI18N } // logger.fatal(name + " isArrayHelperObject: " + tempClass.isArrayElementLink()); if ((tempClass != null) && (tempClass.getIconData().length > 0)) { this.icon = new ImageIcon(tempClass.getIconData()); } else { this.icon = resource.getIcon("ClassNodeIcon.gif"); // NOI18N } // ignore array attribute nodes if ((tempClass != null) && this.ignoreArrayHelperObjects && tempClass.isArrayElementLink()) { if (logger.isDebugEnabled()) { logger.debug("addArrayAttributeNodes(): ignoring array helper objects '" + MetaObject.getName() + "'"); // NOI18N } final SingleAttributeIterator arrayAttributeIterator = new SingleAttributeIterator( this.objectAttributeRestriction, false); arrayAttributeIterator.init(MetaObject.getAttributes().values()); attributeValues = new LinkedList(); while (arrayAttributeIterator.hasNext()) { attributeValues.addAll(((MetaObject)arrayAttributeIterator.next().getValue()).getAttributes().values()); } } else { attributeValues = MetaObject.getAttributes().values(); } // load attributes ... if ((attributeValues != null) && !this.attributeIterator.init(attributeValues)) { logger.error("could not initialize attribute iterator"); // NOI18N } this.addAttributeNodes(this.attributeIterator); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public MetaObject getMetaObject() { return this.MetaObject; } @Override public Icon getIcon() { return this.icon; } @Override public java.util.Collection getAttributes() { return this.MetaObject.getAttributes().values(); } }