View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.metafacades.uml14;
6   
7   import java.util.Collection;
8   import java.util.List;
9   import org.andromda.core.metafacade.MetafacadeBase;
10  import org.andromda.core.metafacade.ModelValidationMessage;
11  import org.andromda.metafacades.uml.ActivityGraphFacade;
12  import org.andromda.metafacades.uml.PartitionFacade;
13  import org.andromda.metafacades.uml.StateVertexFacade;
14  import org.apache.log4j.Logger;
15  import org.omg.uml.behavioralelements.activitygraphs.Partition;
16  
17  /**
18   * A representation of the model object 'Region'. An orthogonal part of either a composite state or
19   * a state machine. It contains states and transitions.
20   * MetafacadeLogic for PartitionFacade
21   *
22   * @see PartitionFacade
23   */
24  public abstract class PartitionFacadeLogic
25      extends ModelElementFacadeLogicImpl
26      implements PartitionFacade
27  {
28      /**
29       * The underlying UML object
30       * @see Partition
31       */
32      protected Partition metaObject;
33  
34      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
35       * @param metaObjectIn
36       * @param context
37       */
38      protected PartitionFacadeLogic(Partition metaObjectIn, String context)
39      {
40          super(metaObjectIn, getContext(context));
41          this.metaObject = metaObjectIn;
42      }
43  
44      /**
45       * The logger instance.
46       */
47      private static final Logger logger = Logger.getLogger(PartitionFacadeLogic.class);
48  
49      /**
50       * Gets the context for this metafacade logic instance.
51       * @param context String. Set to PartitionFacade if null
52       * @return context String
53       */
54      private static String getContext(String context)
55      {
56          if (context == null)
57          {
58              context = "org.andromda.metafacades.uml.PartitionFacade";
59          }
60          return context;
61      }
62  
63      /** Reset context only for non-root metafacades
64       * @param context
65       */
66      @Override
67      public void resetMetafacadeContext(String context)
68      {
69          if (!this.contextRoot) // reset context only for non-root metafacades
70          {
71              context = getContext(context);  // to have same value as in original constructor call
72              setMetafacadeContext (context);
73          }
74      }
75  
76      /**
77       * @return boolean true always
78       * @see PartitionFacade
79       */
80      public boolean isPartitionFacadeMetaType()
81      {
82          return true;
83      }
84  
85      // ------------- associations ------------------
86  
87      private Collection<StateVertexFacade> __getVertices1r;
88      private boolean __getVertices1rSet = false;
89  
90      /**
91       * The partition (if any) to which this vertex belongs.
92       * @return (Collection<StateVertexFacade>)handleGetVertices()
93       */
94      public final Collection<StateVertexFacade> getVertices()
95      {
96          Collection<StateVertexFacade> getVertices1r = this.__getVertices1r;
97          if (!this.__getVertices1rSet)
98          {
99              // partition has no pre constraints
100             Collection result = handleGetVertices();
101             List shieldedResult = this.shieldedElements(result);
102             try
103             {
104                 getVertices1r = (Collection<StateVertexFacade>)shieldedResult;
105             }
106             catch (ClassCastException ex)
107             {
108                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
109                 PartitionFacadeLogic.logger.warn("incorrect metafacade cast for PartitionFacadeLogic.getVertices Collection<StateVertexFacade> " + result + ": " + shieldedResult);
110             }
111             // partition has no post constraints
112             this.__getVertices1r = getVertices1r;
113             if (isMetafacadePropertyCachingEnabled())
114             {
115                 this.__getVertices1rSet = true;
116             }
117         }
118         return getVertices1r;
119     }
120 
121     /**
122      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
123      * @return  Collection
124      */
125     protected abstract Collection handleGetVertices();
126 
127     /**
128      * The set of partitions contained in this activity graph. Partitions are also known as
129      * swimlanes in UML.
130      * @return (ActivityGraphFacade)handleGetActivityGraph()
131      */
132     public final ActivityGraphFacade getActivityGraph()
133     {
134         ActivityGraphFacade getActivityGraph2r = null;
135         // partitions has no pre constraints
136         Object result = handleGetActivityGraph();
137         MetafacadeBase shieldedResult = this.shieldedElement(result);
138         try
139         {
140             getActivityGraph2r = (ActivityGraphFacade)shieldedResult;
141         }
142         catch (ClassCastException ex)
143         {
144             // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
145             PartitionFacadeLogic.logger.warn("incorrect metafacade cast for PartitionFacadeLogic.getActivityGraph ActivityGraphFacade " + result + ": " + shieldedResult);
146         }
147         // partitions has no post constraints
148         return getActivityGraph2r;
149     }
150 
151     /**
152      * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type
153      * @return Object
154      */
155     protected abstract Object handleGetActivityGraph();
156 
157     /**
158      * @param validationMessages Collection<ModelValidationMessage>
159      * @see ModelElementFacadeLogicImpl#validateInvariants(Collection validationMessages)
160      */
161     @Override
162     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
163     {
164         super.validateInvariants(validationMessages);
165     }
166 }