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.jsf2.metafacades;
6   
7   import java.util.Collection;
8   import java.util.List;
9   import java.util.Map;
10  import org.andromda.core.common.Introspector;
11  import org.andromda.core.metafacade.MetafacadeBase;
12  import org.andromda.core.metafacade.MetafacadeFactory;
13  import org.andromda.core.metafacade.ModelValidationMessage;
14  import org.andromda.metafacades.uml.ActivityGraphFacade;
15  import org.andromda.metafacades.uml.AssociationEndFacade;
16  import org.andromda.metafacades.uml.AttributeFacade;
17  import org.andromda.metafacades.uml.ClassifierFacade;
18  import org.andromda.metafacades.uml.ConstraintFacade;
19  import org.andromda.metafacades.uml.DependencyFacade;
20  import org.andromda.metafacades.uml.ExtendFacade;
21  import org.andromda.metafacades.uml.ExtensionPointFacade;
22  import org.andromda.metafacades.uml.FrontEndAction;
23  import org.andromda.metafacades.uml.FrontEndActivityGraph;
24  import org.andromda.metafacades.uml.FrontEndController;
25  import org.andromda.metafacades.uml.FrontEndFinalState;
26  import org.andromda.metafacades.uml.FrontEndParameter;
27  import org.andromda.metafacades.uml.FrontEndUseCase;
28  import org.andromda.metafacades.uml.FrontEndView;
29  import org.andromda.metafacades.uml.GeneralizableElementFacade;
30  import org.andromda.metafacades.uml.GeneralizationFacade;
31  import org.andromda.metafacades.uml.IncludeFacade;
32  import org.andromda.metafacades.uml.ModelElementFacade;
33  import org.andromda.metafacades.uml.ModelFacade;
34  import org.andromda.metafacades.uml.OperationFacade;
35  import org.andromda.metafacades.uml.PackageFacade;
36  import org.andromda.metafacades.uml.Role;
37  import org.andromda.metafacades.uml.StateMachineFacade;
38  import org.andromda.metafacades.uml.StereotypeFacade;
39  import org.andromda.metafacades.uml.TaggedValueFacade;
40  import org.andromda.metafacades.uml.TemplateParameterFacade;
41  import org.andromda.metafacades.uml.TypeMappings;
42  import org.apache.log4j.Logger;
43  
44  /**
45   * Represents a JSF use case.
46   * MetafacadeLogic for JSFUseCase
47   *
48   * @see JSFUseCase
49   */
50  public abstract class JSFUseCaseLogic
51      extends MetafacadeBase
52      implements JSFUseCase
53  {
54      /**
55       * The underlying UML object
56       * @see Object
57       */
58      protected Object metaObject;
59  
60      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
61       * @param metaObjectIn
62       * @param context
63       */
64      protected JSFUseCaseLogic(Object metaObjectIn, String context)
65      {
66          super(metaObjectIn, getContext(context));
67          this.superFrontEndUseCase =
68             (FrontEndUseCase)
69              MetafacadeFactory.getInstance().createFacadeImpl(
70                      "org.andromda.metafacades.uml.FrontEndUseCase",
71                      metaObjectIn,
72                      getContext(context));
73          this.metaObject = metaObjectIn;
74      }
75  
76      /**
77       * The logger instance.
78       */
79      private static final Logger logger = Logger.getLogger(JSFUseCaseLogic.class);
80  
81      /**
82       * Gets the context for this metafacade logic instance.
83       * @param context String. Set to JSFUseCase if null
84       * @return context String
85       */
86      private static String getContext(String context)
87      {
88          if (context == null)
89          {
90              context = "org.andromda.cartridges.jsf2.metafacades.JSFUseCase";
91          }
92          return context;
93      }
94  
95      private FrontEndUseCase superFrontEndUseCase;
96      private boolean superFrontEndUseCaseInitialized = false;
97  
98      /**
99       * Gets the FrontEndUseCase parent instance.
100      * @return this.superFrontEndUseCase FrontEndUseCase
101      */
102     private FrontEndUseCase getSuperFrontEndUseCase()
103     {
104         if (!this.superFrontEndUseCaseInitialized)
105         {
106             ((MetafacadeBase)this.superFrontEndUseCase).setMetafacadeContext(this.getMetafacadeContext());
107             this.superFrontEndUseCaseInitialized = true;
108         }
109         return this.superFrontEndUseCase;
110     }
111 
112     /** Reset context only for non-root metafacades
113      * @param context
114      * @see MetafacadeBase#resetMetafacadeContext(String context)
115      */
116     @Override
117     public void resetMetafacadeContext(String context)
118     {
119         if (!this.contextRoot) // reset context only for non-root metafacades
120         {
121             context = getContext(context);  // to have same value as in original constructor call
122             setMetafacadeContext (context);
123             if (this.superFrontEndUseCaseInitialized)
124             {
125                 ((MetafacadeBase)this.superFrontEndUseCase).resetMetafacadeContext(context);
126             }
127         }
128     }
129 
130     /**
131      * @return boolean true always
132      * @see JSFUseCase
133      */
134     public boolean isJSFUseCaseMetaType()
135     {
136         return true;
137     }
138 
139     // --------------- attributes ---------------------
140 
141    /**
142     * @see JSFUseCase#getPath()
143     * @return String
144     */
145     protected abstract String handleGetPath();
146 
147     private String __path1a;
148     private boolean __path1aSet = false;
149 
150     /**
151      * The path to which this use case points.
152      * @return (String)handleGetPath()
153      */
154     public final String getPath()
155     {
156         String path1a = this.__path1a;
157         if (!this.__path1aSet)
158         {
159             // path has no pre constraints
160             path1a = handleGetPath();
161             // path has no post constraints
162             this.__path1a = path1a;
163             if (isMetafacadePropertyCachingEnabled())
164             {
165                 this.__path1aSet = true;
166             }
167         }
168         return path1a;
169     }
170 
171    /**
172     * @see JSFUseCase#getPathRoot()
173     * @return String
174     */
175     protected abstract String handleGetPathRoot();
176 
177     private String __pathRoot2a;
178     private boolean __pathRoot2aSet = false;
179 
180     /**
181      * The root path for this use case (this is the path the directory containing the use case's
182      * resources).
183      * @return (String)handleGetPathRoot()
184      */
185     public final String getPathRoot()
186     {
187         String pathRoot2a = this.__pathRoot2a;
188         if (!this.__pathRoot2aSet)
189         {
190             // pathRoot has no pre constraints
191             pathRoot2a = handleGetPathRoot();
192             // pathRoot has no post constraints
193             this.__pathRoot2a = pathRoot2a;
194             if (isMetafacadePropertyCachingEnabled())
195             {
196                 this.__pathRoot2aSet = true;
197             }
198         }
199         return pathRoot2a;
200     }
201 
202    /**
203     * @see JSFUseCase#getForwardName()
204     * @return String
205     */
206     protected abstract String handleGetForwardName();
207 
208     private String __forwardName3a;
209     private boolean __forwardName3aSet = false;
210 
211     /**
212      * The name that will cause a forward to use case.
213      * @return (String)handleGetForwardName()
214      */
215     public final String getForwardName()
216     {
217         String forwardName3a = this.__forwardName3a;
218         if (!this.__forwardName3aSet)
219         {
220             // forwardName has no pre constraints
221             forwardName3a = handleGetForwardName();
222             // forwardName has no post constraints
223             this.__forwardName3a = forwardName3a;
224             if (isMetafacadePropertyCachingEnabled())
225             {
226                 this.__forwardName3aSet = true;
227             }
228         }
229         return forwardName3a;
230     }
231 
232    /**
233     * @see JSFUseCase#getAllMessages()
234     * @return Map
235     */
236     protected abstract Map handleGetAllMessages();
237 
238     private Map __allMessages4a;
239     private boolean __allMessages4aSet = false;
240 
241     /**
242      * A map with keys sorted alphabetically, normalized across all different use-cases, views, etc.
243      * @return (Map)handleGetAllMessages()
244      */
245     public final Map getAllMessages()
246     {
247         Map allMessages4a = this.__allMessages4a;
248         if (!this.__allMessages4aSet)
249         {
250             // allMessages has no pre constraints
251             allMessages4a = handleGetAllMessages();
252             // allMessages has no post constraints
253             this.__allMessages4a = allMessages4a;
254             if (isMetafacadePropertyCachingEnabled())
255             {
256                 this.__allMessages4aSet = true;
257             }
258         }
259         return allMessages4a;
260     }
261 
262    /**
263     * @see JSFUseCase#getTitleKey()
264     * @return String
265     */
266     protected abstract String handleGetTitleKey();
267 
268     private String __titleKey5a;
269     private boolean __titleKey5aSet = false;
270 
271     /**
272      * The title message key for this use-case.
273      * @return (String)handleGetTitleKey()
274      */
275     public final String getTitleKey()
276     {
277         String titleKey5a = this.__titleKey5a;
278         if (!this.__titleKey5aSet)
279         {
280             // titleKey has no pre constraints
281             titleKey5a = handleGetTitleKey();
282             // titleKey has no post constraints
283             this.__titleKey5a = titleKey5a;
284             if (isMetafacadePropertyCachingEnabled())
285             {
286                 this.__titleKey5aSet = true;
287             }
288         }
289         return titleKey5a;
290     }
291 
292    /**
293     * @see JSFUseCase#getTitleValue()
294     * @return String
295     */
296     protected abstract String handleGetTitleValue();
297 
298     private String __titleValue6a;
299     private boolean __titleValue6aSet = false;
300 
301     /**
302      * The title message value for this use-case.
303      * @return (String)handleGetTitleValue()
304      */
305     public final String getTitleValue()
306     {
307         String titleValue6a = this.__titleValue6a;
308         if (!this.__titleValue6aSet)
309         {
310             // titleValue has no pre constraints
311             titleValue6a = handleGetTitleValue();
312             // titleValue has no post constraints
313             this.__titleValue6a = titleValue6a;
314             if (isMetafacadePropertyCachingEnabled())
315             {
316                 this.__titleValue6aSet = true;
317             }
318         }
319         return titleValue6a;
320     }
321 
322    /**
323     * @see JSFUseCase#getActionClassName()
324     * @return String
325     */
326     protected abstract String handleGetActionClassName();
327 
328     private String __actionClassName7a;
329     private boolean __actionClassName7aSet = false;
330 
331     /**
332      * The name of the action class that forwards to this use case.
333      * @return (String)handleGetActionClassName()
334      */
335     public final String getActionClassName()
336     {
337         String actionClassName7a = this.__actionClassName7a;
338         if (!this.__actionClassName7aSet)
339         {
340             // actionClassName has no pre constraints
341             actionClassName7a = handleGetActionClassName();
342             // actionClassName has no post constraints
343             this.__actionClassName7a = actionClassName7a;
344             if (isMetafacadePropertyCachingEnabled())
345             {
346                 this.__actionClassName7aSet = true;
347             }
348         }
349         return actionClassName7a;
350     }
351 
352    /**
353     * @see JSFUseCase#getFullyQualifiedActionClassPath()
354     * @return String
355     */
356     protected abstract String handleGetFullyQualifiedActionClassPath();
357 
358     private String __fullyQualifiedActionClassPath8a;
359     private boolean __fullyQualifiedActionClassPath8aSet = false;
360 
361     /**
362      * The fully qualified path to the action class that forwards to this use case.
363      * @return (String)handleGetFullyQualifiedActionClassPath()
364      */
365     public final String getFullyQualifiedActionClassPath()
366     {
367         String fullyQualifiedActionClassPath8a = this.__fullyQualifiedActionClassPath8a;
368         if (!this.__fullyQualifiedActionClassPath8aSet)
369         {
370             // fullyQualifiedActionClassPath has no pre constraints
371             fullyQualifiedActionClassPath8a = handleGetFullyQualifiedActionClassPath();
372             // fullyQualifiedActionClassPath has no post constraints
373             this.__fullyQualifiedActionClassPath8a = fullyQualifiedActionClassPath8a;
374             if (isMetafacadePropertyCachingEnabled())
375             {
376                 this.__fullyQualifiedActionClassPath8aSet = true;
377             }
378         }
379         return fullyQualifiedActionClassPath8a;
380     }
381 
382    /**
383     * @see JSFUseCase#getControllerAction()
384     * @return String
385     */
386     protected abstract String handleGetControllerAction();
387 
388     private String __controllerAction9a;
389     private boolean __controllerAction9aSet = false;
390 
391     /**
392      * The name of the action on the controller that executions this use case.
393      * @return (String)handleGetControllerAction()
394      */
395     public final String getControllerAction()
396     {
397         String controllerAction9a = this.__controllerAction9a;
398         if (!this.__controllerAction9aSet)
399         {
400             // controllerAction has no pre constraints
401             controllerAction9a = handleGetControllerAction();
402             // controllerAction has no post constraints
403             this.__controllerAction9a = controllerAction9a;
404             if (isMetafacadePropertyCachingEnabled())
405             {
406                 this.__controllerAction9aSet = true;
407             }
408         }
409         return controllerAction9a;
410     }
411 
412    /**
413     * @see JSFUseCase#getFullyQualifiedActionClassName()
414     * @return String
415     */
416     protected abstract String handleGetFullyQualifiedActionClassName();
417 
418     private String __fullyQualifiedActionClassName10a;
419     private boolean __fullyQualifiedActionClassName10aSet = false;
420 
421     /**
422      * The fully qualified name of the action class that forwards to this use case.
423      * @return (String)handleGetFullyQualifiedActionClassName()
424      */
425     public final String getFullyQualifiedActionClassName()
426     {
427         String fullyQualifiedActionClassName10a = this.__fullyQualifiedActionClassName10a;
428         if (!this.__fullyQualifiedActionClassName10aSet)
429         {
430             // fullyQualifiedActionClassName has no pre constraints
431             fullyQualifiedActionClassName10a = handleGetFullyQualifiedActionClassName();
432             // fullyQualifiedActionClassName has no post constraints
433             this.__fullyQualifiedActionClassName10a = fullyQualifiedActionClassName10a;
434             if (isMetafacadePropertyCachingEnabled())
435             {
436                 this.__fullyQualifiedActionClassName10aSet = true;
437             }
438         }
439         return fullyQualifiedActionClassName10a;
440     }
441 
442    /**
443     * @see JSFUseCase#getFormKey()
444     * @return String
445     */
446     protected abstract String handleGetFormKey();
447 
448     private String __formKey11a;
449     private boolean __formKey11aSet = false;
450 
451     /**
452      * The key under which to store the action form passed along in this in this use-case.
453      * @return (String)handleGetFormKey()
454      */
455     public final String getFormKey()
456     {
457         String formKey11a = this.__formKey11a;
458         if (!this.__formKey11aSet)
459         {
460             // formKey has no pre constraints
461             formKey11a = handleGetFormKey();
462             // formKey has no post constraints
463             this.__formKey11a = formKey11a;
464             if (isMetafacadePropertyCachingEnabled())
465             {
466                 this.__formKey11aSet = true;
467             }
468         }
469         return formKey11a;
470     }
471 
472    /**
473     * @see JSFUseCase#getInitialTargetPath()
474     * @return String
475     */
476     protected abstract String handleGetInitialTargetPath();
477 
478     private String __initialTargetPath12a;
479     private boolean __initialTargetPath12aSet = false;
480 
481     /**
482      * The path of the initial target going into this use case.
483      * @return (String)handleGetInitialTargetPath()
484      */
485     public final String getInitialTargetPath()
486     {
487         String initialTargetPath12a = this.__initialTargetPath12a;
488         if (!this.__initialTargetPath12aSet)
489         {
490             // initialTargetPath has no pre constraints
491             initialTargetPath12a = handleGetInitialTargetPath();
492             // initialTargetPath has no post constraints
493             this.__initialTargetPath12a = initialTargetPath12a;
494             if (isMetafacadePropertyCachingEnabled())
495             {
496                 this.__initialTargetPath12aSet = true;
497             }
498         }
499         return initialTargetPath12a;
500     }
501 
502    /**
503     * @see JSFUseCase#isInitialTargetView()
504     * @return boolean
505     */
506     protected abstract boolean handleIsInitialTargetView();
507 
508     private boolean __initialTargetView13a;
509     private boolean __initialTargetView13aSet = false;
510 
511     /**
512      * Indicates whether or not the initial target of this use case is a view or not.
513      * @return (boolean)handleIsInitialTargetView()
514      */
515     public final boolean isInitialTargetView()
516     {
517         boolean initialTargetView13a = this.__initialTargetView13a;
518         if (!this.__initialTargetView13aSet)
519         {
520             // initialTargetView has no pre constraints
521             initialTargetView13a = handleIsInitialTargetView();
522             // initialTargetView has no post constraints
523             this.__initialTargetView13a = initialTargetView13a;
524             if (isMetafacadePropertyCachingEnabled())
525             {
526                 this.__initialTargetView13aSet = true;
527             }
528         }
529         return initialTargetView13a;
530     }
531 
532    /**
533     * @see JSFUseCase#isApplicationValidationRequired()
534     * @return boolean
535     */
536     protected abstract boolean handleIsApplicationValidationRequired();
537 
538     private boolean __applicationValidationRequired14a;
539     private boolean __applicationValidationRequired14aSet = false;
540 
541     /**
542      * Indicates that at least one client/server parameter found in the collection of existing
543      * use-cases requires validation.
544      * @return (boolean)handleIsApplicationValidationRequired()
545      */
546     public final boolean isApplicationValidationRequired()
547     {
548         boolean applicationValidationRequired14a = this.__applicationValidationRequired14a;
549         if (!this.__applicationValidationRequired14aSet)
550         {
551             // applicationValidationRequired has no pre constraints
552             applicationValidationRequired14a = handleIsApplicationValidationRequired();
553             // applicationValidationRequired has no post constraints
554             this.__applicationValidationRequired14a = applicationValidationRequired14a;
555             if (isMetafacadePropertyCachingEnabled())
556             {
557                 this.__applicationValidationRequired14aSet = true;
558             }
559         }
560         return applicationValidationRequired14a;
561     }
562 
563    /**
564     * @see JSFUseCase#isValidationRequired()
565     * @return boolean
566     */
567     protected abstract boolean handleIsValidationRequired();
568 
569     private boolean __validationRequired15a;
570     private boolean __validationRequired15aSet = false;
571 
572     /**
573      * Indicates whether or not at least one parameter in this use-case require validation.
574      * @return (boolean)handleIsValidationRequired()
575      */
576     public final boolean isValidationRequired()
577     {
578         boolean validationRequired15a = this.__validationRequired15a;
579         if (!this.__validationRequired15aSet)
580         {
581             // validationRequired has no pre constraints
582             validationRequired15a = handleIsValidationRequired();
583             // validationRequired has no post constraints
584             this.__validationRequired15a = validationRequired15a;
585             if (isMetafacadePropertyCachingEnabled())
586             {
587                 this.__validationRequired15aSet = true;
588             }
589         }
590         return validationRequired15a;
591     }
592 
593    /**
594     * @see JSFUseCase#isViewHasNameOfUseCase()
595     * @return boolean
596     */
597     protected abstract boolean handleIsViewHasNameOfUseCase();
598 
599     private boolean __viewHasNameOfUseCase16a;
600     private boolean __viewHasNameOfUseCase16aSet = false;
601 
602     /**
603      * Indicates whether or not at least one view in the use case has the same name as this use
604      * case.
605      * @return (boolean)handleIsViewHasNameOfUseCase()
606      */
607     public final boolean isViewHasNameOfUseCase()
608     {
609         boolean viewHasNameOfUseCase16a = this.__viewHasNameOfUseCase16a;
610         if (!this.__viewHasNameOfUseCase16aSet)
611         {
612             // viewHasNameOfUseCase has no pre constraints
613             viewHasNameOfUseCase16a = handleIsViewHasNameOfUseCase();
614             // viewHasNameOfUseCase has no post constraints
615             this.__viewHasNameOfUseCase16a = viewHasNameOfUseCase16a;
616             if (isMetafacadePropertyCachingEnabled())
617             {
618                 this.__viewHasNameOfUseCase16aSet = true;
619             }
620         }
621         return viewHasNameOfUseCase16a;
622     }
623 
624    /**
625     * @see JSFUseCase#isRegistrationUseCase()
626     * @return boolean
627     */
628     protected abstract boolean handleIsRegistrationUseCase();
629 
630     private boolean __registrationUseCase17a;
631     private boolean __registrationUseCase17aSet = false;
632 
633     /**
634      * Indicates whether or not this is a front-end registration use case.  Only one use case can be
635      * labeled as a 'registration' use case.
636      * @return (boolean)handleIsRegistrationUseCase()
637      */
638     public final boolean isRegistrationUseCase()
639     {
640         boolean registrationUseCase17a = this.__registrationUseCase17a;
641         if (!this.__registrationUseCase17aSet)
642         {
643             // registrationUseCase has no pre constraints
644             registrationUseCase17a = handleIsRegistrationUseCase();
645             // registrationUseCase has no post constraints
646             this.__registrationUseCase17a = registrationUseCase17a;
647             if (isMetafacadePropertyCachingEnabled())
648             {
649                 this.__registrationUseCase17aSet = true;
650             }
651         }
652         return registrationUseCase17a;
653     }
654 
655    /**
656     * @see JSFUseCase#getForwardsClassName()
657     * @return String
658     */
659     protected abstract String handleGetForwardsClassName();
660 
661     private String __forwardsClassName18a;
662     private boolean __forwardsClassName18aSet = false;
663 
664     /**
665      * The name of the class that stores all the forwards paths.
666      * @return (String)handleGetForwardsClassName()
667      */
668     public final String getForwardsClassName()
669     {
670         String forwardsClassName18a = this.__forwardsClassName18a;
671         if (!this.__forwardsClassName18aSet)
672         {
673             // forwardsClassName has no pre constraints
674             forwardsClassName18a = handleGetForwardsClassName();
675             // forwardsClassName has no post constraints
676             this.__forwardsClassName18a = forwardsClassName18a;
677             if (isMetafacadePropertyCachingEnabled())
678             {
679                 this.__forwardsClassName18aSet = true;
680             }
681         }
682         return forwardsClassName18a;
683     }
684 
685    /**
686     * @see JSFUseCase#getAllForwards()
687     * @return List
688     */
689     protected abstract List handleGetAllForwards();
690 
691     private List __allForwards19a;
692     private boolean __allForwards19aSet = false;
693 
694     /**
695      * Constains all forwards includes regular FrontEndForwards and all actiion forwards.
696      * @return (List)handleGetAllForwards()
697      */
698     public final List getAllForwards()
699     {
700         List allForwards19a = this.__allForwards19a;
701         if (!this.__allForwards19aSet)
702         {
703             // allForwards has no pre constraints
704             allForwards19a = handleGetAllForwards();
705             // allForwards has no post constraints
706             this.__allForwards19a = allForwards19a;
707             if (isMetafacadePropertyCachingEnabled())
708             {
709                 this.__allForwards19aSet = true;
710             }
711         }
712         return allForwards19a;
713     }
714 
715    /**
716     * @see JSFUseCase#getPortletViewForwardName()
717     * @return String
718     */
719     protected abstract String handleGetPortletViewForwardName();
720 
721     private String __portletViewForwardName20a;
722     private boolean __portletViewForwardName20aSet = false;
723 
724     /**
725      * The forward name for the portlet 'view' page.
726      * @return (String)handleGetPortletViewForwardName()
727      */
728     public final String getPortletViewForwardName()
729     {
730         String portletViewForwardName20a = this.__portletViewForwardName20a;
731         if (!this.__portletViewForwardName20aSet)
732         {
733             // portletViewForwardName has no pre constraints
734             portletViewForwardName20a = handleGetPortletViewForwardName();
735             // portletViewForwardName has no post constraints
736             this.__portletViewForwardName20a = portletViewForwardName20a;
737             if (isMetafacadePropertyCachingEnabled())
738             {
739                 this.__portletViewForwardName20aSet = true;
740             }
741         }
742         return portletViewForwardName20a;
743     }
744 
745    /**
746     * @see JSFUseCase#getPortletEditForwardName()
747     * @return String
748     */
749     protected abstract String handleGetPortletEditForwardName();
750 
751     private String __portletEditForwardName21a;
752     private boolean __portletEditForwardName21aSet = false;
753 
754     /**
755      * The forward name for the portlet 'edit' page.
756      * @return (String)handleGetPortletEditForwardName()
757      */
758     public final String getPortletEditForwardName()
759     {
760         String portletEditForwardName21a = this.__portletEditForwardName21a;
761         if (!this.__portletEditForwardName21aSet)
762         {
763             // portletEditForwardName has no pre constraints
764             portletEditForwardName21a = handleGetPortletEditForwardName();
765             // portletEditForwardName has no post constraints
766             this.__portletEditForwardName21a = portletEditForwardName21a;
767             if (isMetafacadePropertyCachingEnabled())
768             {
769                 this.__portletEditForwardName21aSet = true;
770             }
771         }
772         return portletEditForwardName21a;
773     }
774 
775    /**
776     * @see JSFUseCase#getPortletHelpForwardName()
777     * @return String
778     */
779     protected abstract String handleGetPortletHelpForwardName();
780 
781     private String __portletHelpForwardName22a;
782     private boolean __portletHelpForwardName22aSet = false;
783 
784     /**
785      * The forward name for the portlet 'help' page.
786      * @return (String)handleGetPortletHelpForwardName()
787      */
788     public final String getPortletHelpForwardName()
789     {
790         String portletHelpForwardName22a = this.__portletHelpForwardName22a;
791         if (!this.__portletHelpForwardName22aSet)
792         {
793             // portletHelpForwardName has no pre constraints
794             portletHelpForwardName22a = handleGetPortletHelpForwardName();
795             // portletHelpForwardName has no post constraints
796             this.__portletHelpForwardName22a = portletHelpForwardName22a;
797             if (isMetafacadePropertyCachingEnabled())
798             {
799                 this.__portletHelpForwardName22aSet = true;
800             }
801         }
802         return portletHelpForwardName22a;
803     }
804 
805    /**
806     * @see JSFUseCase#getPortletViewPath()
807     * @return String
808     */
809     protected abstract String handleGetPortletViewPath();
810 
811     private String __portletViewPath23a;
812     private boolean __portletViewPath23aSet = false;
813 
814     /**
815      * The path to the portlet 'view' page.
816      * @return (String)handleGetPortletViewPath()
817      */
818     public final String getPortletViewPath()
819     {
820         String portletViewPath23a = this.__portletViewPath23a;
821         if (!this.__portletViewPath23aSet)
822         {
823             // portletViewPath has no pre constraints
824             portletViewPath23a = handleGetPortletViewPath();
825             // portletViewPath has no post constraints
826             this.__portletViewPath23a = portletViewPath23a;
827             if (isMetafacadePropertyCachingEnabled())
828             {
829                 this.__portletViewPath23aSet = true;
830             }
831         }
832         return portletViewPath23a;
833     }
834 
835    /**
836     * @see JSFUseCase#getPortletEditPath()
837     * @return String
838     */
839     protected abstract String handleGetPortletEditPath();
840 
841     private String __portletEditPath24a;
842     private boolean __portletEditPath24aSet = false;
843 
844     /**
845      * The path to the portlet 'edit' page.
846      * @return (String)handleGetPortletEditPath()
847      */
848     public final String getPortletEditPath()
849     {
850         String portletEditPath24a = this.__portletEditPath24a;
851         if (!this.__portletEditPath24aSet)
852         {
853             // portletEditPath has no pre constraints
854             portletEditPath24a = handleGetPortletEditPath();
855             // portletEditPath has no post constraints
856             this.__portletEditPath24a = portletEditPath24a;
857             if (isMetafacadePropertyCachingEnabled())
858             {
859                 this.__portletEditPath24aSet = true;
860             }
861         }
862         return portletEditPath24a;
863     }
864 
865    /**
866     * @see JSFUseCase#getPortletHelpPath()
867     * @return String
868     */
869     protected abstract String handleGetPortletHelpPath();
870 
871     private String __portletHelpPath25a;
872     private boolean __portletHelpPath25aSet = false;
873 
874     /**
875      * The path to the 'help' page of the portlet.
876      * @return (String)handleGetPortletHelpPath()
877      */
878     public final String getPortletHelpPath()
879     {
880         String portletHelpPath25a = this.__portletHelpPath25a;
881         if (!this.__portletHelpPath25aSet)
882         {
883             // portletHelpPath has no pre constraints
884             portletHelpPath25a = handleGetPortletHelpPath();
885             // portletHelpPath has no post constraints
886             this.__portletHelpPath25a = portletHelpPath25a;
887             if (isMetafacadePropertyCachingEnabled())
888             {
889                 this.__portletHelpPath25aSet = true;
890             }
891         }
892         return portletHelpPath25a;
893     }
894 
895     // ---------------- business methods ----------------------
896 
897     /**
898      * Method to be implemented in descendants
899      * Retrieves all navigation rules for the faces-config.xml
900      * @return Collection
901      */
902     protected abstract Collection handleGetNavigationRules();
903 
904     /**
905      * Retrieves all navigation rules for the faces-config.xml
906      * @return handleGetNavigationRules()
907      */
908     public Collection getNavigationRules()
909     {
910         // getNavigationRules has no pre constraints
911         Collection returnValue = handleGetNavigationRules();
912         // getNavigationRules has no post constraints
913         return returnValue;
914     }
915 
916     /**
917      * Method to be implemented in descendants
918      * TODO: Model Documentation for
919      * JSFUseCase.getNavigationChildren
920      * @return Collection
921      */
922     protected abstract Collection handleGetNavigationChildren();
923 
924     /**
925      * TODO: Model Documentation for
926      * JSFUseCase.getNavigationChildren
927      * @return handleGetNavigationChildren()
928      */
929     public Collection getNavigationChildren()
930     {
931         // getNavigationChildren has no pre constraints
932         Collection returnValue = handleGetNavigationChildren();
933         // getNavigationChildren has no post constraints
934         return returnValue;
935     }
936 
937     /**
938      * Method to be implemented in descendants
939      * TODO: Model Documentation for
940      * JSFUseCase.getNavigationParents
941      * @return Collection
942      */
943     protected abstract Collection handleGetNavigationParents();
944 
945     /**
946      * TODO: Model Documentation for
947      * JSFUseCase.getNavigationParents
948      * @return handleGetNavigationParents()
949      */
950     public Collection getNavigationParents()
951     {
952         // getNavigationParents has no pre constraints
953         Collection returnValue = handleGetNavigationParents();
954         // getNavigationParents has no post constraints
955         return returnValue;
956     }
957 
958     /**
959      * Method to be implemented in descendants
960      * TODO: Model Documentation for
961      * JSFUseCase.getActionRoles
962      * @return String
963      */
964     protected abstract String handleGetActionRoles();
965 
966     /**
967      * TODO: Model Documentation for
968      * JSFUseCase.getActionRoles
969      * @return handleGetActionRoles()
970      */
971     public String getActionRoles()
972     {
973         // getActionRoles has no pre constraints
974         String returnValue = handleGetActionRoles();
975         // getActionRoles has no post constraints
976         return returnValue;
977     }
978 
979     // ------------- associations ------------------
980 
981     /**
982      * Represents a JSF use case.
983      * @return (List<JSFForward>)handleGetForwards()
984      */
985     public final List<JSFForward> getForwards()
986     {
987         List<JSFForward> getForwards1r = null;
988         // jSFUseCase has no pre constraints
989         List result = handleGetForwards();
990         List shieldedResult = this.shieldedElements(result);
991         try
992         {
993             getForwards1r = (List<JSFForward>)shieldedResult;
994         }
995         catch (ClassCastException ex)
996         {
997             // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
998             JSFUseCaseLogic.logger.warn("incorrect metafacade cast for JSFUseCaseLogic.getForwards List<JSFForward> " + result + ": " + shieldedResult);
999         }
1000         // jSFUseCase has no post constraints
1001         return getForwards1r;
1002     }
1003 
1004     /**
1005      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
1006      * @return  List
1007      */
1008     protected abstract List handleGetForwards();
1009 
1010     private List<JSFAction> __getActionForwards2r;
1011     private boolean __getActionForwards2rSet = false;
1012 
1013     /**
1014      * Represents a JSF use case.
1015      * @return (List<JSFAction>)handleGetActionForwards()
1016      */
1017     public final List<JSFAction> getActionForwards()
1018     {
1019         List<JSFAction> getActionForwards2r = this.__getActionForwards2r;
1020         if (!this.__getActionForwards2rSet)
1021         {
1022             // jSFUseCase has no pre constraints
1023             List result = handleGetActionForwards();
1024             List shieldedResult = this.shieldedElements(result);
1025             try
1026             {
1027                 getActionForwards2r = (List<JSFAction>)shieldedResult;
1028             }
1029             catch (ClassCastException ex)
1030             {
1031                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
1032                 JSFUseCaseLogic.logger.warn("incorrect metafacade cast for JSFUseCaseLogic.getActionForwards List<JSFAction> " + result + ": " + shieldedResult);
1033             }
1034             // jSFUseCase has no post constraints
1035             this.__getActionForwards2r = getActionForwards2r;
1036             if (isMetafacadePropertyCachingEnabled())
1037             {
1038                 this.__getActionForwards2rSet = true;
1039             }
1040         }
1041         return getActionForwards2r;
1042     }
1043 
1044     /**
1045      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
1046      * @return  List
1047      */
1048     protected abstract List handleGetActionForwards();
1049 
1050     private Collection<JSFView> __getAllViews3r;
1051     private boolean __getAllViews3rSet = false;
1052 
1053     /**
1054      * Represents a JSF use case.
1055      * @return (Collection<JSFView>)handleGetAllViews()
1056      */
1057     public final Collection<JSFView> getAllViews()
1058     {
1059         Collection<JSFView> getAllViews3r = this.__getAllViews3r;
1060         if (!this.__getAllViews3rSet)
1061         {
1062             // jSFUseCase has no pre constraints
1063             Collection result = handleGetAllViews();
1064             List shieldedResult = this.shieldedElements(result);
1065             try
1066             {
1067                 getAllViews3r = (Collection<JSFView>)shieldedResult;
1068             }
1069             catch (ClassCastException ex)
1070             {
1071                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
1072                 JSFUseCaseLogic.logger.warn("incorrect metafacade cast for JSFUseCaseLogic.getAllViews Collection<JSFView> " + result + ": " + shieldedResult);
1073             }
1074             // jSFUseCase has no post constraints
1075             this.__getAllViews3r = getAllViews3r;
1076             if (isMetafacadePropertyCachingEnabled())
1077             {
1078                 this.__getAllViews3rSet = true;
1079             }
1080         }
1081         return getAllViews3r;
1082     }
1083 
1084     /**
1085      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
1086      * @return  Collection
1087      */
1088     protected abstract Collection handleGetAllViews();
1089 
1090     private JSFPortletPreferences __getPreferences4r;
1091     private boolean __getPreferences4rSet = false;
1092 
1093     /**
1094      * The use case to which the portlet preferences belongs.
1095      * @return (JSFPortletPreferences)handleGetPreferences()
1096      */
1097     public final JSFPortletPreferences getPreferences()
1098     {
1099         JSFPortletPreferences getPreferences4r = this.__getPreferences4r;
1100         if (!this.__getPreferences4rSet)
1101         {
1102             // useCase has no pre constraints
1103             Object result = handleGetPreferences();
1104             MetafacadeBase shieldedResult = this.shieldedElement(result);
1105             try
1106             {
1107                 getPreferences4r = (JSFPortletPreferences)shieldedResult;
1108             }
1109             catch (ClassCastException ex)
1110             {
1111                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
1112                 JSFUseCaseLogic.logger.warn("incorrect metafacade cast for JSFUseCaseLogic.getPreferences JSFPortletPreferences " + result + ": " + shieldedResult);
1113             }
1114             // useCase has no post constraints
1115             this.__getPreferences4r = getPreferences4r;
1116             if (isMetafacadePropertyCachingEnabled())
1117             {
1118                 this.__getPreferences4rSet = true;
1119             }
1120         }
1121         return getPreferences4r;
1122     }
1123 
1124     /**
1125      * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type
1126      * @return Object
1127      */
1128     protected abstract Object handleGetPreferences();
1129 
1130     private List<JSFUseCase> __getRegistrationUseCases5r;
1131     private boolean __getRegistrationUseCases5rSet = false;
1132 
1133     /**
1134      * Represents a JSF use case.
1135      * @return (List<JSFUseCase>)handleGetRegistrationUseCases()
1136      */
1137     public final List<JSFUseCase> getRegistrationUseCases()
1138     {
1139         List<JSFUseCase> getRegistrationUseCases5r = this.__getRegistrationUseCases5r;
1140         if (!this.__getRegistrationUseCases5rSet)
1141         {
1142             // jSFUseCase has no pre constraints
1143             List result = handleGetRegistrationUseCases();
1144             List shieldedResult = this.shieldedElements(result);
1145             try
1146             {
1147                 getRegistrationUseCases5r = (List<JSFUseCase>)shieldedResult;
1148             }
1149             catch (ClassCastException ex)
1150             {
1151                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
1152                 JSFUseCaseLogic.logger.warn("incorrect metafacade cast for JSFUseCaseLogic.getRegistrationUseCases List<JSFUseCase> " + result + ": " + shieldedResult);
1153             }
1154             // jSFUseCase has no post constraints
1155             this.__getRegistrationUseCases5r = getRegistrationUseCases5r;
1156             if (isMetafacadePropertyCachingEnabled())
1157             {
1158                 this.__getRegistrationUseCases5rSet = true;
1159             }
1160         }
1161         return getRegistrationUseCases5r;
1162     }
1163 
1164     /**
1165      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
1166      * @return  List
1167      */
1168     protected abstract List handleGetRegistrationUseCases();
1169 
1170     /**
1171      * @return true
1172      * @see FrontEndUseCase
1173      */
1174     public boolean isFrontEndUseCaseMetaType()
1175     {
1176         return true;
1177     }
1178 
1179     /**
1180      * @return true
1181      * @see org.andromda.metafacades.uml.UseCaseFacade
1182      */
1183     public boolean isUseCaseFacadeMetaType()
1184     {
1185         return true;
1186     }
1187 
1188     /**
1189      * @return true
1190      * @see org.andromda.metafacades.uml.NamespaceFacade
1191      */
1192     public boolean isNamespaceFacadeMetaType()
1193     {
1194         return true;
1195     }
1196 
1197     /**
1198      * @return true
1199      * @see ClassifierFacade
1200      */
1201     public boolean isClassifierFacadeMetaType()
1202     {
1203         return true;
1204     }
1205 
1206     /**
1207      * @return true
1208      * @see GeneralizableElementFacade
1209      */
1210     public boolean isGeneralizableElementFacadeMetaType()
1211     {
1212         return true;
1213     }
1214 
1215     /**
1216      * @return true
1217      * @see ModelElementFacade
1218      */
1219     public boolean isModelElementFacadeMetaType()
1220     {
1221         return true;
1222     }
1223 
1224     // ----------- delegates to FrontEndUseCase ------------
1225     /**
1226      * Return the attribute which name matches the parameter
1227      * @see ClassifierFacade#findAttribute(String name)
1228      */
1229     public AttributeFacade findAttribute(String name)
1230     {
1231         return this.getSuperFrontEndUseCase().findAttribute(name);
1232     }
1233 
1234     /**
1235      * Those abstraction dependencies for which this classifier is the client.
1236      * @see ClassifierFacade#getAbstractions()
1237      */
1238     public Collection<ClassifierFacade> getAbstractions()
1239     {
1240         return this.getSuperFrontEndUseCase().getAbstractions();
1241     }
1242 
1243     /**
1244      * Lists all classes associated to this one and any ancestor classes (through generalization).
1245      * There will be no duplicates. The order of the elements is predictable.
1246      * @see ClassifierFacade#getAllAssociatedClasses()
1247      */
1248     public Collection<ClassifierFacade> getAllAssociatedClasses()
1249     {
1250         return this.getSuperFrontEndUseCase().getAllAssociatedClasses();
1251     }
1252 
1253     /**
1254      * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
1255      * any attributes and navigable connecting association ends.
1256      * @see ClassifierFacade#getAllProperties()
1257      */
1258     public Collection<ModelElementFacade> getAllProperties()
1259     {
1260         return this.getSuperFrontEndUseCase().getAllProperties();
1261     }
1262 
1263     /**
1264      * A collection containing all required and/or read-only 'properties' of the classifier and its
1265      * ancestors. Properties are any attributes and navigable connecting association ends.
1266      * @see ClassifierFacade#getAllRequiredConstructorParameters()
1267      */
1268     public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
1269     {
1270         return this.getSuperFrontEndUseCase().getAllRequiredConstructorParameters();
1271     }
1272 
1273     /**
1274      * Gets the array type for this classifier.  If this classifier already represents an array, it
1275      * just returns itself.
1276      * @see ClassifierFacade#getArray()
1277      */
1278     public ClassifierFacade getArray()
1279     {
1280         return this.getSuperFrontEndUseCase().getArray();
1281     }
1282 
1283     /**
1284      * The name of the classifier as an array.
1285      * @see ClassifierFacade#getArrayName()
1286      */
1287     public String getArrayName()
1288     {
1289         return this.getSuperFrontEndUseCase().getArrayName();
1290     }
1291 
1292     /**
1293      * Lists the classes associated to this one, there is no repitition of classes. The order of the
1294      * elements is predictable.
1295      * @see ClassifierFacade#getAssociatedClasses()
1296      */
1297     public Collection<ClassifierFacade> getAssociatedClasses()
1298     {
1299         return this.getSuperFrontEndUseCase().getAssociatedClasses();
1300     }
1301 
1302     /**
1303      * Gets the association ends belonging to a classifier.
1304      * @see ClassifierFacade#getAssociationEnds()
1305      */
1306     public List<AssociationEndFacade> getAssociationEnds()
1307     {
1308         return this.getSuperFrontEndUseCase().getAssociationEnds();
1309     }
1310 
1311     /**
1312      * Gets the attributes that belong to the classifier.
1313      * @see ClassifierFacade#getAttributes()
1314      */
1315     public List<AttributeFacade> getAttributes()
1316     {
1317         return this.getSuperFrontEndUseCase().getAttributes();
1318     }
1319 
1320     /**
1321      * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
1322      * hierarchy and gets the attributes from the super classes as well.
1323      * @see ClassifierFacade#getAttributes(boolean follow)
1324      */
1325     public List<AttributeFacade> getAttributes(boolean follow)
1326     {
1327         return this.getSuperFrontEndUseCase().getAttributes(follow);
1328     }
1329 
1330     /**
1331      * The fully qualified name of the classifier as an array.
1332      * @see ClassifierFacade#getFullyQualifiedArrayName()
1333      */
1334     public String getFullyQualifiedArrayName()
1335     {
1336         return this.getSuperFrontEndUseCase().getFullyQualifiedArrayName();
1337     }
1338 
1339     /**
1340      * Returns all those operations that could be implemented at this classifier's level. This means
1341      * the operations owned by this classifier as well as any realized interface's operations
1342      * (recursively) in case this classifier itself is not already an interface, or generalized when
1343      * this classifier is an interface.
1344      * @see ClassifierFacade#getImplementationOperations()
1345      */
1346     public Collection<OperationFacade> getImplementationOperations()
1347     {
1348         return this.getSuperFrontEndUseCase().getImplementationOperations();
1349     }
1350 
1351     /**
1352      * A comma separated list of the fully qualified names of all implemented interfaces.
1353      * @see ClassifierFacade#getImplementedInterfaceList()
1354      */
1355     public String getImplementedInterfaceList()
1356     {
1357         return this.getSuperFrontEndUseCase().getImplementedInterfaceList();
1358     }
1359 
1360     /**
1361      * Those attributes that are scoped to an instance of this class.
1362      * @see ClassifierFacade#getInstanceAttributes()
1363      */
1364     public Collection<AttributeFacade> getInstanceAttributes()
1365     {
1366         return this.getSuperFrontEndUseCase().getInstanceAttributes();
1367     }
1368 
1369     /**
1370      * Those operations that are scoped to an instance of this class.
1371      * @see ClassifierFacade#getInstanceOperations()
1372      */
1373     public List<OperationFacade> getInstanceOperations()
1374     {
1375         return this.getSuperFrontEndUseCase().getInstanceOperations();
1376     }
1377 
1378     /**
1379      * Those interfaces that are abstractions of this classifier, this basically means this
1380      * classifier realizes them.
1381      * @see ClassifierFacade#getInterfaceAbstractions()
1382      */
1383     public Collection<ClassifierFacade> getInterfaceAbstractions()
1384     {
1385         return this.getSuperFrontEndUseCase().getInterfaceAbstractions();
1386     }
1387 
1388     /**
1389      * A String representing a new Constructor declaration for this classifier type to be used in a
1390      * Java environment.
1391      * @see ClassifierFacade#getJavaNewString()
1392      */
1393     public String getJavaNewString()
1394     {
1395         return this.getSuperFrontEndUseCase().getJavaNewString();
1396     }
1397 
1398     /**
1399      * A String representing the null-value for this classifier type to be used in a Java
1400      * environment.
1401      * @see ClassifierFacade#getJavaNullString()
1402      */
1403     public String getJavaNullString()
1404     {
1405         return this.getSuperFrontEndUseCase().getJavaNullString();
1406     }
1407 
1408     /**
1409      * The other ends of this classifier's association ends which are navigable.
1410      * @see ClassifierFacade#getNavigableConnectingEnds()
1411      */
1412     public Collection<AssociationEndFacade> getNavigableConnectingEnds()
1413     {
1414         return this.getSuperFrontEndUseCase().getNavigableConnectingEnds();
1415     }
1416 
1417     /**
1418      * Get the other ends of this classifier's association ends which are navigable and if 'follow'
1419      * is true goes up the inheritance hierarchy and gets the super association ends as well.
1420      * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
1421      */
1422     public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
1423     {
1424         return this.getSuperFrontEndUseCase().getNavigableConnectingEnds(follow);
1425     }
1426 
1427     /**
1428      * Assuming that the classifier is an array, this will return the non array type of the
1429      * classifier from
1430      * the model.  If the classifier is NOT an array, it will just return itself.
1431      * @see ClassifierFacade#getNonArray()
1432      */
1433     public ClassifierFacade getNonArray()
1434     {
1435         return this.getSuperFrontEndUseCase().getNonArray();
1436     }
1437 
1438     /**
1439      * The attributes from this classifier in the form of an operation call (this example would be
1440      * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
1441      * classifier, the result would be an empty '()'.
1442      * @see ClassifierFacade#getOperationCallFromAttributes()
1443      */
1444     public String getOperationCallFromAttributes()
1445     {
1446         return this.getSuperFrontEndUseCase().getOperationCallFromAttributes();
1447     }
1448 
1449     /**
1450      * The operations owned by this classifier.
1451      * @see ClassifierFacade#getOperations()
1452      */
1453     public List<OperationFacade> getOperations()
1454     {
1455         return this.getSuperFrontEndUseCase().getOperations();
1456     }
1457 
1458     /**
1459      * A collection containing all 'properties' of the classifier.  Properties are any attributes
1460      * and navigable connecting association ends.
1461      * @see ClassifierFacade#getProperties()
1462      */
1463     public List<ModelElementFacade> getProperties()
1464     {
1465         return this.getSuperFrontEndUseCase().getProperties();
1466     }
1467 
1468     /**
1469      * Gets all properties (attributes and navigable association ends) for the classifier and if
1470      * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
1471      * classes as well.
1472      * @see ClassifierFacade#getProperties(boolean follow)
1473      */
1474     public List getProperties(boolean follow)
1475     {
1476         return this.getSuperFrontEndUseCase().getProperties(follow);
1477     }
1478 
1479     /**
1480      * A collection containing all required and/or read-only 'properties' of the classifier. 
1481      * Properties are any attributes and navigable connecting association ends.
1482      * @see ClassifierFacade#getRequiredConstructorParameters()
1483      */
1484     public Collection<ModelElementFacade> getRequiredConstructorParameters()
1485     {
1486         return this.getSuperFrontEndUseCase().getRequiredConstructorParameters();
1487     }
1488 
1489     /**
1490      * Returns the serial version UID of the underlying model element.
1491      * @see ClassifierFacade#getSerialVersionUID()
1492      */
1493     public long getSerialVersionUID()
1494     {
1495         return this.getSuperFrontEndUseCase().getSerialVersionUID();
1496     }
1497 
1498     /**
1499      * Those attributes that are scoped to the definition of this class.
1500      * @see ClassifierFacade#getStaticAttributes()
1501      */
1502     public Collection<AttributeFacade> getStaticAttributes()
1503     {
1504         return this.getSuperFrontEndUseCase().getStaticAttributes();
1505     }
1506 
1507     /**
1508      * Those operations that are scoped to the definition of this class.
1509      * @see ClassifierFacade#getStaticOperations()
1510      */
1511     public List<OperationFacade> getStaticOperations()
1512     {
1513         return this.getSuperFrontEndUseCase().getStaticOperations();
1514     }
1515 
1516     /**
1517      * This class' superclass, returns the generalization if it is a ClassifierFacade, null
1518      * otherwise.
1519      * @see ClassifierFacade#getSuperClass()
1520      */
1521     public ClassifierFacade getSuperClass()
1522     {
1523         return this.getSuperFrontEndUseCase().getSuperClass();
1524     }
1525 
1526     /**
1527      * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
1528      * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
1529      * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
1530      * 'wrapperMappingsUri', this property must point to the location of the mappings file which
1531      * maps the primitives to wrapper types.
1532      * @see ClassifierFacade#getWrapperName()
1533      */
1534     public String getWrapperName()
1535     {
1536         return this.getSuperFrontEndUseCase().getWrapperName();
1537     }
1538 
1539     /**
1540      * Indicates if this classifier is 'abstract'.
1541      * @see ClassifierFacade#isAbstract()
1542      */
1543     public boolean isAbstract()
1544     {
1545         return this.getSuperFrontEndUseCase().isAbstract();
1546     }
1547 
1548     /**
1549      * True if this classifier represents an array type. False otherwise.
1550      * @see ClassifierFacade#isArrayType()
1551      */
1552     public boolean isArrayType()
1553     {
1554         return this.getSuperFrontEndUseCase().isArrayType();
1555     }
1556 
1557     /**
1558      * True if the ClassifierFacade is an AssociationClass.
1559      * @see ClassifierFacade#isAssociationClass()
1560      */
1561     public boolean isAssociationClass()
1562     {
1563         return this.getSuperFrontEndUseCase().isAssociationClass();
1564     }
1565 
1566     /**
1567      * Returns true if this type represents a Blob type.
1568      * @see ClassifierFacade#isBlobType()
1569      */
1570     public boolean isBlobType()
1571     {
1572         return this.getSuperFrontEndUseCase().isBlobType();
1573     }
1574 
1575     /**
1576      * Indicates if this type represents a boolean type or not.
1577      * @see ClassifierFacade#isBooleanType()
1578      */
1579     public boolean isBooleanType()
1580     {
1581         return this.getSuperFrontEndUseCase().isBooleanType();
1582     }
1583 
1584     /**
1585      * Indicates if this type represents a char, Character, or java.lang.Character type or not.
1586      * @see ClassifierFacade#isCharacterType()
1587      */
1588     public boolean isCharacterType()
1589     {
1590         return this.getSuperFrontEndUseCase().isCharacterType();
1591     }
1592 
1593     /**
1594      * Returns true if this type represents a Clob type.
1595      * @see ClassifierFacade#isClobType()
1596      */
1597     public boolean isClobType()
1598     {
1599         return this.getSuperFrontEndUseCase().isClobType();
1600     }
1601 
1602     /**
1603      * True if this classifier represents a collection type. False otherwise.
1604      * @see ClassifierFacade#isCollectionType()
1605      */
1606     public boolean isCollectionType()
1607     {
1608         return this.getSuperFrontEndUseCase().isCollectionType();
1609     }
1610 
1611     /**
1612      * True/false depending on whether or not this classifier represents a datatype. A data type is
1613      * a type whose instances are identified only by their value. A data type may contain attributes
1614      * to support the modeling of structured data types.
1615      * @see ClassifierFacade#isDataType()
1616      */
1617     public boolean isDataType()
1618     {
1619         return this.getSuperFrontEndUseCase().isDataType();
1620     }
1621 
1622     /**
1623      * True when this classifier is a date type.
1624      * @see ClassifierFacade#isDateType()
1625      */
1626     public boolean isDateType()
1627     {
1628         return this.getSuperFrontEndUseCase().isDateType();
1629     }
1630 
1631     /**
1632      * Indicates if this type represents a Double type or not.
1633      * @see ClassifierFacade#isDoubleType()
1634      */
1635     public boolean isDoubleType()
1636     {
1637         return this.getSuperFrontEndUseCase().isDoubleType();
1638     }
1639 
1640     /**
1641      * Indicates whether or not this classifier represents an "EmbeddedValue'.
1642      * @see ClassifierFacade#isEmbeddedValue()
1643      */
1644     public boolean isEmbeddedValue()
1645     {
1646         return this.getSuperFrontEndUseCase().isEmbeddedValue();
1647     }
1648 
1649     /**
1650      * True if this classifier is in fact marked as an enumeration.
1651      * @see ClassifierFacade#isEnumeration()
1652      */
1653     public boolean isEnumeration()
1654     {
1655         return this.getSuperFrontEndUseCase().isEnumeration();
1656     }
1657 
1658     /**
1659      * Returns true if this type represents a 'file' type.
1660      * @see ClassifierFacade#isFileType()
1661      */
1662     public boolean isFileType()
1663     {
1664         return this.getSuperFrontEndUseCase().isFileType();
1665     }
1666 
1667     /**
1668      * Indicates if this type represents a Float type or not.
1669      * @see ClassifierFacade#isFloatType()
1670      */
1671     public boolean isFloatType()
1672     {
1673         return this.getSuperFrontEndUseCase().isFloatType();
1674     }
1675 
1676     /**
1677      * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
1678      * @see ClassifierFacade#isIntegerType()
1679      */
1680     public boolean isIntegerType()
1681     {
1682         return this.getSuperFrontEndUseCase().isIntegerType();
1683     }
1684 
1685     /**
1686      * True/false depending on whether or not this Classifier represents an interface.
1687      * @see ClassifierFacade#isInterface()
1688      */
1689     public boolean isInterface()
1690     {
1691         return this.getSuperFrontEndUseCase().isInterface();
1692     }
1693 
1694     /**
1695      * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
1696      * @see ClassifierFacade#isLeaf()
1697      */
1698     public boolean isLeaf()
1699     {
1700         return this.getSuperFrontEndUseCase().isLeaf();
1701     }
1702 
1703     /**
1704      * True if this classifier represents a list type. False otherwise.
1705      * @see ClassifierFacade#isListType()
1706      */
1707     public boolean isListType()
1708     {
1709         return this.getSuperFrontEndUseCase().isListType();
1710     }
1711 
1712     /**
1713      * Indicates if this type represents a Long type or not.
1714      * @see ClassifierFacade#isLongType()
1715      */
1716     public boolean isLongType()
1717     {
1718         return this.getSuperFrontEndUseCase().isLongType();
1719     }
1720 
1721     /**
1722      * Indicates whether or not this classifier represents a Map type.
1723      * @see ClassifierFacade#isMapType()
1724      */
1725     public boolean isMapType()
1726     {
1727         return this.getSuperFrontEndUseCase().isMapType();
1728     }
1729 
1730     /**
1731      * Indicates whether or not this classifier represents a primitive type.
1732      * @see ClassifierFacade#isPrimitive()
1733      */
1734     public boolean isPrimitive()
1735     {
1736         return this.getSuperFrontEndUseCase().isPrimitive();
1737     }
1738 
1739     /**
1740      * True if this classifier represents a set type. False otherwise.
1741      * @see ClassifierFacade#isSetType()
1742      */
1743     public boolean isSetType()
1744     {
1745         return this.getSuperFrontEndUseCase().isSetType();
1746     }
1747 
1748     /**
1749      * Indicates whether or not this classifier represents a string type.
1750      * @see ClassifierFacade#isStringType()
1751      */
1752     public boolean isStringType()
1753     {
1754         return this.getSuperFrontEndUseCase().isStringType();
1755     }
1756 
1757     /**
1758      * Indicates whether or not this classifier represents a time type.
1759      * @see ClassifierFacade#isTimeType()
1760      */
1761     public boolean isTimeType()
1762     {
1763         return this.getSuperFrontEndUseCase().isTimeType();
1764     }
1765 
1766     /**
1767      * Returns true if this type is a wrapped primitive type.
1768      * @see ClassifierFacade#isWrappedPrimitive()
1769      */
1770     public boolean isWrappedPrimitive()
1771     {
1772         return this.getSuperFrontEndUseCase().isWrappedPrimitive();
1773     }
1774 
1775     /**
1776      * The actions for this use-case. This will include the initial action to start the use-case.
1777      * @see FrontEndUseCase#getActions()
1778      */
1779     public List<FrontEndAction> getActions()
1780     {
1781         return this.getSuperFrontEndUseCase().getActions();
1782     }
1783 
1784     /**
1785      * Returns the activity graph describing this use-case in more detail.
1786      * @see FrontEndUseCase#getActivityGraph()
1787      */
1788     public FrontEndActivityGraph getActivityGraph()
1789     {
1790         return this.getSuperFrontEndUseCase().getActivityGraph();
1791     }
1792 
1793     /**
1794      * All roles that directly or indirectly related to any "front-end" use cases.
1795      * @see FrontEndUseCase#getAllRoles()
1796      */
1797     public List<Role> getAllRoles()
1798     {
1799         return this.getSuperFrontEndUseCase().getAllRoles();
1800     }
1801 
1802     /**
1803      * Returns all struts use-cases in this "front end" application.
1804      * @see FrontEndUseCase#getAllUseCases()
1805      */
1806     public List<FrontEndUseCase> getAllUseCases()
1807     {
1808         return this.getSuperFrontEndUseCase().getAllUseCases();
1809     }
1810 
1811     /**
1812      * Returns the controller for this use-case.
1813      * @see FrontEndUseCase#getController()
1814      */
1815     public FrontEndController getController()
1816     {
1817         return this.getSuperFrontEndUseCase().getController();
1818     }
1819 
1820     /**
1821      * The first view of this use case, this may actually return a view of another use case if the
1822      * first is found by traveling through the final state.
1823      * @see FrontEndUseCase#getInitialView()
1824      */
1825     public FrontEndView getInitialView()
1826     {
1827         return this.getSuperFrontEndUseCase().getInitialView();
1828     }
1829 
1830     /**
1831      * The final states linking to this use case
1832      * @see FrontEndUseCase#getReferencingFinalStates()
1833      */
1834     public List<FrontEndFinalState> getReferencingFinalStates()
1835     {
1836         return this.getSuperFrontEndUseCase().getReferencingFinalStates();
1837     }
1838 
1839     /**
1840      * Returns all roles that are directly and indirectly associated to this use-case.
1841      * @see FrontEndUseCase#getRoles()
1842      */
1843     public List<Role> getRoles()
1844     {
1845         return this.getSuperFrontEndUseCase().getRoles();
1846     }
1847 
1848     /**
1849      * The variables for all views in this use-case. A parameter qualifies to be a variable when it
1850      * explicitely and directly receives it via an action.
1851      * @see FrontEndUseCase#getViewVariables()
1852      */
1853     public List<FrontEndParameter> getViewVariables()
1854     {
1855         return this.getSuperFrontEndUseCase().getViewVariables();
1856     }
1857 
1858     /**
1859      * All views that are part of this use case.
1860      * @see FrontEndUseCase#getViews()
1861      */
1862     public List<FrontEndView> getViews()
1863     {
1864         return this.getSuperFrontEndUseCase().getViews();
1865     }
1866 
1867     /**
1868      * True if this use-case is the entry point to the front end.
1869      * @see FrontEndUseCase#isEntryUseCase()
1870      */
1871     public boolean isEntryUseCase()
1872     {
1873         return this.getSuperFrontEndUseCase().isEntryUseCase();
1874     }
1875 
1876     /**
1877      * Indicates if this use case is "secured".  This is true when there is at least one role
1878      * associated to it.
1879      * @see FrontEndUseCase#isSecured()
1880      */
1881     public boolean isSecured()
1882     {
1883         return this.getSuperFrontEndUseCase().isSecured();
1884     }
1885 
1886     /**
1887      * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
1888      * to true.
1889      * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
1890      */
1891     public Object findTaggedValue(String tagName, boolean follow)
1892     {
1893         return this.getSuperFrontEndUseCase().findTaggedValue(tagName, follow);
1894     }
1895 
1896     /**
1897      * All generalizations for this generalizable element, goes up the inheritance tree.
1898      * @see GeneralizableElementFacade#getAllGeneralizations()
1899      */
1900     public Collection<GeneralizableElementFacade> getAllGeneralizations()
1901     {
1902         return this.getSuperFrontEndUseCase().getAllGeneralizations();
1903     }
1904 
1905     /**
1906      * All specializations (travels down the inheritance hierarchy).
1907      * @see GeneralizableElementFacade#getAllSpecializations()
1908      */
1909     public Collection<GeneralizableElementFacade> getAllSpecializations()
1910     {
1911         return this.getSuperFrontEndUseCase().getAllSpecializations();
1912     }
1913 
1914     /**
1915      * Gets the direct generalization for this generalizable element.
1916      * @see GeneralizableElementFacade#getGeneralization()
1917      */
1918     public GeneralizableElementFacade getGeneralization()
1919     {
1920         return this.getSuperFrontEndUseCase().getGeneralization();
1921     }
1922 
1923     /**
1924      * Gets the actual links that this generalization element is part of (it plays either the
1925      * specialization or generalization).
1926      * @see GeneralizableElementFacade#getGeneralizationLinks()
1927      */
1928     public Collection<GeneralizationFacade> getGeneralizationLinks()
1929     {
1930         return this.getSuperFrontEndUseCase().getGeneralizationLinks();
1931     }
1932 
1933     /**
1934      * A comma separated list of the fully qualified names of all generalizations.
1935      * @see GeneralizableElementFacade#getGeneralizationList()
1936      */
1937     public String getGeneralizationList()
1938     {
1939         return this.getSuperFrontEndUseCase().getGeneralizationList();
1940     }
1941 
1942     /**
1943      * The element found when you recursively follow the generalization path up to the root. If an
1944      * element has no generalization itself will be considered the root.
1945      * @see GeneralizableElementFacade#getGeneralizationRoot()
1946      */
1947     public GeneralizableElementFacade getGeneralizationRoot()
1948     {
1949         return this.getSuperFrontEndUseCase().getGeneralizationRoot();
1950     }
1951 
1952     /**
1953      * Return all generalizations (ancestors) from this generalizable element.
1954      * @see GeneralizableElementFacade#getGeneralizations()
1955      */
1956     public Collection<GeneralizableElementFacade> getGeneralizations()
1957     {
1958         return this.getSuperFrontEndUseCase().getGeneralizations();
1959     }
1960 
1961     /**
1962      * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
1963      * @see GeneralizableElementFacade#getSpecializations()
1964      */
1965     public Collection<GeneralizableElementFacade> getSpecializations()
1966     {
1967         return this.getSuperFrontEndUseCase().getSpecializations();
1968     }
1969 
1970     /**
1971      * Copies all tagged values from the given ModelElementFacade to this model element facade.
1972      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
1973      */
1974     public void copyTaggedValues(ModelElementFacade element)
1975     {
1976         this.getSuperFrontEndUseCase().copyTaggedValues(element);
1977     }
1978 
1979     /**
1980      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
1981      * one found will be returned.
1982      * @see ModelElementFacade#findTaggedValue(String tagName)
1983      */
1984     public Object findTaggedValue(String tagName)
1985     {
1986         return this.getSuperFrontEndUseCase().findTaggedValue(tagName);
1987     }
1988 
1989     /**
1990      * Returns all the values for the tagged value with the specified name. The returned collection
1991      * will contains only String instances, or will be empty. Never null.
1992      * @see ModelElementFacade#findTaggedValues(String tagName)
1993      */
1994     public Collection<Object> findTaggedValues(String tagName)
1995     {
1996         return this.getSuperFrontEndUseCase().findTaggedValues(tagName);
1997     }
1998 
1999     /**
2000      * Returns the fully qualified name of the model element. The fully qualified name includes
2001      * complete package qualified name of the underlying model element. The templates parameter will
2002      * be replaced by the correct one given the binding relation of the parameter to this element.
2003      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2004      */
2005     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2006     {
2007         return this.getSuperFrontEndUseCase().getBindedFullyQualifiedName(bindedElement);
2008     }
2009 
2010     /**
2011      * Gets all constraints belonging to the model element.
2012      * @see ModelElementFacade#getConstraints()
2013      */
2014     public Collection<ConstraintFacade> getConstraints()
2015     {
2016         return this.getSuperFrontEndUseCase().getConstraints();
2017     }
2018 
2019     /**
2020      * Returns the constraints of the argument kind that have been placed onto this model. Typical
2021      * kinds are "inv", "pre" and "post". Other kinds are possible.
2022      * @see ModelElementFacade#getConstraints(String kind)
2023      */
2024     public Collection<ConstraintFacade> getConstraints(String kind)
2025     {
2026         return this.getSuperFrontEndUseCase().getConstraints(kind);
2027     }
2028 
2029     /**
2030      * Gets the documentation for the model element, The indent argument is prefixed to each line.
2031      * By default this method wraps lines after 64 characters.
2032      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
2033      * @see ModelElementFacade#getDocumentation(String indent)
2034      */
2035     public String getDocumentation(String indent)
2036     {
2037         return this.getSuperFrontEndUseCase().getDocumentation(indent);
2038     }
2039 
2040     /**
2041      * This method returns the documentation for this model element, with the lines wrapped after
2042      * the specified number of characters, values of less than 1 will indicate no line wrapping is
2043      * required. By default paragraphs are returned as HTML.
2044      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
2045      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
2046      */
2047     public String getDocumentation(String indent, int lineLength)
2048     {
2049         return this.getSuperFrontEndUseCase().getDocumentation(indent, lineLength);
2050     }
2051 
2052     /**
2053      * This method returns the documentation for this model element, with the lines wrapped after
2054      * the specified number of characters, values of less than 1 will indicate no line wrapping is
2055      * required. HTML style determines if HTML Escaping is applied.
2056      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
2057      */
2058     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
2059     {
2060         return this.getSuperFrontEndUseCase().getDocumentation(indent, lineLength, htmlStyle);
2061     }
2062 
2063     /**
2064      * The fully qualified name of this model element.
2065      * @see ModelElementFacade#getFullyQualifiedName()
2066      */
2067     public String getFullyQualifiedName()
2068     {
2069         return this.getSuperFrontEndUseCase().getFullyQualifiedName();
2070     }
2071 
2072     /**
2073      * Returns the fully qualified name of the model element. The fully qualified name includes
2074      * complete package qualified name of the underlying model element.  If modelName is true, then
2075      * the original name of the model element (the name contained within the model) will be the name
2076      * returned, otherwise a name from a language mapping will be returned.
2077      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
2078      */
2079     public String getFullyQualifiedName(boolean modelName)
2080     {
2081         return this.getSuperFrontEndUseCase().getFullyQualifiedName(modelName);
2082     }
2083 
2084     /**
2085      * Returns the fully qualified name as a path, the returned value always starts with out a slash
2086      * '/'.
2087      * @see ModelElementFacade#getFullyQualifiedNamePath()
2088      */
2089     public String getFullyQualifiedNamePath()
2090     {
2091         return this.getSuperFrontEndUseCase().getFullyQualifiedNamePath();
2092     }
2093 
2094     /**
2095      * Gets the unique identifier of the underlying model element.
2096      * @see ModelElementFacade#getId()
2097      */
2098     public String getId()
2099     {
2100         return this.getSuperFrontEndUseCase().getId();
2101     }
2102 
2103     /**
2104      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
2105      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
2106      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
2107      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
2108      * JDK5 compiler level.
2109      * @see ModelElementFacade#getKeywords()
2110      */
2111     public Collection<String> getKeywords()
2112     {
2113         return this.getSuperFrontEndUseCase().getKeywords();
2114     }
2115 
2116     /**
2117      * UML2: Retrieves a localized label for this named element.
2118      * @see ModelElementFacade#getLabel()
2119      */
2120     public String getLabel()
2121     {
2122         return this.getSuperFrontEndUseCase().getLabel();
2123     }
2124 
2125     /**
2126      * The language mappings that have been set for this model element.
2127      * @see ModelElementFacade#getLanguageMappings()
2128      */
2129     public TypeMappings getLanguageMappings()
2130     {
2131         return this.getSuperFrontEndUseCase().getLanguageMappings();
2132     }
2133 
2134     /**
2135      * Return the model containing this model element (multiple models may be loaded and processed
2136      * at the same time).
2137      * @see ModelElementFacade#getModel()
2138      */
2139     public ModelFacade getModel()
2140     {
2141         return this.getSuperFrontEndUseCase().getModel();
2142     }
2143 
2144     /**
2145      * The name of the model element.
2146      * @see ModelElementFacade#getName()
2147      */
2148     public String getName()
2149     {
2150         return this.getSuperFrontEndUseCase().getName();
2151     }
2152 
2153     /**
2154      * Gets the package to which this model element belongs.
2155      * @see ModelElementFacade#getPackage()
2156      */
2157     public ModelElementFacade getPackage()
2158     {
2159         return this.getSuperFrontEndUseCase().getPackage();
2160     }
2161 
2162     /**
2163      * The name of this model element's package.
2164      * @see ModelElementFacade#getPackageName()
2165      */
2166     public String getPackageName()
2167     {
2168         return this.getSuperFrontEndUseCase().getPackageName();
2169     }
2170 
2171     /**
2172      * Gets the package name (optionally providing the ability to retrieve the model name and not
2173      * the mapped name).
2174      * @see ModelElementFacade#getPackageName(boolean modelName)
2175      */
2176     public String getPackageName(boolean modelName)
2177     {
2178         return this.getSuperFrontEndUseCase().getPackageName(modelName);
2179     }
2180 
2181     /**
2182      * Returns the package as a path, the returned value always starts with out a slash '/'.
2183      * @see ModelElementFacade#getPackagePath()
2184      */
2185     public String getPackagePath()
2186     {
2187         return this.getSuperFrontEndUseCase().getPackagePath();
2188     }
2189 
2190     /**
2191      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
2192      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
2193      * the names of the containing namespaces starting at the root of the hierarchy and ending with
2194      * the name of the NamedElement itself.
2195      * @see ModelElementFacade#getQualifiedName()
2196      */
2197     public String getQualifiedName()
2198     {
2199         return this.getSuperFrontEndUseCase().getQualifiedName();
2200     }
2201 
2202     /**
2203      * Gets the root package for the model element.
2204      * @see ModelElementFacade#getRootPackage()
2205      */
2206     public PackageFacade getRootPackage()
2207     {
2208         return this.getSuperFrontEndUseCase().getRootPackage();
2209     }
2210 
2211     /**
2212      * Gets the dependencies for which this model element is the source.
2213      * @see ModelElementFacade#getSourceDependencies()
2214      */
2215     public Collection<DependencyFacade> getSourceDependencies()
2216     {
2217         return this.getSuperFrontEndUseCase().getSourceDependencies();
2218     }
2219 
2220     /**
2221      * If this model element is the context of an activity graph, this represents that activity
2222      * graph.
2223      * @see ModelElementFacade#getStateMachineContext()
2224      */
2225     public StateMachineFacade getStateMachineContext()
2226     {
2227         return this.getSuperFrontEndUseCase().getStateMachineContext();
2228     }
2229 
2230     /**
2231      * The collection of ALL stereotype names for this model element.
2232      * @see ModelElementFacade#getStereotypeNames()
2233      */
2234     public Collection<String> getStereotypeNames()
2235     {
2236         return this.getSuperFrontEndUseCase().getStereotypeNames();
2237     }
2238 
2239     /**
2240      * Gets all stereotypes for this model element.
2241      * @see ModelElementFacade#getStereotypes()
2242      */
2243     public Collection<StereotypeFacade> getStereotypes()
2244     {
2245         return this.getSuperFrontEndUseCase().getStereotypes();
2246     }
2247 
2248     /**
2249      * Return the TaggedValues associated with this model element, under all stereotypes.
2250      * @see ModelElementFacade#getTaggedValues()
2251      */
2252     public Collection<TaggedValueFacade> getTaggedValues()
2253     {
2254         return this.getSuperFrontEndUseCase().getTaggedValues();
2255     }
2256 
2257     /**
2258      * Gets the dependencies for which this model element is the target.
2259      * @see ModelElementFacade#getTargetDependencies()
2260      */
2261     public Collection<DependencyFacade> getTargetDependencies()
2262     {
2263         return this.getSuperFrontEndUseCase().getTargetDependencies();
2264     }
2265 
2266     /**
2267      * Get the template parameter for this model element having the parameterName
2268      * @see ModelElementFacade#getTemplateParameter(String parameterName)
2269      */
2270     public Object getTemplateParameter(String parameterName)
2271     {
2272         return this.getSuperFrontEndUseCase().getTemplateParameter(parameterName);
2273     }
2274 
2275     /**
2276      * Get the template parameters for this model element
2277      * @see ModelElementFacade#getTemplateParameters()
2278      */
2279     public Collection<TemplateParameterFacade> getTemplateParameters()
2280     {
2281         return this.getSuperFrontEndUseCase().getTemplateParameters();
2282     }
2283 
2284     /**
2285      * The visibility (i.e. public, private, protected or package) of the model element, will
2286      * attempt a lookup for these values in the language mappings (if any).
2287      * @see ModelElementFacade#getVisibility()
2288      */
2289     public String getVisibility()
2290     {
2291         return this.getSuperFrontEndUseCase().getVisibility();
2292     }
2293 
2294     /**
2295      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
2296      * is taken into account when searching for the stereotype), false otherwise.
2297      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
2298      */
2299     public boolean hasExactStereotype(String stereotypeName)
2300     {
2301         return this.getSuperFrontEndUseCase().hasExactStereotype(stereotypeName);
2302     }
2303 
2304     /**
2305      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
2306      * pipe, semicolon, or << >>
2307      * @see ModelElementFacade#hasKeyword(String keywordName)
2308      */
2309     public boolean hasKeyword(String keywordName)
2310     {
2311         return this.getSuperFrontEndUseCase().hasKeyword(keywordName);
2312     }
2313 
2314     /**
2315      * Returns true if the model element has the specified stereotype.  If the stereotype itself
2316      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
2317      * one of the stereotype's ancestors has a matching name this method will return true, false
2318      * otherwise.
2319      * For example, if we have a certain stereotype called <<exception>> and a model element has a
2320      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
2321      * method with 'stereotypeName' defined as 'exception' the method would return true since
2322      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
2323      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
2324      * @see ModelElementFacade#hasStereotype(String stereotypeName)
2325      */
2326     public boolean hasStereotype(String stereotypeName)
2327     {
2328         return this.getSuperFrontEndUseCase().hasStereotype(stereotypeName);
2329     }
2330 
2331     /**
2332      * True if there are target dependencies from this element that are instances of BindingFacade.
2333      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
2334      * @see ModelElementFacade#isBindingDependenciesPresent()
2335      */
2336     public boolean isBindingDependenciesPresent()
2337     {
2338         return this.getSuperFrontEndUseCase().isBindingDependenciesPresent();
2339     }
2340 
2341     /**
2342      * Indicates if any constraints are present on this model element.
2343      * @see ModelElementFacade#isConstraintsPresent()
2344      */
2345     public boolean isConstraintsPresent()
2346     {
2347         return this.getSuperFrontEndUseCase().isConstraintsPresent();
2348     }
2349 
2350     /**
2351      * Indicates if any documentation is present on this model element.
2352      * @see ModelElementFacade#isDocumentationPresent()
2353      */
2354     public boolean isDocumentationPresent()
2355     {
2356         return this.getSuperFrontEndUseCase().isDocumentationPresent();
2357     }
2358 
2359     /**
2360      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
2361      * @see ModelElementFacade#isReservedWord()
2362      */
2363     public boolean isReservedWord()
2364     {
2365         return this.getSuperFrontEndUseCase().isReservedWord();
2366     }
2367 
2368     /**
2369      * True is there are template parameters on this model element. For UML2, applies to Class,
2370      * Operation, Property, and Parameter.
2371      * @see ModelElementFacade#isTemplateParametersPresent()
2372      */
2373     public boolean isTemplateParametersPresent()
2374     {
2375         return this.getSuperFrontEndUseCase().isTemplateParametersPresent();
2376     }
2377 
2378     /**
2379      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
2380      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
2381      * Enumerations and Interfaces, optionally applies on other model elements.
2382      * @see ModelElementFacade#isValidIdentifierName()
2383      */
2384     public boolean isValidIdentifierName()
2385     {
2386         return this.getSuperFrontEndUseCase().isValidIdentifierName();
2387     }
2388 
2389     /**
2390      * Searches for the constraint with the specified 'name' on this model element, and if found
2391      * translates it using the specified 'translation' from a translation library discovered by the
2392      * framework.
2393      * @see ModelElementFacade#translateConstraint(String name, String translation)
2394      */
2395     public String translateConstraint(String name, String translation)
2396     {
2397         return this.getSuperFrontEndUseCase().translateConstraint(name, translation);
2398     }
2399 
2400     /**
2401      * Translates all constraints belonging to this model element with the given 'translation'.
2402      * @see ModelElementFacade#translateConstraints(String translation)
2403      */
2404     public String[] translateConstraints(String translation)
2405     {
2406         return this.getSuperFrontEndUseCase().translateConstraints(translation);
2407     }
2408 
2409     /**
2410      * Translates the constraints of the specified 'kind' belonging to this model element.
2411      * @see ModelElementFacade#translateConstraints(String kind, String translation)
2412      */
2413     public String[] translateConstraints(String kind, String translation)
2414     {
2415         return this.getSuperFrontEndUseCase().translateConstraints(kind, translation);
2416     }
2417 
2418     /**
2419      * Gets the model elements which this namespace owns.
2420      * @see org.andromda.metafacades.uml.NamespaceFacade#getOwnedElements()
2421      */
2422     public Collection<ModelElementFacade> getOwnedElements()
2423     {
2424         return this.getSuperFrontEndUseCase().getOwnedElements();
2425     }
2426 
2427     /**
2428      * The extend instances related to this use-case.
2429      * @see org.andromda.metafacades.uml.UseCaseFacade#getExtends()
2430      */
2431     public Collection<ExtendFacade> getExtends()
2432     {
2433         return this.getSuperFrontEndUseCase().getExtends();
2434     }
2435 
2436     /**
2437      * The extension points related to this use-case.
2438      * @see org.andromda.metafacades.uml.UseCaseFacade#getExtensionPoints()
2439      */
2440     public Collection<ExtensionPointFacade> getExtensionPoints()
2441     {
2442         return this.getSuperFrontEndUseCase().getExtensionPoints();
2443     }
2444 
2445     /**
2446      * The first activity graph directly owned by this use-case.
2447      * @see org.andromda.metafacades.uml.UseCaseFacade#getFirstActivityGraph()
2448      */
2449     public ActivityGraphFacade getFirstActivityGraph()
2450     {
2451         return this.getSuperFrontEndUseCase().getFirstActivityGraph();
2452     }
2453 
2454     /**
2455      * The included instances related to this use-case.
2456      * @see org.andromda.metafacades.uml.UseCaseFacade#getIncludes()
2457      */
2458     public Collection<IncludeFacade> getIncludes()
2459     {
2460         return this.getSuperFrontEndUseCase().getIncludes();
2461     }
2462 
2463     /**
2464      * @see MetafacadeBase#initialize()
2465      */
2466     @Override
2467     public void initialize()
2468     {
2469         this.getSuperFrontEndUseCase().initialize();
2470     }
2471 
2472     /**
2473      * @return Object getSuperFrontEndUseCase().getValidationOwner()
2474      * @see MetafacadeBase#getValidationOwner()
2475      */
2476     @Override
2477     public Object getValidationOwner()
2478     {
2479         Object owner = this.getSuperFrontEndUseCase().getValidationOwner();
2480         return owner;
2481     }
2482 
2483     /**
2484      * @return String getSuperFrontEndUseCase().getValidationName()
2485      * @see MetafacadeBase#getValidationName()
2486      */
2487     @Override
2488     public String getValidationName()
2489     {
2490         String name = this.getSuperFrontEndUseCase().getValidationName();
2491         return name;
2492     }
2493 
2494     /**
2495      * @param validationMessages Collection<ModelValidationMessage>
2496      * @see MetafacadeBase#validateInvariants(Collection validationMessages)
2497      */
2498     @Override
2499     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
2500     {
2501         this.getSuperFrontEndUseCase().validateInvariants(validationMessages);
2502     }
2503 
2504     /**
2505      * The property that stores the name of the metafacade.
2506      */
2507     private static final String NAME_PROPERTY = "name";
2508     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
2509 
2510     /**
2511      * @see Object#toString()
2512      */
2513     @Override
2514     public String toString()
2515     {
2516         final StringBuilder toString = new StringBuilder(this.getClass().getName());
2517         toString.append("[");
2518         try
2519         {
2520             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
2521         }
2522         catch (final Throwable tryAgain)
2523         {
2524             try
2525             {
2526                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
2527             }
2528             catch (final Throwable ignore)
2529             {
2530                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
2531             }
2532         }
2533         toString.append("]");
2534         return toString.toString();
2535     }
2536 }