View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.jbpm.metafacades;
6   
7   import java.util.Collection;
8   import org.andromda.core.common.Introspector;
9   import org.andromda.core.metafacade.MetafacadeBase;
10  import org.andromda.core.metafacade.MetafacadeFactory;
11  import org.andromda.core.metafacade.ModelValidationMessage;
12  import org.andromda.metafacades.uml.CallEventFacade;
13  import org.andromda.metafacades.uml.ConstraintFacade;
14  import org.andromda.metafacades.uml.DependencyFacade;
15  import org.andromda.metafacades.uml.ModelElementFacade;
16  import org.andromda.metafacades.uml.ModelFacade;
17  import org.andromda.metafacades.uml.OperationFacade;
18  import org.andromda.metafacades.uml.PackageFacade;
19  import org.andromda.metafacades.uml.ParameterFacade;
20  import org.andromda.metafacades.uml.StateFacade;
21  import org.andromda.metafacades.uml.StateMachineFacade;
22  import org.andromda.metafacades.uml.StereotypeFacade;
23  import org.andromda.metafacades.uml.TaggedValueFacade;
24  import org.andromda.metafacades.uml.TemplateParameterFacade;
25  import org.andromda.metafacades.uml.TransitionFacade;
26  import org.andromda.metafacades.uml.TypeMappings;
27  import org.andromda.translation.ocl.validation.OCLCollections;
28  import org.andromda.translation.ocl.validation.OCLExpressions;
29  import org.andromda.translation.ocl.validation.OCLIntrospector;
30  import org.andromda.translation.ocl.validation.OCLResultEnsurer;
31  import org.apache.commons.collections.Predicate;
32  import org.apache.log4j.Logger;
33  
34  /**
35   * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction
36   * MetafacadeLogic for JBpmAction
37   *
38   * @see JBpmAction
39   */
40  public abstract class JBpmActionLogic
41      extends MetafacadeBase
42      implements JBpmAction
43  {
44      /**
45       * The underlying UML object
46       * @see Object
47       */
48      protected Object metaObject;
49  
50      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
51       * @param metaObjectIn
52       * @param context
53       */
54      protected JBpmActionLogic(Object metaObjectIn, String context)
55      {
56          super(metaObjectIn, getContext(context));
57          this.superCallEventFacade =
58             (CallEventFacade)
59              MetafacadeFactory.getInstance().createFacadeImpl(
60                      "org.andromda.metafacades.uml.CallEventFacade",
61                      metaObjectIn,
62                      getContext(context));
63          this.metaObject = metaObjectIn;
64      }
65  
66      /**
67       * The logger instance.
68       */
69      private static final Logger logger = Logger.getLogger(JBpmActionLogic.class);
70  
71      /**
72       * Gets the context for this metafacade logic instance.
73       * @param context String. Set to JBpmAction if null
74       * @return context String
75       */
76      private static String getContext(String context)
77      {
78          if (context == null)
79          {
80              context = "org.andromda.cartridges.jbpm.metafacades.JBpmAction";
81          }
82          return context;
83      }
84  
85      private CallEventFacade superCallEventFacade;
86      private boolean superCallEventFacadeInitialized = false;
87  
88      /**
89       * Gets the CallEventFacade parent instance.
90       * @return this.superCallEventFacade CallEventFacade
91       */
92      private CallEventFacade getSuperCallEventFacade()
93      {
94          if (!this.superCallEventFacadeInitialized)
95          {
96              ((MetafacadeBase)this.superCallEventFacade).setMetafacadeContext(this.getMetafacadeContext());
97              this.superCallEventFacadeInitialized = true;
98          }
99          return this.superCallEventFacade;
100     }
101 
102     /** Reset context only for non-root metafacades
103      * @param context
104      * @see MetafacadeBase#resetMetafacadeContext(String context)
105      */
106     @Override
107     public void resetMetafacadeContext(String context)
108     {
109         if (!this.contextRoot) // reset context only for non-root metafacades
110         {
111             context = getContext(context);  // to have same value as in original constructor call
112             setMetafacadeContext (context);
113             if (this.superCallEventFacadeInitialized)
114             {
115                 ((MetafacadeBase)this.superCallEventFacade).resetMetafacadeContext(context);
116             }
117         }
118     }
119 
120     /**
121      * @return boolean true always
122      * @see JBpmAction
123      */
124     public boolean isJBpmActionMetaType()
125     {
126         return true;
127     }
128 
129     // --------------- attributes ---------------------
130 
131    /**
132     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isBeforeSignal()
133     * @return boolean
134     */
135     protected abstract boolean handleIsBeforeSignal();
136 
137     private boolean __beforeSignal1a;
138     private boolean __beforeSignal1aSet = false;
139 
140     /**
141      * TODO: Model Documentation for
142      * org.andromda.cartridges.jbpm.metafacades.JBpmAction.beforeSignal
143      * @return (boolean)handleIsBeforeSignal()
144      */
145     public final boolean isBeforeSignal()
146     {
147         boolean beforeSignal1a = this.__beforeSignal1a;
148         if (!this.__beforeSignal1aSet)
149         {
150             // beforeSignal has no pre constraints
151             beforeSignal1a = handleIsBeforeSignal();
152             // beforeSignal has no post constraints
153             this.__beforeSignal1a = beforeSignal1a;
154             if (isMetafacadePropertyCachingEnabled())
155             {
156                 this.__beforeSignal1aSet = true;
157             }
158         }
159         return beforeSignal1a;
160     }
161 
162    /**
163     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isAfterSignal()
164     * @return boolean
165     */
166     protected abstract boolean handleIsAfterSignal();
167 
168     private boolean __afterSignal2a;
169     private boolean __afterSignal2aSet = false;
170 
171     /**
172      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.afterSignal
173      * @return (boolean)handleIsAfterSignal()
174      */
175     public final boolean isAfterSignal()
176     {
177         boolean afterSignal2a = this.__afterSignal2a;
178         if (!this.__afterSignal2aSet)
179         {
180             // afterSignal has no pre constraints
181             afterSignal2a = handleIsAfterSignal();
182             // afterSignal has no post constraints
183             this.__afterSignal2a = afterSignal2a;
184             if (isMetafacadePropertyCachingEnabled())
185             {
186                 this.__afterSignal2aSet = true;
187             }
188         }
189         return afterSignal2a;
190     }
191 
192    /**
193     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isNodeEnter()
194     * @return boolean
195     */
196     protected abstract boolean handleIsNodeEnter();
197 
198     private boolean __nodeEnter3a;
199     private boolean __nodeEnter3aSet = false;
200 
201     /**
202      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.nodeEnter
203      * @return (boolean)handleIsNodeEnter()
204      */
205     public final boolean isNodeEnter()
206     {
207         boolean nodeEnter3a = this.__nodeEnter3a;
208         if (!this.__nodeEnter3aSet)
209         {
210             // nodeEnter has no pre constraints
211             nodeEnter3a = handleIsNodeEnter();
212             // nodeEnter has no post constraints
213             this.__nodeEnter3a = nodeEnter3a;
214             if (isMetafacadePropertyCachingEnabled())
215             {
216                 this.__nodeEnter3aSet = true;
217             }
218         }
219         return nodeEnter3a;
220     }
221 
222    /**
223     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isNodeLeave()
224     * @return boolean
225     */
226     protected abstract boolean handleIsNodeLeave();
227 
228     private boolean __nodeLeave4a;
229     private boolean __nodeLeave4aSet = false;
230 
231     /**
232      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.nodeLeave
233      * @return (boolean)handleIsNodeLeave()
234      */
235     public final boolean isNodeLeave()
236     {
237         boolean nodeLeave4a = this.__nodeLeave4a;
238         if (!this.__nodeLeave4aSet)
239         {
240             // nodeLeave has no pre constraints
241             nodeLeave4a = handleIsNodeLeave();
242             // nodeLeave has no post constraints
243             this.__nodeLeave4a = nodeLeave4a;
244             if (isMetafacadePropertyCachingEnabled())
245             {
246                 this.__nodeLeave4aSet = true;
247             }
248         }
249         return nodeLeave4a;
250     }
251 
252    /**
253     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isTask()
254     * @return boolean
255     */
256     protected abstract boolean handleIsTask();
257 
258     private boolean __task5a;
259     private boolean __task5aSet = false;
260 
261     /**
262      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.task
263      * @return (boolean)handleIsTask()
264      */
265     public final boolean isTask()
266     {
267         boolean task5a = this.__task5a;
268         if (!this.__task5aSet)
269         {
270             // task has no pre constraints
271             task5a = handleIsTask();
272             // task has no post constraints
273             this.__task5a = task5a;
274             if (isMetafacadePropertyCachingEnabled())
275             {
276                 this.__task5aSet = true;
277             }
278         }
279         return task5a;
280     }
281 
282    /**
283     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isBlocking()
284     * @return boolean
285     */
286     protected abstract boolean handleIsBlocking();
287 
288     private boolean __blocking6a;
289     private boolean __blocking6aSet = false;
290 
291     /**
292      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.blocking
293      * @return (boolean)handleIsBlocking()
294      */
295     public final boolean isBlocking()
296     {
297         boolean blocking6a = this.__blocking6a;
298         if (!this.__blocking6aSet)
299         {
300             // blocking has no pre constraints
301             blocking6a = handleIsBlocking();
302             // blocking has no post constraints
303             this.__blocking6a = blocking6a;
304             if (isMetafacadePropertyCachingEnabled())
305             {
306                 this.__blocking6aSet = true;
307             }
308         }
309         return blocking6a;
310     }
311 
312    /**
313     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#getDueDate()
314     * @return String
315     */
316     protected abstract String handleGetDueDate();
317 
318     private String __dueDate7a;
319     private boolean __dueDate7aSet = false;
320 
321     /**
322      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.dueDate
323      * @return (String)handleGetDueDate()
324      */
325     public final String getDueDate()
326     {
327         String dueDate7a = this.__dueDate7a;
328         if (!this.__dueDate7aSet)
329         {
330             // dueDate has no pre constraints
331             dueDate7a = handleGetDueDate();
332             // dueDate has no post constraints
333             this.__dueDate7a = dueDate7a;
334             if (isMetafacadePropertyCachingEnabled())
335             {
336                 this.__dueDate7aSet = true;
337             }
338         }
339         return dueDate7a;
340     }
341 
342    /**
343     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#getClazz()
344     * @return String
345     */
346     protected abstract String handleGetClazz();
347 
348     private String __clazz8a;
349     private boolean __clazz8aSet = false;
350 
351     /**
352      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.clazz
353      * @return (String)handleGetClazz()
354      */
355     public final String getClazz()
356     {
357         String clazz8a = this.__clazz8a;
358         if (!this.__clazz8aSet)
359         {
360             // clazz has no pre constraints
361             clazz8a = handleGetClazz();
362             // clazz has no post constraints
363             this.__clazz8a = clazz8a;
364             if (isMetafacadePropertyCachingEnabled())
365             {
366                 this.__clazz8aSet = true;
367             }
368         }
369         return clazz8a;
370     }
371 
372    /**
373     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#getConfigType()
374     * @return String
375     */
376     protected abstract String handleGetConfigType();
377 
378     private String __configType9a;
379     private boolean __configType9aSet = false;
380 
381     /**
382      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.configType
383      * @return (String)handleGetConfigType()
384      */
385     public final String getConfigType()
386     {
387         String configType9a = this.__configType9a;
388         if (!this.__configType9aSet)
389         {
390             // configType has no pre constraints
391             configType9a = handleGetConfigType();
392             // configType has no post constraints
393             this.__configType9a = configType9a;
394             if (isMetafacadePropertyCachingEnabled())
395             {
396                 this.__configType9aSet = true;
397             }
398         }
399         return configType9a;
400     }
401 
402    /**
403     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isAssignment()
404     * @return boolean
405     */
406     protected abstract boolean handleIsAssignment();
407 
408     private boolean __assignment10a;
409     private boolean __assignment10aSet = false;
410 
411     /**
412      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.assignment
413      * @return (boolean)handleIsAssignment()
414      */
415     public final boolean isAssignment()
416     {
417         boolean assignment10a = this.__assignment10a;
418         if (!this.__assignment10aSet)
419         {
420             // assignment has no pre constraints
421             assignment10a = handleIsAssignment();
422             // assignment has no post constraints
423             this.__assignment10a = assignment10a;
424             if (isMetafacadePropertyCachingEnabled())
425             {
426                 this.__assignment10aSet = true;
427             }
428         }
429         return assignment10a;
430     }
431 
432    /**
433     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isTimer()
434     * @return boolean
435     */
436     protected abstract boolean handleIsTimer();
437 
438     private boolean __timer11a;
439     private boolean __timer11aSet = false;
440 
441     /**
442      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.timer
443      * @return (boolean)handleIsTimer()
444      */
445     public final boolean isTimer()
446     {
447         boolean timer11a = this.__timer11a;
448         if (!this.__timer11aSet)
449         {
450             // timer has no pre constraints
451             timer11a = handleIsTimer();
452             // timer has no post constraints
453             this.__timer11a = timer11a;
454             if (isMetafacadePropertyCachingEnabled())
455             {
456                 this.__timer11aSet = true;
457             }
458         }
459         return timer11a;
460     }
461 
462    /**
463     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#isContainedInBusinessProcess()
464     * @return boolean
465     */
466     protected abstract boolean handleIsContainedInBusinessProcess();
467 
468     private boolean __containedInBusinessProcess12a;
469     private boolean __containedInBusinessProcess12aSet = false;
470 
471     /**
472      * True if this element is part of a business process usecase.
473      * @return (boolean)handleIsContainedInBusinessProcess()
474      */
475     public final boolean isContainedInBusinessProcess()
476     {
477         boolean containedInBusinessProcess12a = this.__containedInBusinessProcess12a;
478         if (!this.__containedInBusinessProcess12aSet)
479         {
480             // containedInBusinessProcess has no pre constraints
481             containedInBusinessProcess12a = handleIsContainedInBusinessProcess();
482             // containedInBusinessProcess has no post constraints
483             this.__containedInBusinessProcess12a = containedInBusinessProcess12a;
484             if (isMetafacadePropertyCachingEnabled())
485             {
486                 this.__containedInBusinessProcess12aSet = true;
487             }
488         }
489         return containedInBusinessProcess12a;
490     }
491 
492    /**
493     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#getTimerRepeat()
494     * @return String
495     */
496     protected abstract String handleGetTimerRepeat();
497 
498     private String __timerRepeat13a;
499     private boolean __timerRepeat13aSet = false;
500 
501     /**
502      * TODO: Model Documentation for org.andromda.cartridges.jbpm.metafacades.JBpmAction.timerRepeat
503      * @return (String)handleGetTimerRepeat()
504      */
505     public final String getTimerRepeat()
506     {
507         String timerRepeat13a = this.__timerRepeat13a;
508         if (!this.__timerRepeat13aSet)
509         {
510             // timerRepeat has no pre constraints
511             timerRepeat13a = handleGetTimerRepeat();
512             // timerRepeat has no post constraints
513             this.__timerRepeat13a = timerRepeat13a;
514             if (isMetafacadePropertyCachingEnabled())
515             {
516                 this.__timerRepeat13aSet = true;
517             }
518         }
519         return timerRepeat13a;
520     }
521 
522    /**
523     * @see org.andromda.cartridges.jbpm.metafacades.JBpmAction#getTimerTransition()
524     * @return String
525     */
526     protected abstract String handleGetTimerTransition();
527 
528     private String __timerTransition14a;
529     private boolean __timerTransition14aSet = false;
530 
531     /**
532      * TODO: Model Documentation for
533      * org.andromda.cartridges.jbpm.metafacades.JBpmAction.timerTransition
534      * @return (String)handleGetTimerTransition()
535      */
536     public final String getTimerTransition()
537     {
538         String timerTransition14a = this.__timerTransition14a;
539         if (!this.__timerTransition14aSet)
540         {
541             // timerTransition has no pre constraints
542             timerTransition14a = handleGetTimerTransition();
543             // timerTransition has no post constraints
544             this.__timerTransition14a = timerTransition14a;
545             if (isMetafacadePropertyCachingEnabled())
546             {
547                 this.__timerTransition14aSet = true;
548             }
549         }
550         return timerTransition14a;
551     }
552 
553     // ------------- associations ------------------
554 
555     /**
556      * @return true
557      * @see CallEventFacade
558      */
559     public boolean isCallEventFacadeMetaType()
560     {
561         return true;
562     }
563 
564     /**
565      * @return true
566      * @see org.andromda.metafacades.uml.EventFacade
567      */
568     public boolean isEventFacadeMetaType()
569     {
570         return true;
571     }
572 
573     /**
574      * @return true
575      * @see ModelElementFacade
576      */
577     public boolean isModelElementFacadeMetaType()
578     {
579         return true;
580     }
581 
582     // ----------- delegates to CallEventFacade ------------
583     /**
584      * The operation called by this event.
585      * @see CallEventFacade#getOperation()
586      */
587     public OperationFacade getOperation()
588     {
589         return this.getSuperCallEventFacade().getOperation();
590     }
591 
592     /**
593      * The operations of this call event facade.  For UML 1.4 only one operation will be present,
594      * for UML2, there can be more than one present.
595      * @see CallEventFacade#getOperations()
596      */
597     public Collection<OperationFacade> getOperations()
598     {
599         return this.getSuperCallEventFacade().getOperations();
600     }
601 
602     /**
603      * The parameters to this event.
604      * @see org.andromda.metafacades.uml.EventFacade#getParameters()
605      */
606     public Collection<ParameterFacade> getParameters()
607     {
608         return this.getSuperCallEventFacade().getParameters();
609     }
610 
611     /**
612      * If this event is located on an action state, this will represent that state.
613      * @see org.andromda.metafacades.uml.EventFacade#getState()
614      */
615     public StateFacade getState()
616     {
617         return this.getSuperCallEventFacade().getState();
618     }
619 
620     /**
621      * If this event is located on a transition, this represents that transition.
622      * @see org.andromda.metafacades.uml.EventFacade#getTransition()
623      */
624     public TransitionFacade getTransition()
625     {
626         return this.getSuperCallEventFacade().getTransition();
627     }
628 
629     /**
630      * Copies all tagged values from the given ModelElementFacade to this model element facade.
631      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
632      */
633     public void copyTaggedValues(ModelElementFacade element)
634     {
635         this.getSuperCallEventFacade().copyTaggedValues(element);
636     }
637 
638     /**
639      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
640      * one found will be returned.
641      * @see ModelElementFacade#findTaggedValue(String tagName)
642      */
643     public Object findTaggedValue(String tagName)
644     {
645         return this.getSuperCallEventFacade().findTaggedValue(tagName);
646     }
647 
648     /**
649      * Returns all the values for the tagged value with the specified name. The returned collection
650      * will contains only String instances, or will be empty. Never null.
651      * @see ModelElementFacade#findTaggedValues(String tagName)
652      */
653     public Collection<Object> findTaggedValues(String tagName)
654     {
655         return this.getSuperCallEventFacade().findTaggedValues(tagName);
656     }
657 
658     /**
659      * Returns the fully qualified name of the model element. The fully qualified name includes
660      * complete package qualified name of the underlying model element. The templates parameter will
661      * be replaced by the correct one given the binding relation of the parameter to this element.
662      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
663      */
664     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
665     {
666         return this.getSuperCallEventFacade().getBindedFullyQualifiedName(bindedElement);
667     }
668 
669     /**
670      * Gets all constraints belonging to the model element.
671      * @see ModelElementFacade#getConstraints()
672      */
673     public Collection<ConstraintFacade> getConstraints()
674     {
675         return this.getSuperCallEventFacade().getConstraints();
676     }
677 
678     /**
679      * Returns the constraints of the argument kind that have been placed onto this model. Typical
680      * kinds are "inv", "pre" and "post". Other kinds are possible.
681      * @see ModelElementFacade#getConstraints(String kind)
682      */
683     public Collection<ConstraintFacade> getConstraints(String kind)
684     {
685         return this.getSuperCallEventFacade().getConstraints(kind);
686     }
687 
688     /**
689      * Gets the documentation for the model element, The indent argument is prefixed to each line.
690      * By default this method wraps lines after 64 characters.
691      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
692      * @see ModelElementFacade#getDocumentation(String indent)
693      */
694     public String getDocumentation(String indent)
695     {
696         return this.getSuperCallEventFacade().getDocumentation(indent);
697     }
698 
699     /**
700      * This method returns the documentation for this model element, with the lines wrapped after
701      * the specified number of characters, values of less than 1 will indicate no line wrapping is
702      * required. By default paragraphs are returned as HTML.
703      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
704      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
705      */
706     public String getDocumentation(String indent, int lineLength)
707     {
708         return this.getSuperCallEventFacade().getDocumentation(indent, lineLength);
709     }
710 
711     /**
712      * This method returns the documentation for this model element, with the lines wrapped after
713      * the specified number of characters, values of less than 1 will indicate no line wrapping is
714      * required. HTML style determines if HTML Escaping is applied.
715      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
716      */
717     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
718     {
719         return this.getSuperCallEventFacade().getDocumentation(indent, lineLength, htmlStyle);
720     }
721 
722     /**
723      * The fully qualified name of this model element.
724      * @see ModelElementFacade#getFullyQualifiedName()
725      */
726     public String getFullyQualifiedName()
727     {
728         return this.getSuperCallEventFacade().getFullyQualifiedName();
729     }
730 
731     /**
732      * Returns the fully qualified name of the model element. The fully qualified name includes
733      * complete package qualified name of the underlying model element.  If modelName is true, then
734      * the original name of the model element (the name contained within the model) will be the name
735      * returned, otherwise a name from a language mapping will be returned.
736      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
737      */
738     public String getFullyQualifiedName(boolean modelName)
739     {
740         return this.getSuperCallEventFacade().getFullyQualifiedName(modelName);
741     }
742 
743     /**
744      * Returns the fully qualified name as a path, the returned value always starts with out a slash
745      * '/'.
746      * @see ModelElementFacade#getFullyQualifiedNamePath()
747      */
748     public String getFullyQualifiedNamePath()
749     {
750         return this.getSuperCallEventFacade().getFullyQualifiedNamePath();
751     }
752 
753     /**
754      * Gets the unique identifier of the underlying model element.
755      * @see ModelElementFacade#getId()
756      */
757     public String getId()
758     {
759         return this.getSuperCallEventFacade().getId();
760     }
761 
762     /**
763      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
764      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
765      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
766      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
767      * JDK5 compiler level.
768      * @see ModelElementFacade#getKeywords()
769      */
770     public Collection<String> getKeywords()
771     {
772         return this.getSuperCallEventFacade().getKeywords();
773     }
774 
775     /**
776      * UML2: Retrieves a localized label for this named element.
777      * @see ModelElementFacade#getLabel()
778      */
779     public String getLabel()
780     {
781         return this.getSuperCallEventFacade().getLabel();
782     }
783 
784     /**
785      * The language mappings that have been set for this model element.
786      * @see ModelElementFacade#getLanguageMappings()
787      */
788     public TypeMappings getLanguageMappings()
789     {
790         return this.getSuperCallEventFacade().getLanguageMappings();
791     }
792 
793     /**
794      * Return the model containing this model element (multiple models may be loaded and processed
795      * at the same time).
796      * @see ModelElementFacade#getModel()
797      */
798     public ModelFacade getModel()
799     {
800         return this.getSuperCallEventFacade().getModel();
801     }
802 
803     /**
804      * The name of the model element.
805      * @see ModelElementFacade#getName()
806      */
807     public String getName()
808     {
809         return this.getSuperCallEventFacade().getName();
810     }
811 
812     /**
813      * Gets the package to which this model element belongs.
814      * @see ModelElementFacade#getPackage()
815      */
816     public ModelElementFacade getPackage()
817     {
818         return this.getSuperCallEventFacade().getPackage();
819     }
820 
821     /**
822      * The name of this model element's package.
823      * @see ModelElementFacade#getPackageName()
824      */
825     public String getPackageName()
826     {
827         return this.getSuperCallEventFacade().getPackageName();
828     }
829 
830     /**
831      * Gets the package name (optionally providing the ability to retrieve the model name and not
832      * the mapped name).
833      * @see ModelElementFacade#getPackageName(boolean modelName)
834      */
835     public String getPackageName(boolean modelName)
836     {
837         return this.getSuperCallEventFacade().getPackageName(modelName);
838     }
839 
840     /**
841      * Returns the package as a path, the returned value always starts with out a slash '/'.
842      * @see ModelElementFacade#getPackagePath()
843      */
844     public String getPackagePath()
845     {
846         return this.getSuperCallEventFacade().getPackagePath();
847     }
848 
849     /**
850      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
851      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
852      * the names of the containing namespaces starting at the root of the hierarchy and ending with
853      * the name of the NamedElement itself.
854      * @see ModelElementFacade#getQualifiedName()
855      */
856     public String getQualifiedName()
857     {
858         return this.getSuperCallEventFacade().getQualifiedName();
859     }
860 
861     /**
862      * Gets the root package for the model element.
863      * @see ModelElementFacade#getRootPackage()
864      */
865     public PackageFacade getRootPackage()
866     {
867         return this.getSuperCallEventFacade().getRootPackage();
868     }
869 
870     /**
871      * Gets the dependencies for which this model element is the source.
872      * @see ModelElementFacade#getSourceDependencies()
873      */
874     public Collection<DependencyFacade> getSourceDependencies()
875     {
876         return this.getSuperCallEventFacade().getSourceDependencies();
877     }
878 
879     /**
880      * If this model element is the context of an activity graph, this represents that activity
881      * graph.
882      * @see ModelElementFacade#getStateMachineContext()
883      */
884     public StateMachineFacade getStateMachineContext()
885     {
886         return this.getSuperCallEventFacade().getStateMachineContext();
887     }
888 
889     /**
890      * The collection of ALL stereotype names for this model element.
891      * @see ModelElementFacade#getStereotypeNames()
892      */
893     public Collection<String> getStereotypeNames()
894     {
895         return this.getSuperCallEventFacade().getStereotypeNames();
896     }
897 
898     /**
899      * Gets all stereotypes for this model element.
900      * @see ModelElementFacade#getStereotypes()
901      */
902     public Collection<StereotypeFacade> getStereotypes()
903     {
904         return this.getSuperCallEventFacade().getStereotypes();
905     }
906 
907     /**
908      * Return the TaggedValues associated with this model element, under all stereotypes.
909      * @see ModelElementFacade#getTaggedValues()
910      */
911     public Collection<TaggedValueFacade> getTaggedValues()
912     {
913         return this.getSuperCallEventFacade().getTaggedValues();
914     }
915 
916     /**
917      * Gets the dependencies for which this model element is the target.
918      * @see ModelElementFacade#getTargetDependencies()
919      */
920     public Collection<DependencyFacade> getTargetDependencies()
921     {
922         return this.getSuperCallEventFacade().getTargetDependencies();
923     }
924 
925     /**
926      * Get the template parameter for this model element having the parameterName
927      * @see ModelElementFacade#getTemplateParameter(String parameterName)
928      */
929     public Object getTemplateParameter(String parameterName)
930     {
931         return this.getSuperCallEventFacade().getTemplateParameter(parameterName);
932     }
933 
934     /**
935      * Get the template parameters for this model element
936      * @see ModelElementFacade#getTemplateParameters()
937      */
938     public Collection<TemplateParameterFacade> getTemplateParameters()
939     {
940         return this.getSuperCallEventFacade().getTemplateParameters();
941     }
942 
943     /**
944      * The visibility (i.e. public, private, protected or package) of the model element, will
945      * attempt a lookup for these values in the language mappings (if any).
946      * @see ModelElementFacade#getVisibility()
947      */
948     public String getVisibility()
949     {
950         return this.getSuperCallEventFacade().getVisibility();
951     }
952 
953     /**
954      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
955      * is taken into account when searching for the stereotype), false otherwise.
956      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
957      */
958     public boolean hasExactStereotype(String stereotypeName)
959     {
960         return this.getSuperCallEventFacade().hasExactStereotype(stereotypeName);
961     }
962 
963     /**
964      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
965      * pipe, semicolon, or << >>
966      * @see ModelElementFacade#hasKeyword(String keywordName)
967      */
968     public boolean hasKeyword(String keywordName)
969     {
970         return this.getSuperCallEventFacade().hasKeyword(keywordName);
971     }
972 
973     /**
974      * Returns true if the model element has the specified stereotype.  If the stereotype itself
975      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
976      * one of the stereotype's ancestors has a matching name this method will return true, false
977      * otherwise.
978      * For example, if we have a certain stereotype called <<exception>> and a model element has a
979      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
980      * method with 'stereotypeName' defined as 'exception' the method would return true since
981      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
982      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
983      * @see ModelElementFacade#hasStereotype(String stereotypeName)
984      */
985     public boolean hasStereotype(String stereotypeName)
986     {
987         return this.getSuperCallEventFacade().hasStereotype(stereotypeName);
988     }
989 
990     /**
991      * True if there are target dependencies from this element that are instances of BindingFacade.
992      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
993      * @see ModelElementFacade#isBindingDependenciesPresent()
994      */
995     public boolean isBindingDependenciesPresent()
996     {
997         return this.getSuperCallEventFacade().isBindingDependenciesPresent();
998     }
999 
1000     /**
1001      * Indicates if any constraints are present on this model element.
1002      * @see ModelElementFacade#isConstraintsPresent()
1003      */
1004     public boolean isConstraintsPresent()
1005     {
1006         return this.getSuperCallEventFacade().isConstraintsPresent();
1007     }
1008 
1009     /**
1010      * Indicates if any documentation is present on this model element.
1011      * @see ModelElementFacade#isDocumentationPresent()
1012      */
1013     public boolean isDocumentationPresent()
1014     {
1015         return this.getSuperCallEventFacade().isDocumentationPresent();
1016     }
1017 
1018     /**
1019      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1020      * @see ModelElementFacade#isReservedWord()
1021      */
1022     public boolean isReservedWord()
1023     {
1024         return this.getSuperCallEventFacade().isReservedWord();
1025     }
1026 
1027     /**
1028      * True is there are template parameters on this model element. For UML2, applies to Class,
1029      * Operation, Property, and Parameter.
1030      * @see ModelElementFacade#isTemplateParametersPresent()
1031      */
1032     public boolean isTemplateParametersPresent()
1033     {
1034         return this.getSuperCallEventFacade().isTemplateParametersPresent();
1035     }
1036 
1037     /**
1038      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1039      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1040      * Enumerations and Interfaces, optionally applies on other model elements.
1041      * @see ModelElementFacade#isValidIdentifierName()
1042      */
1043     public boolean isValidIdentifierName()
1044     {
1045         return this.getSuperCallEventFacade().isValidIdentifierName();
1046     }
1047 
1048     /**
1049      * Searches for the constraint with the specified 'name' on this model element, and if found
1050      * translates it using the specified 'translation' from a translation library discovered by the
1051      * framework.
1052      * @see ModelElementFacade#translateConstraint(String name, String translation)
1053      */
1054     public String translateConstraint(String name, String translation)
1055     {
1056         return this.getSuperCallEventFacade().translateConstraint(name, translation);
1057     }
1058 
1059     /**
1060      * Translates all constraints belonging to this model element with the given 'translation'.
1061      * @see ModelElementFacade#translateConstraints(String translation)
1062      */
1063     public String[] translateConstraints(String translation)
1064     {
1065         return this.getSuperCallEventFacade().translateConstraints(translation);
1066     }
1067 
1068     /**
1069      * Translates the constraints of the specified 'kind' belonging to this model element.
1070      * @see ModelElementFacade#translateConstraints(String kind, String translation)
1071      */
1072     public String[] translateConstraints(String kind, String translation)
1073     {
1074         return this.getSuperCallEventFacade().translateConstraints(kind, translation);
1075     }
1076 
1077     /**
1078      * @see MetafacadeBase#initialize()
1079      */
1080     @Override
1081     public void initialize()
1082     {
1083         this.getSuperCallEventFacade().initialize();
1084     }
1085 
1086     /**
1087      * @return Object getSuperCallEventFacade().getValidationOwner()
1088      * @see MetafacadeBase#getValidationOwner()
1089      */
1090     @Override
1091     public Object getValidationOwner()
1092     {
1093         Object owner = this.getSuperCallEventFacade().getValidationOwner();
1094         return owner;
1095     }
1096 
1097     /**
1098      * @return String getSuperCallEventFacade().getValidationName()
1099      * @see MetafacadeBase#getValidationName()
1100      */
1101     @Override
1102     public String getValidationName()
1103     {
1104         String name = this.getSuperCallEventFacade().getValidationName();
1105         return name;
1106     }
1107 
1108     /**
1109      * <p><b>Constraint:</b> org::andromda::cartridges::jbpm::metafacades::JBpmAction::action needs to be of known type</p>
1110      * <p><b>Error:</b> This element needs to represent either an 'after signal', 'before signal', 'node enter', 'node leave', 'timer' or 'task'. This is done by attaching the appropriate stereotype to the deferrable event.</p>
1111      * <p><b>OCL:</b> context JBpmAction inv: nodeEnter or nodeLeave or task or beforeSignal or afterSignal or timer</p>
1112      * <p><b>Constraint:</b> org::andromda::cartridges::jbpm::metafacades::JBpmAction::timers need a due date</p>
1113      * <p><b>Error:</b> Timers need to have their due date specified, use the corresponding tagged value to set it.</p>
1114      * <p><b>OCL:</b> context JBpmAction inv: timer implies dueDate->notEmpty()</p>
1115      * <p><b>Constraint:</b> org::andromda::cartridges::jbpm::metafacades::JBpmAction::timers sometimes require the transition tag</p>
1116      * <p><b>Error:</b> If a timer is modeled on a state with two or more outgoing transitions then this timer needs to know which one to take after execution, this is done by means of a tagged value.</p>
1117      * <p><b>OCL:</b> context JBpmAction inv: let transitionName : String = timerTransition in (timer and state.outgoings->size() > 1) implies (transitionName->notEmpty() and state.outgoings->one(name = transitionName))</p>
1118      * @param validationMessages Collection<ModelValidationMessage>
1119      * @see MetafacadeBase#validateInvariants(Collection validationMessages)
1120      */
1121     @Override
1122     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1123     {
1124         this.getSuperCallEventFacade().validateInvariants(validationMessages);
1125         try
1126         {
1127             final Object contextElement = this.THIS();
1128             boolean constraintValid = OCLResultEnsurer.ensure(Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"nodeEnter"))).booleanValue()||Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"nodeLeave"))).booleanValue()||Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"task"))).booleanValue()||Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"beforeSignal"))).booleanValue()||Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"afterSignal"))).booleanValue()||Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"timer"))).booleanValue());
1129             if (!constraintValid)
1130             {
1131                 validationMessages.add(
1132                     new ModelValidationMessage(
1133                         (MetafacadeBase)contextElement ,
1134                         "org::andromda::cartridges::jbpm::metafacades::JBpmAction::action needs to be of known type",
1135                         "This element needs to represent either an 'after signal', 'before signal', 'node enter', 'node leave', 'timer' or 'task'. This is done by attaching the appropriate stereotype to the deferrable event."));
1136             }
1137         }
1138         catch (Throwable th)
1139         {
1140             Throwable cause = th.getCause();
1141             int depth = 0; // Some throwables have infinite recursion
1142             while (cause != null && depth < 7)
1143             {
1144                 th = cause;
1145                 depth++;
1146             }
1147             logger.error("Error validating constraint 'org::andromda::cartridges::jbpm::metafacades::JBpmAction::action needs to be of known type' ON "
1148                 + this.THIS().toString() + ": " + th.getMessage(), th);
1149         }
1150         try
1151         {
1152             final Object contextElement = this.THIS();
1153             boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"timer"))).booleanValue()?OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"dueDate")):true));
1154             if (!constraintValid)
1155             {
1156                 validationMessages.add(
1157                     new ModelValidationMessage(
1158                         (MetafacadeBase)contextElement ,
1159                         "org::andromda::cartridges::jbpm::metafacades::JBpmAction::timers need a due date",
1160                         "Timers need to have their due date specified, use the corresponding tagged value to set it."));
1161             }
1162         }
1163         catch (Throwable th)
1164         {
1165             Throwable cause = th.getCause();
1166             int depth = 0; // Some throwables have infinite recursion
1167             while (cause != null && depth < 7)
1168             {
1169                 th = cause;
1170                 depth++;
1171             }
1172             logger.error("Error validating constraint 'org::andromda::cartridges::jbpm::metafacades::JBpmAction::timers need a due date' ON "
1173                 + this.THIS().toString() + ": " + th.getMessage(), th);
1174         }
1175         try
1176         {
1177             final Object contextElement = this.THIS();
1178             boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf((Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"timer"))).booleanValue()&&OCLExpressions.greater(OCLCollections.size(OCLIntrospector.invoke(contextElement,"state.outgoings")),1)))).booleanValue()?(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"timerTransition"))&&OCLCollections.one(OCLIntrospector.invoke(contextElement,"state.outgoings"),new Predicate(){public boolean evaluate(Object object){return Boolean.valueOf(String.valueOf(OCLExpressions.equal(OCLIntrospector.invoke(object,"name"),OCLIntrospector.invoke(contextElement,"timerTransition")))).booleanValue();}})):true));
1179             if (!constraintValid)
1180             {
1181                 validationMessages.add(
1182                     new ModelValidationMessage(
1183                         (MetafacadeBase)contextElement ,
1184                         "org::andromda::cartridges::jbpm::metafacades::JBpmAction::timers sometimes require the transition tag",
1185                         "If a timer is modeled on a state with two or more outgoing transitions then this timer needs to know which one to take after execution, this is done by means of a tagged value."));
1186             }
1187         }
1188         catch (Throwable th)
1189         {
1190             Throwable cause = th.getCause();
1191             int depth = 0; // Some throwables have infinite recursion
1192             while (cause != null && depth < 7)
1193             {
1194                 th = cause;
1195                 depth++;
1196             }
1197             logger.error("Error validating constraint 'org::andromda::cartridges::jbpm::metafacades::JBpmAction::timers sometimes require the transition tag' ON "
1198                 + this.THIS().toString() + ": " + th.getMessage(), th);
1199         }
1200     }
1201 
1202     /**
1203      * The property that stores the name of the metafacade.
1204      */
1205     private static final String NAME_PROPERTY = "name";
1206     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1207 
1208     /**
1209      * @see Object#toString()
1210      */
1211     @Override
1212     public String toString()
1213     {
1214         final StringBuilder toString = new StringBuilder(this.getClass().getName());
1215         toString.append("[");
1216         try
1217         {
1218             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1219         }
1220         catch (final Throwable tryAgain)
1221         {
1222             try
1223             {
1224                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1225             }
1226             catch (final Throwable ignore)
1227             {
1228                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1229             }
1230         }
1231         toString.append("]");
1232         return toString.toString();
1233     }
1234 }