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; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
