Author: bobtarling Date: 2011-05-11 11:27:52-0700 New Revision: 19410 Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
Log: Support for ComponentRealization Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java?view=diff&pathrev=19410&r1=19409&r2=19410 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/diagram/deployment/ui/UMLDeploymentDiagram.java 2011-05-11 11:27:52-0700 @@ -200,15 +200,15 @@ return actions; } else { final Object[] actions = { - getActionMNode(), - getActionMComponent(), - getActionMGeneralization(), - getActionMAbstraction(), - getActionMDependency(), - getAssociationActions(), - getActionMObject(), - getActionMLink(), - }; + getActionMNode(), + getActionMComponent(), + getActionMGeneralization(), + getActionMAbstraction(), + getActionMDependency(), + getAssociationActions(), + getActionMObject(), + getActionMLink(), + }; return actions; } } Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java?view=diff&pathrev=19410&r1=19409&r2=19410 ============================================================================== --- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java (original) +++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java 2011-05-11 11:27:52-0700 @@ -90,6 +90,7 @@ import org.argouml.model.AttributeChangeEvent; import org.argouml.model.DeleteInstanceEvent; import org.argouml.model.DiElement; +import org.argouml.model.IllegalModelElementConnectionException; import org.argouml.model.InvalidElementException; import org.argouml.model.Model; import org.argouml.model.UmlChangeEvent; @@ -845,25 +846,50 @@ assert Model.getFacade().isAComponent(component); assert Model.getFacade().isAUMLElement(owner); - final Collection er1 = Model.getFacade().getElementResidences(owner); - final Collection er2 = Model.getFacade().getResidentElements(component); - boolean found = false; - // Find all ElementResidences between the class and the component: - final Collection<Object> common = new ArrayList<Object>(er1); - common.retainAll(er2); - for (Object elementResidence : common) { + if (Model.getFacade().getUmlVersion().startsWith("1")) { + final Collection er1 = Model.getFacade().getElementResidences(owner); + final Collection er2 = Model.getFacade().getResidentElements(component); + boolean found = false; + // Find all ElementResidences between the class and the component: + final Collection<Object> common = new ArrayList<Object>(er1); + common.retainAll(er2); + for (Object elementResidence : common) { + if (!found) { + found = true; + // There is already a correct ElementResidence + } else { + // There were 2 ElementResidences .. strange case. + Model.getUmlFactory().delete(elementResidence); + } + } if (!found) { - found = true; - // There is already a correct ElementResidence - } else { - // There were 2 ElementResidences .. strange case. - Model.getUmlFactory().delete(elementResidence); + // There was no ElementResidence yet, so let's create one: + Model.getCoreFactory().buildElementResidence( + owner, component); + } + } else { + Object namespace = Model.getFacade().getNamespace(component); + Collection deps = Model.getFacade().getClientDependencies(owner); + for (Object cr : deps) { + if (Model.getFacade().isAComponentRealization(cr)) { + Collection supps = Model.getFacade().getSuppliers(cr); + for (Object supp : supps) { + Object comp = Model.getFacade().getSuppliers(cr); + if (supp == component) { + // The owner is already linked to the component + return; + } + } + } + } + try { + Model.getUmlFactory().buildConnection( + Model.getMetaTypes().getComponentRealization(), + owner, null, component, + null, null, namespace); + } catch (IllegalModelElementConnectionException e) { + LOG.error("Exception", e); } - } - if (!found) { - // There was no ElementResidence yet, so let's create one: - Model.getCoreFactory().buildElementResidence( - owner, component); } } ------------------------------------------------------ http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2734461 To unsubscribe from this discussion, e-mail: [[email protected]].
