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]].

Reply via email to