/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.diagram.ui.notation.uml.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.teiid.designer.core.metamodel.aspect.uml.UmlAssociation; import org.teiid.designer.ui.viewsupport.ModelObjectUtilities; /** * @author mdrilling * * Model Node for UML Association. * * @since 8.0 */ public class UmlAssociationNode extends UmlModelNode { public static final int SOURCE = 0; public static final int TARGET = 1; public UmlAssociationNode( EObject modelObject, UmlAssociation aspect ) { super(modelObject, aspect ); } @Override public String getName() { if( getModelObject() != null ) return aspect.getSignature(getModelObject(),UmlAssociation.SIGNATURE_NAME); return null; } @Override public void setName(String name) { // aspect.setSignature(getModelObject(),name); ModelObjectUtilities.rename(getModelObject(), name, this); // super.setName(name); } @Override public String toString() { return "UmlAssociationNode(" + getName() + ")"; //$NON-NLS-1$ //$NON-NLS-2$ } public String getSignature() { if( getModelObject() != null ) return ((UmlAssociation)aspect).getSignature(getModelObject(),UmlAssociation.SIGNATURE_NAME); return null; } public void refreshForNameChange(){ if( getDiagramModelObject() != null ) { String oldName = "xxxXxxx"; //$NON-NLS-1$ String signature = getSignature(); getDiagramModelObject().setName(signature); firePropertyChange(DiagramNodeProperties.NAME, oldName, signature); } else firePropertyChange(DiagramNodeProperties.NAME, null, null); } @Override public List getDependencies() { List dependentObjects = new ArrayList(); // we have a UmlAssociation here let's get some end info here... if( getModelObject() != null ) { UmlAssociation umlAspect = (UmlAssociation)aspect; EObject targetEnd = umlAspect.getEnd(getModelObject(), TARGET); EObject sourceEnd = umlAspect.getEnd(getModelObject(), SOURCE); if( targetEnd == null || targetEnd.equals(getModelObject()) ) { if( sourceEnd != null ) { dependentObjects.add(sourceEnd); } } else { dependentObjects.add(targetEnd); } // Add feature properties. if( targetEnd != null ) { List featureEObjects = ModelObjectUtilities.getFeaturePropertyList(targetEnd); dependentObjects.addAll(featureEObjects); } if( sourceEnd != null ) { List featureEObjects = ModelObjectUtilities.getFeaturePropertyList(sourceEnd); dependentObjects.addAll(featureEObjects); } if( targetEnd == null && sourceEnd == null ) { List featureEObjects = ModelObjectUtilities.getFeaturePropertyList(getModelObject()); dependentObjects.addAll(featureEObjects); } } if( dependentObjects.isEmpty() ) return Collections.EMPTY_LIST; return dependentObjects; } }