Author: bobtarling
Date: 2011-05-11 11:26:45-0700
New Revision: 19409

Modified:
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
   trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
   trunk/src/argouml-core-model/src/org/argouml/model/Facade.java
   trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java

Log:
Support for ComponentRealization

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
       (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreFactoryEUMLImpl.java
       2011-05-11 11:26:45-0700
@@ -31,6 +31,7 @@
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.ComponentRealization;
 import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.DataType;
 import org.eclipse.uml2.uml.Dependency;
@@ -716,6 +717,38 @@
         return (Dependency) run.getParams().get(0);
     }
 
+    public Dependency buildComponentRealization(final Object clientObj,
+            final Object supplierObj) {
+        if (!(clientObj instanceof NamedElement)
+                || !(supplierObj instanceof NamedElement)) {
+            throw new IllegalArgumentException(
+                    "The client and the supplier must be" //$NON-NLS-1$
+                            + " instances of NamedElement."); //$NON-NLS-1$
+        }
+        if (((NamedElement) clientObj).getNearestPackage() == null) {
+            throw new NullPointerException(
+                    "The containing package of the client must be non-null."); 
//$NON-NLS-1$
+        }
+        RunnableClass run = new RunnableClass() {
+            public void run() {
+                ComponentRealization dependency =
+                    UMLFactory.eINSTANCE.createComponentRealization();
+                dependency.getClients().add((NamedElement) clientObj);
+                dependency.getSuppliers().add((NamedElement) supplierObj);
+                ((NamedElement) clientObj).getNearestPackage()
+                        .getPackagedElements().add(dependency);
+                getParams().add(dependency);
+            }
+        };
+        ChangeCommand cmd = new ChangeCommand(
+                modelImpl, run, "Create the component realization # between 
the"
+                        + " client # and the supplier #");
+        editingDomain.getCommandStack().execute(cmd);
+        cmd.setObjects(run.getParams().get(0), clientObj, supplierObj);
+
+        return (ComponentRealization) run.getParams().get(0);
+    }
+    
     public Object buildElementResidence(Object me, Object component) {
         // TODO: Is this removed from UML2 ?
         throw new NotImplementedException();

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
    (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/FacadeEUMLImpl.java
    2011-05-11 11:26:45-0700
@@ -1932,6 +1932,10 @@
         return false;
     }
 
+    public boolean isAComponentRealization(Object handle) {
+        return handle instanceof ComponentRealization;
+    }
+
     public boolean isACompositeState(Object handle) {
         return (handle instanceof State && ((State) handle).isComposite());
     }

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java
 (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java
 2011-05-11 11:26:45-0700
@@ -1,6 +1,6 @@
 // $Id$
 
/*******************************************************************************
- * Copyright (c) 2007,2010 Tom Morris and other contributors
+ * Copyright (c) 2007-2011 Tom Morris and other contributors
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -8,7 +8,8 @@
  *
  * Contributors:
  *    Tom Morris - initial implementation
- *    thn
+ *    Thomas Neustupny
+ *    Bob Tarling
  *****************************************************************************/
 
 package org.argouml.model.euml;
@@ -39,6 +40,7 @@
 import org.eclipse.uml2.uml.Collaboration;
 import org.eclipse.uml2.uml.Comment;
 import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.ComponentRealization;
 import org.eclipse.uml2.uml.Constraint;
 import org.eclipse.uml2.uml.ControlFlow;
 import org.eclipse.uml2.uml.CreateObjectAction;
@@ -70,7 +72,6 @@
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Node;
 import org.eclipse.uml2.uml.ObjectFlow;
-import org.eclipse.uml2.uml.ObjectNode;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.OutputPin;
 import org.eclipse.uml2.uml.PackageImport;
@@ -251,14 +252,18 @@
     }
 
     public Object getComponentInstance() {
-        // TODO: Gone in UML 2.x
-        // return place holder for now
-        return InstanceSpecification.class;
+        throw new NotImplementedException(
+            "This is not a UML2 element"); //$NON-NLS-1$
+    }
+
+    public Object getComponentRealization() {
+        return ComponentRealization.class;
     }
 
     public Object getCompositeState() {
-        // TODO: no separate CompositeState in UML 2.1 - tfm
         return State.class;
+//        throw new NotImplementedException(
+//            "This is not a UML2 element"); //$NON-NLS-1$
     }
     
     public Object getConstraint() {
@@ -270,7 +275,8 @@
     }
 
     public Object getCreateAction() {
-        throw new NotImplementedException("This is not a UML2 element"); 
//$NON-NLS-1$
+        throw new NotImplementedException(
+                "This is not a UML2 element"); //$NON-NLS-1$
     }
 
     public Object getCreateObjectAction() {

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
        (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
        2011-05-11 11:26:45-0700
@@ -42,6 +42,7 @@
 import org.eclipse.uml2.uml.AssociationClass;
 import org.eclipse.uml2.uml.Classifier;
 import org.eclipse.uml2.uml.Component;
+import org.eclipse.uml2.uml.ComponentRealization;
 import org.eclipse.uml2.uml.ControlFlow;
 import org.eclipse.uml2.uml.ControlNode;
 import org.eclipse.uml2.uml.DataType;
@@ -142,6 +143,7 @@
     //       Update for UML 2.x metamodel if not replaced by reflection
     private static final Class[][] VALID_CONNECTIONS = {
         {Generalization.class,   Classifier.class, },
+        {ComponentRealization.class, Element.class, Component.class},
         {Dependency.class,       Element.class, },
         // Although Usage & Permission are Dependencies, they need to
         // be include separately because of the way lookup works
@@ -191,14 +193,11 @@
             Object unidirectional, Object namespace)
             throws IllegalModelElementConnectionException {
 
-        IllegalModelElementConnectionException exception = 
-            new IllegalModelElementConnectionException(
-                "Cannot make a " + elementType.getClass().getName() 
//$NON-NLS-1$
-                        + " between a " + fromElement.getClass().getName() 
//$NON-NLS-1$
-                        + " and a " + toElement.getClass().getName()); 
//$NON-NLS-1$
-
         if (!isConnectionValid(elementType, fromElement, toElement, true)) {
-            throw exception;
+            throw new IllegalModelElementConnectionException(
+                    "Cannot make a " + elementType.getClass().getName() 
//$NON-NLS-1$
+                            + " between a " + fromElement.getClass().getName() 
//$NON-NLS-1$
+                            + " and a " + toElement.getClass().getName()); 
//$NON-NLS-1$
         }
 
         Object connection = null;
@@ -233,6 +232,9 @@
         } else if (elementType == metaTypes.getUsage()) {
             connection = modelImpl.getCoreFactory().buildUsage(
                     fromElement, toElement);
+        } else if (elementType == metaTypes.getComponentRealization()) {
+            connection = modelImpl.getCoreFactory().buildComponentRealization(
+                    fromElement, toElement);
         } else if (elementType == metaTypes.getDependency()) {
             connection = modelImpl.getCoreFactory().buildDependency(
                     fromElement, toElement);
@@ -272,7 +274,10 @@
         }
 
         if (connection == null) {
-            throw exception;
+            throw new IllegalModelElementConnectionException(
+                    "Cannot make a " + elementType.getClass().getName() 
//$NON-NLS-1$
+                            + " between a " + fromElement.getClass().getName() 
//$NON-NLS-1$
+                            + " and a " + toElement.getClass().getName()); 
//$NON-NLS-1$
         }
 
         return connection;

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java   
    (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/FacadeMDRImpl.java   
    2011-05-11 11:26:45-0700
@@ -419,6 +419,10 @@
         return handle instanceof ComponentInstance;
     }
 
+    public boolean isAComponentRealization(Object handle) {
+        return false;
+    }
+
     public boolean isAConstraint(Object handle) {
         return handle instanceof Constraint;
     }

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
    (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
    2011-05-11 11:26:45-0700
@@ -328,6 +328,10 @@
         return ComponentInstance.class;
     }
 
+    public Object getComponentRealization() {
+        throw new NotImplementedException("This is not a UML1.4 class");
+    }
+
     public Object getCompositeState() {
         return CompositeState.class;
     }

Modified: trunk/src/argouml-core-model/src/org/argouml/model/Facade.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/Facade.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/Facade.java      
(original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/Facade.java      
2011-05-11 11:26:45-0700
@@ -473,6 +473,14 @@
     boolean isAComponentInstance(Object handle);
 
     /**
+     * Recognizer for ComponentRealization.
+     *
+     * @param handle candidate
+     * @return true if handle is a ComponentRealization
+     */
+    boolean isAComponentRealization(Object handle);
+
+    /**
      * Recognizer for Constraint.
      *
      * @param handle candidate

Modified: trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java?view=diff&pathrev=19409&r1=19408&r2=19409
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java   
(original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java   
2011-05-11 11:26:45-0700
@@ -215,6 +215,11 @@
     Object getComponent();
 
     /**
+     * @return Returns the Component.
+     */
+    Object getComponentRealization();
+
+    /**
      * @return Returns the ComponentInstance.
      */
     Object getComponentInstance();

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2734460

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to