Author: bobtarling
Date: 2011-05-19 03:53:29-0700
New Revision: 19466

Modified:
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/MetaTypesEUMLImpl.java
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/MetaTypesMDRImpl.java
   trunk/src/argouml-core-model/src/org/argouml/model/MetaTypes.java

Log:
Implement MetaTpes.getAllMetaTypes

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=19466&r1=19465&r2=19466
==============================================================================
--- 
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-19 03:53:29-0700
@@ -14,6 +14,9 @@
 
 package org.argouml.model.euml;
 
+import java.util.ArrayList;
+import java.util.Collection;
+
 import org.argouml.model.MetaTypes;
 import org.argouml.model.NotImplementedException;
 import org.eclipse.uml2.uml.Abstraction;
@@ -52,6 +55,7 @@
 import org.eclipse.uml2.uml.ElementImport;
 import org.eclipse.uml2.uml.Enumeration;
 import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.Event;
 import org.eclipse.uml2.uml.ExpansionNode;
 import org.eclipse.uml2.uml.Expression;
 import org.eclipse.uml2.uml.Extend;
@@ -75,6 +79,7 @@
 import org.eclipse.uml2.uml.Namespace;
 import org.eclipse.uml2.uml.Node;
 import org.eclipse.uml2.uml.ObjectFlow;
+import org.eclipse.uml2.uml.OpaqueBehavior;
 import org.eclipse.uml2.uml.OpaqueExpression;
 import org.eclipse.uml2.uml.Operation;
 import org.eclipse.uml2.uml.OutputPin;
@@ -100,6 +105,7 @@
 import org.eclipse.uml2.uml.TemplateParameter;
 import org.eclipse.uml2.uml.TemplateParameterSubstitution;
 import org.eclipse.uml2.uml.TimeEvent;
+import org.eclipse.uml2.uml.TimeExpression;
 import org.eclipse.uml2.uml.Transition;
 import org.eclipse.uml2.uml.Usage;
 import org.eclipse.uml2.uml.UseCase;
@@ -117,6 +123,78 @@
      */
     private EUMLModelImplementation modelImpl;
 
