svn commit: r14414 - trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: bobtarling
Date: 2008-04-19 18:03:44-0700
New Revision: 14414

Modified:
   trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java

Log:
All model elements can have a stereotype.

Model is a supertype of package.

Make use of hierarchy and so don't duplicate data.

Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java?view=diff&rev=14414&p1=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&p2=trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java&r1=14413&r2=14414
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	(original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	2008-04-19 18:03:44-0700
@@ -76,6 +76,7 @@
 import org.omg.uml.behavioralelements.commonbehavior.Stimulus;
 import org.omg.uml.behavioralelements.commonbehavior.SubsystemInstance;
 import org.omg.uml.behavioralelements.commonbehavior.TerminateAction;
+import org.omg.uml.behavioralelements.commonbehavior.UmlException;
 import org.omg.uml.behavioralelements.commonbehavior.UninterpretedAction;
 import org.omg.uml.behavioralelements.statemachines.CompositeState;
 import org.omg.uml.behavioralelements.statemachines.FinalState;
@@ -111,6 +112,7 @@
 import org.omg.uml.foundation.core.Element;
 import org.omg.uml.foundation.core.ElementResidence;
 import org.omg.uml.foundation.core.Enumeration;
+import org.omg.uml.foundation.core.EnumerationLiteral;
 import org.omg.uml.foundation.core.Feature;
 import org.omg.uml.foundation.core.Flow;
 import org.omg.uml.foundation.core.GeneralizableElement;
@@ -178,8 +180,8 @@
      * A map of the valid model elements that are valid to be contained 
      * by other model elements.
      */
-    private HashMap<Object, Object[]> validContainmentMap = 
-        new HashMap<Object, Object[]>();
+    private HashMap<Class<?>, Class<?>[]> validContainmentMap = 
+        new HashMap<Class<?>, Class<?>[]>();
 
     /**
      * The instance that we are deleting.
@@ -316,81 +318,77 @@
     private void buildValidContainmentMap() {
        
         validContainmentMap.clear();
+
+        validContainmentMap.put(ModelElement.class, 
+                new Class<?>[] {
+                    Stereotype.class
+                });
         
         // specifies valid elements for a Model to contain 
-        validContainmentMap.put(metaTypes.getModel(), 
-            new Object[] {
-                metaTypes.getPackage(), metaTypes.getActor(), 
-                metaTypes.getUseCase(), metaTypes.getUMLClass(), 
-                metaTypes.getInterface(), metaTypes.getComponent(), 
-                metaTypes.getComponentInstance(), metaTypes.getNode(), 
-                metaTypes.getNodeInstance(), metaTypes.getStereotype(),
-                metaTypes.getEnumeration(), metaTypes.getDataType(),
-                metaTypes.getException(), metaTypes.getSignal()
+        validContainmentMap.put(org.omg.uml.modelmanagement.Model.class,
+            new Class<?>[] {
+                ComponentInstance.class, NodeInstance.class
             });
 
         // specifies valid elements for a Package to contain
-        validContainmentMap.put(metaTypes.getPackage(), 
-            new Object[] {
-                metaTypes.getPackage(), metaTypes.getActor(), 
-                metaTypes.getUseCase(), metaTypes.getUMLClass(), 
-                metaTypes.getInterface(), metaTypes.getComponent(), 
-                metaTypes.getNode(), metaTypes.getStereotype(),
-                metaTypes.getEnumeration(), metaTypes.getDataType(),
-                metaTypes.getException(), metaTypes.getSignal()
+        validContainmentMap.put(UmlPackage.class, 
+            new Class<?>[] {
+                UmlPackage.class, Actor.class,
+                UseCase.class, UmlClass.class,
+                Interface.class, Component.class,
+                Node.class,
+                Enumeration.class, DataType.class,
+                Exception.class, Signal.class
             });
                 
         // specifies valid elements for a class to contain
-        validContainmentMap.put(metaTypes.getUMLClass(), 
-            new Object[] { 
-                metaTypes.getAttribute(), metaTypes.getOperation(), 
-                metaTypes.getUMLClass(), metaTypes.getReception(), 
-                metaTypes.getStereotype() 
+        validContainmentMap.put(UmlClass.class, 
+            new Class<?>[] { 
+                Attribute.class, Operation.class,
+                UmlClass.class, Reception.class
             });
         
         // specifies valid elements for an Interface to contain
-        validContainmentMap.put(metaTypes.getInterface(), 
-                new Object[] { 
-                    metaTypes.getOperation(), metaTypes.getReception(), 
-                    metaTypes.getStereotype() 
+        validContainmentMap.put(Interface.class, 
+                new Class<?>[] { 
+                    Operation.class, Reception.class
                 });
         
         // specifies valid elements for an Actor to contain
-        validContainmentMap.put(metaTypes.getActor(), 
-            new Object[] { 
-                metaTypes.getReception(), metaTypes.getStereotype() 
+        validContainmentMap.put(Actor.class, 
+            new Class<?>[] { 
+                Reception.class
             });
         
         // specifies valid elements for a Use Case to contain
-        validContainmentMap.put(metaTypes.getUseCase(), 
-            new Object[] { 
-                metaTypes.getExtensionPoint(), metaTypes.getAttribute(), 
-                metaTypes.getOperation(), metaTypes.getReception(), 
-                metaTypes.getStereotype() 
+        validContainmentMap.put(UseCase.class, 
+            new Class<?>[] { 
+                ExtensionPoint.class, Attribute.class, 
+                Operation.class, Reception.class
             });
         
         // specifies valid elements for a Component to contain
-        validContainmentMap.put(metaTypes.getComponent(), 
-            new Object[] { 
-                metaTypes.getReception(), metaTypes.getStereotype() 
+        validContainmentMap.put(Component.class, 
+            new Class<?>[] { 
+                Reception.class
             });
         
         // specifies valid elements for a Node to contain
-        validContainmentMap.put(metaTypes.getNode(), 
-                new Object[] { 
-                    metaTypes.getReception(), metaTypes.getStereotype() 
+        validContainmentMap.put(Node.class, 
+                new Class<?>[] { 
+                    Reception.class
                 });
         
         // specifies valid elements for a Enumeration to contain
-        validContainmentMap.put(metaTypes.getEnumeration(), 
-                new Object[] { 
-                    metaTypes.getEnumerationLiteral(), metaTypes.getOperation() 
+        validContainmentMap.put(Enumeration.class, 
+                new Class<?>[] { 
+                    EnumerationLiteral.class, Operation.class 
                 });
         
         // specifies valid elements for a DataType to contain
-        validContainmentMap.put(metaTypes.getDataType(), 
-                new Object[] { 
-                    metaTypes.getOperation() 
+        validContainmentMap.put(DataType.class, 
+                new Class<?>[] { 
+                    Operation.class 
                 });
     }
         
@@ -633,19 +631,18 @@
     public boolean isContainmentValid(Object metaType, Object container) {
         
         // find the passed in container in validContainmentMap
-        for (Object containerType : validContainmentMap.keySet()) {
+        for (Class<?> containerType : validContainmentMap.keySet()) {
             
-            if (((Class<?>) containerType).isInstance(container))
-            {   // determine if metaType is a valid element for container
-                Object[] validElements = validContainmentMap.get(containerType);
+            if (containerType.isInstance(container)) {
+                // determine if metaType is a valid element for container
+                Class<?>[] validElements = validContainmentMap.get(containerType);
                 
                 for (int eIter = 0; eIter < validElements.length; ++eIter) {
                     
-                    if (metaType == validElements[eIter])
+                    if (metaType == validElements[eIter]) {
                         return true;
+                    }
                 }
-                
-                break;
             }
         }
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.