001// license-header java merge-point
002//
003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
004//
005package org.andromda.cartridges.jsf.metafacades;
006
007import java.util.Collection;
008import java.util.List;
009import java.util.Map;
010import org.andromda.core.common.Introspector;
011import org.andromda.core.metafacade.MetafacadeBase;
012import org.andromda.core.metafacade.MetafacadeFactory;
013import org.andromda.core.metafacade.ModelValidationMessage;
014import org.andromda.metafacades.uml.ActivityGraphFacade;
015import org.andromda.metafacades.uml.AssociationEndFacade;
016import org.andromda.metafacades.uml.AttributeFacade;
017import org.andromda.metafacades.uml.ClassifierFacade;
018import org.andromda.metafacades.uml.ConstraintFacade;
019import org.andromda.metafacades.uml.DependencyFacade;
020import org.andromda.metafacades.uml.ExtendFacade;
021import org.andromda.metafacades.uml.ExtensionPointFacade;
022import org.andromda.metafacades.uml.FrontEndAction;
023import org.andromda.metafacades.uml.FrontEndActivityGraph;
024import org.andromda.metafacades.uml.FrontEndController;
025import org.andromda.metafacades.uml.FrontEndFinalState;
026import org.andromda.metafacades.uml.FrontEndParameter;
027import org.andromda.metafacades.uml.FrontEndUseCase;
028import org.andromda.metafacades.uml.FrontEndView;
029import org.andromda.metafacades.uml.GeneralizableElementFacade;
030import org.andromda.metafacades.uml.GeneralizationFacade;
031import org.andromda.metafacades.uml.IncludeFacade;
032import org.andromda.metafacades.uml.ModelElementFacade;
033import org.andromda.metafacades.uml.ModelFacade;
034import org.andromda.metafacades.uml.OperationFacade;
035import org.andromda.metafacades.uml.PackageFacade;
036import org.andromda.metafacades.uml.Role;
037import org.andromda.metafacades.uml.StateMachineFacade;
038import org.andromda.metafacades.uml.StereotypeFacade;
039import org.andromda.metafacades.uml.TaggedValueFacade;
040import org.andromda.metafacades.uml.TemplateParameterFacade;
041import org.andromda.metafacades.uml.TypeMappings;
042import org.apache.log4j.Logger;
043
044/**
045 * Represents a JSF use case.
046 * MetafacadeLogic for JSFUseCase
047 *
048 * @see JSFUseCase
049 */
050public abstract class JSFUseCaseLogic
051    extends MetafacadeBase
052    implements JSFUseCase
053{
054    /**
055     * The underlying UML object
056     * @see Object
057     */
058    protected Object metaObject;
059
060    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
061     * @param metaObjectIn
062     * @param context
063     */
064    protected JSFUseCaseLogic(Object metaObjectIn, String context)
065    {
066        super(metaObjectIn, getContext(context));
067        this.superFrontEndUseCase =
068           (FrontEndUseCase)
069            MetafacadeFactory.getInstance().createFacadeImpl(
070                    "org.andromda.metafacades.uml.FrontEndUseCase",
071                    metaObjectIn,
072                    getContext(context));
073        this.metaObject = metaObjectIn;
074    }
075
076    /**
077     * The logger instance.
078     */
079    private static final Logger logger = Logger.getLogger(JSFUseCaseLogic.class);
080
081    /**
082     * Gets the context for this metafacade logic instance.
083     * @param context String. Set to JSFUseCase if null
084     * @return context String
085     */
086    private static String getContext(String context)
087    {
088        if (context == null)
089        {
090            context = "org.andromda.cartridges.jsf.metafacades.JSFUseCase";
091        }
092        return context;
093    }
094
095    private FrontEndUseCase superFrontEndUseCase;
096    private boolean superFrontEndUseCaseInitialized = false;
097
098    /**
099     * 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}