+    private static final Collection<Class<?>> allMetaTypes;
+    static {
+        // TODO: Bob says - how can we auto-generate this list?
+        allMetaTypes = new ArrayList<Class<?>>(125);
+        allMetaTypes.add(AcceptEventAction.class);
+        allMetaTypes.add(Action.class);
+        allMetaTypes.add(ActivityParameterNode.class);
+        allMetaTypes.add(Actor.class);
+        allMetaTypes.add(Artifact.class);
+        allMetaTypes.add(AssociationClass.class);
+        allMetaTypes.add(Association.class);
+        allMetaTypes.add(BehavioralFeature.class);
+        allMetaTypes.add(CallAction.class);
+        allMetaTypes.add(CallBehaviorAction.class);
+        allMetaTypes.add(CallEvent.class);
+        allMetaTypes.add(CentralBufferNode.class);
+        allMetaTypes.add(ChangeEvent.class);
+        allMetaTypes.add(org.eclipse.uml2.uml.Class.class);
+        allMetaTypes.add(Classifier.class);
+        allMetaTypes.add(Collaboration.class);
+        allMetaTypes.add(Comment.class);
+        allMetaTypes.add(Component.class);
+        allMetaTypes.add(Constraint.class);
+        allMetaTypes.add(ControlFlow.class);
+        allMetaTypes.add(CreateObjectAction.class);
+        allMetaTypes.add(DataStoreNode.class);
+        allMetaTypes.add(DataType.class);
+        allMetaTypes.add(Dependency.class);
+        allMetaTypes.add(DestroyObjectAction.class);
+        allMetaTypes.add(Element.class);
+        allMetaTypes.add(Enumeration.class);
+        allMetaTypes.add(EnumerationLiteral.class);
+        allMetaTypes.add(Event.class);
+        allMetaTypes.add(Expression.class);
+        allMetaTypes.add(Extend.class);
+        allMetaTypes.add(ExtensionPoint.class);
+        allMetaTypes.add(Feature.class);
+        allMetaTypes.add(FinalState.class);
+        allMetaTypes.add(Generalization.class);
+        allMetaTypes.add(Include.class);
+        allMetaTypes.add(InstanceSpecification.class);
+        allMetaTypes.add(Interaction.class);
+        allMetaTypes.add(Interface.class);
+        allMetaTypes.add(Message.class);
+        allMetaTypes.add(Model.class);
+        allMetaTypes.add(Namespace.class);
+        allMetaTypes.add(Node.class);
+        allMetaTypes.add(ObjectFlow.class);
+        allMetaTypes.add(OpaqueBehavior.class);
+        allMetaTypes.add(Operation.class);
+        allMetaTypes.add(org.eclipse.uml2.uml.Package.class);
+        allMetaTypes.add(Profile.class);
+        allMetaTypes.add(Property.class);
+        allMetaTypes.add(Pseudostate.class);
+        allMetaTypes.add(Parameter.class);
+        allMetaTypes.add(Reception.class);
+        allMetaTypes.add(Region.class);
+        allMetaTypes.add(Relationship.class);
+        allMetaTypes.add(SendSignalAction.class);
+        allMetaTypes.add(Signal.class);
+        allMetaTypes.add(SignalEvent.class);
+        allMetaTypes.add(State.class);
+        allMetaTypes.add(StateMachine.class);
+        allMetaTypes.add(Stereotype.class);
+        allMetaTypes.add(StructuralFeature.class);
+        allMetaTypes.add(TimeEvent.class);
+        allMetaTypes.add(TimeExpression.class);
+        allMetaTypes.add(Transition.class);
+        allMetaTypes.add(Usage.class);
+        allMetaTypes.add(UseCase.class);
+    }
+    
     /**
      * Constructor.
      * 
@@ -126,6 +204,10 @@
     public MetaTypesEUMLImpl(EUMLModelImplementation implementation) {
         modelImpl = implementation;
     }
+    
+    public Collection getAllMetaTypes() {
+        return allMetaTypes;
+    }
 
     public Object getAbstraction() {
         return Abstraction.class;

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=19466&r1=19465&r2=19466
==============================================================================
--- 
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-19 03:53:29-0700
@@ -38,6 +38,9 @@
 
 package org.argouml.model.mdr;
 
+import java.util.ArrayList;
+import java.util.Collection;
+
 import javax.jmi.model.PrimitiveType;
 
 import org.argouml.model.MetaTypes;
@@ -102,6 +105,7 @@
 import org.omg.uml.behavioralelements.usecases.ExtensionPoint;
 import org.omg.uml.behavioralelements.usecases.Include;
 import org.omg.uml.behavioralelements.usecases.UseCase;
+import org.omg.uml.behavioralelements.usecases.UseCaseInstance;
 import org.omg.uml.foundation.core.Abstraction;
 import org.omg.uml.foundation.core.Artifact;
 import org.omg.uml.foundation.core.AssociationClass;
@@ -131,6 +135,8 @@
 import org.omg.uml.foundation.core.Operation;
 import org.omg.uml.foundation.core.Parameter;
 import org.omg.uml.foundation.core.Permission;
+import org.omg.uml.foundation.core.PresentationElement;
+import org.omg.uml.foundation.core.ProgrammingLanguageDataType;
 import org.omg.uml.foundation.core.Relationship;
 import org.omg.uml.foundation.core.Stereotype;
 import org.omg.uml.foundation.core.StructuralFeature;
@@ -143,14 +149,21 @@
 import org.omg.uml.foundation.core.Usage;
 import org.omg.uml.foundation.datatypes.ActionExpression;
 import org.omg.uml.foundation.datatypes.AggregationKind;
+import org.omg.uml.foundation.datatypes.ArgListsExpression;
 import org.omg.uml.foundation.datatypes.BooleanExpression;
 import org.omg.uml.foundation.datatypes.CallConcurrencyKind;
 import org.omg.uml.foundation.datatypes.Expression;
+import org.omg.uml.foundation.datatypes.IterationExpression;
+import org.omg.uml.foundation.datatypes.MappingExpression;
 import org.omg.uml.foundation.datatypes.Multiplicity;
 import org.omg.uml.foundation.datatypes.MultiplicityRange;
+import org.omg.uml.foundation.datatypes.ObjectSetExpression;
 import org.omg.uml.foundation.datatypes.ParameterDirectionKind;
+import org.omg.uml.foundation.datatypes.ProcedureExpression;
 import org.omg.uml.foundation.datatypes.PseudostateKind;
 import org.omg.uml.foundation.datatypes.ScopeKind;
+import org.omg.uml.foundation.datatypes.TimeExpression;
+import org.omg.uml.foundation.datatypes.TypeExpression;
 import org.omg.uml.foundation.datatypes.VisibilityKind;
 import org.omg.uml.modelmanagement.ElementImport;
 import org.omg.uml.modelmanagement.Model;
@@ -175,6 +188,134 @@
         // forbid instantiation
     }
     
+    private static final Collection<Class<?>> allMetaTypes;
+    static {
+        // TODO: Bob says - how can we auto-generate this list?
+        allMetaTypes = new ArrayList<Class<?>>(125);
+        allMetaTypes.add(Abstraction.class);
+        allMetaTypes.add(ActionSequence.class);
+        allMetaTypes.add(ActionState.class);
+        allMetaTypes.add(Actor.class);
+        allMetaTypes.add(ArgListsExpression.class);
+        allMetaTypes.add(Argument.class);
+        allMetaTypes.add(Artifact.class);
+        allMetaTypes.add(AssociationEnd.class);
+        allMetaTypes.add(AssociationEndRole.class);
+        allMetaTypes.add(AssociationRole.class);
+        allMetaTypes.add(AttributeLink.class);
+        allMetaTypes.add(Expression.class);
+        allMetaTypes.add(BooleanExpression.class);
+        allMetaTypes.add(Multiplicity.class);
+        allMetaTypes.add(MultiplicityRange.class);
+        allMetaTypes.add(TypeExpression.class);
+        allMetaTypes.add(MappingExpression.class);
+        allMetaTypes.add(ProcedureExpression.class);
+        allMetaTypes.add(ObjectSetExpression.class);
+        allMetaTypes.add(ActionExpression.class);
+        allMetaTypes.add(IterationExpression.class);
+        allMetaTypes.add(TimeExpression.class);
+        allMetaTypes.add(Element.class);
+        allMetaTypes.add(ModelElement.class);
+        allMetaTypes.add(GeneralizableElement.class);
+        allMetaTypes.add(Namespace.class);
+        allMetaTypes.add(Classifier.class);
+        allMetaTypes.add(UmlClass.class);
+        allMetaTypes.add(DataType.class);
+        allMetaTypes.add(Feature.class);
+        allMetaTypes.add(StructuralFeature.class);
+        allMetaTypes.add(Interface.class);
+        allMetaTypes.add(Constraint.class);
+        allMetaTypes.add(Relationship.class);
+        allMetaTypes.add(UmlAssociation.class);
+        allMetaTypes.add(Attribute.class);
+        allMetaTypes.add(BehavioralFeature.class);
+        allMetaTypes.add(Operation.class);
+        allMetaTypes.add(Parameter.class);
+        allMetaTypes.add(Method.class);
+        allMetaTypes.add(Generalization.class);
+        allMetaTypes.add(AssociationClass.class);
+        allMetaTypes.add(Dependency.class);
+        allMetaTypes.add(PresentationElement.class);
+        allMetaTypes.add(Usage.class);
+        allMetaTypes.add(Binding.class);
+        allMetaTypes.add(Component.class);
+        allMetaTypes.add(Node.class);
+        allMetaTypes.add(Permission.class);
+        allMetaTypes.add(Comment.class);
+        allMetaTypes.add(Flow.class);
+        allMetaTypes.add(ElementResidence.class);
+        allMetaTypes.add(Enumeration.class);
+        allMetaTypes.add(EnumerationLiteral.class);
+        allMetaTypes.add(Stereotype.class);
+        allMetaTypes.add(TagDefinition.class);
+        allMetaTypes.add(TaggedValue.class);
+        allMetaTypes.add(ProgrammingLanguageDataType.class);
+        allMetaTypes.add(TemplateArgument.class);
+        allMetaTypes.add(Instance.class);
+        allMetaTypes.add(Signal.class);
+        allMetaTypes.add(Action.class);
+        allMetaTypes.add(CreateAction.class);
+        allMetaTypes.add(DestroyAction.class);
+        allMetaTypes.add(UninterpretedAction.class);
+        allMetaTypes.add(Object.class);
+        allMetaTypes.add(Link.class);
+        allMetaTypes.add(LinkObject.class);
+        allMetaTypes.add(DataValue.class);
+        allMetaTypes.add(CallAction.class);
+        allMetaTypes.add(SendAction.class);
+        allMetaTypes.add(Reception.class);
+        allMetaTypes.add(LinkEnd.class);
+        allMetaTypes.add(ReturnAction.class);
+        allMetaTypes.add(TerminateAction.class);
+        allMetaTypes.add(Stimulus.class);
+        allMetaTypes.add(UmlException.class);
+        allMetaTypes.add(ComponentInstance.class);
+        allMetaTypes.add(NodeInstance.class);
+        allMetaTypes.add(SubsystemInstance.class);
+        allMetaTypes.add(UseCase.class);
+        allMetaTypes.add(UseCaseInstance.class);
+        allMetaTypes.add(Extend.class);
+        allMetaTypes.add(Include.class);
+        allMetaTypes.add(ExtensionPoint.class);
+        allMetaTypes.add(StateMachine.class);
+        allMetaTypes.add(Event.class);
+        allMetaTypes.add(StateVertex.class);
+        allMetaTypes.add(State.class);
+        allMetaTypes.add(TimeEvent.class);
+        allMetaTypes.add(CallEvent.class);
+        allMetaTypes.add(SignalEvent.class);
+        allMetaTypes.add(Transition.class);
+        allMetaTypes.add(CompositeState.class);
+        allMetaTypes.add(ChangeEvent.class);
+        allMetaTypes.add(Guard.class);
+        allMetaTypes.add(Pseudostate.class);
+        allMetaTypes.add(SimpleState.class);
+        allMetaTypes.add(SubmachineState.class);
+        allMetaTypes.add(SynchState.class);
+        allMetaTypes.add(StubState.class);
+        allMetaTypes.add(FinalState.class);
+        allMetaTypes.add(Collaboration.class);
+        allMetaTypes.add(ClassifierRole.class);
+        allMetaTypes.add(Message.class);
+        allMetaTypes.add(Interaction.class);
+        allMetaTypes.add(InteractionInstanceSet.class);
+        allMetaTypes.add(CollaborationInstanceSet.class);
+        allMetaTypes.add(ActivityGraph.class);
+        allMetaTypes.add(Partition.class);
+        allMetaTypes.add(SubactivityState.class);
+        allMetaTypes.add(CallState.class);
+        allMetaTypes.add(ObjectFlowState.class);
+        allMetaTypes.add(ClassifierInState.class);
+        allMetaTypes.add(UmlPackage.class);
+        allMetaTypes.add(Model.class);
+        allMetaTypes.add(Subsystem.class);
+        allMetaTypes.add(ElementImport.class);
+    };
+    
+    public Collection getAllMetaTypes() {
+        return allMetaTypes;
+    }
+    
     public String getName(Object modelElement) {
         Class<?> clazz;
         if (modelElement instanceof Class) {

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=19466&r1=19465&r2=19466
==============================================================================
--- 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-19 03:53:29-0700
@@ -38,6 +38,8 @@
 
 package org.argouml.model;
 
+import java.util.Collection;
+
 
 /**
  * This interface contains methods to retrieve objects that represent the
@@ -46,13 +48,20 @@
  *
  * TODO: There are parts of ArgoUML which assume that the objects returned
  * here are Classes.  We should formalize that by changing the return types to
- * match. tfm - 20070620
+ * match. tfm - 20070620 Bob says - there should be no such assumption in
+ * ArgoUML. Can we document where these are?
  * 
  * @see org.argouml.model.UmlFactory#buildConnection(
  *         Object, Object, Object, Object, Object, Object, Object)
  * @see org.argouml.model.UmlFactory#buildNode(Object)
  */
 public interface MetaTypes {
+    
+    /**
+     * Get all metatypes available in the model implementation
+     */
+    Collection getAllMetaTypes();
+    
     /**
      * Given a Element instance returns the name of its meta type.
      *

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

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

Reply via email to