View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.jsf.metafacades;
6   
7   import java.util.Collection;
8   import java.util.List;
9   import org.andromda.core.common.Introspector;
10  import org.andromda.core.metafacade.MetafacadeBase;
11  import org.andromda.core.metafacade.MetafacadeFactory;
12  import org.andromda.core.metafacade.ModelValidationMessage;
13  import org.andromda.metafacades.uml.ClassifierFacade;
14  import org.andromda.metafacades.uml.ConstraintFacade;
15  import org.andromda.metafacades.uml.DependencyFacade;
16  import org.andromda.metafacades.uml.EventFacade;
17  import org.andromda.metafacades.uml.FrontEndAction;
18  import org.andromda.metafacades.uml.FrontEndControllerOperation;
19  import org.andromda.metafacades.uml.FrontEndParameter;
20  import org.andromda.metafacades.uml.FrontEndView;
21  import org.andromda.metafacades.uml.ModelElementFacade;
22  import org.andromda.metafacades.uml.ModelFacade;
23  import org.andromda.metafacades.uml.OperationFacade;
24  import org.andromda.metafacades.uml.PackageFacade;
25  import org.andromda.metafacades.uml.StateMachineFacade;
26  import org.andromda.metafacades.uml.StereotypeFacade;
27  import org.andromda.metafacades.uml.TaggedValueFacade;
28  import org.andromda.metafacades.uml.TemplateParameterFacade;
29  import org.andromda.metafacades.uml.TypeMappings;
30  import org.apache.log4j.Logger;
31  
32  /**
33   * Represents a parameter in a JSF front-end.
34   * MetafacadeLogic for JSFParameter
35   *
36   * @see JSFParameter
37   */
38  public abstract class JSFParameterLogic
39      extends MetafacadeBase
40      implements JSFParameter
41  {
42      /**
43       * The underlying UML object
44       * @see Object
45       */
46      protected Object metaObject;
47  
48      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
49       * @param metaObjectIn
50       * @param context
51       */
52      protected JSFParameterLogic(Object metaObjectIn, String context)
53      {
54          super(metaObjectIn, getContext(context));
55          this.superFrontEndParameter =
56             (FrontEndParameter)
57              MetafacadeFactory.getInstance().createFacadeImpl(
58                      "org.andromda.metafacades.uml.FrontEndParameter",
59                      metaObjectIn,
60                      getContext(context));
61          this.metaObject = metaObjectIn;
62      }
63  
64      /**
65       * The logger instance.
66       */
67      private static final Logger logger = Logger.getLogger(JSFParameterLogic.class);
68  
69      /**
70       * Gets the context for this metafacade logic instance.
71       * @param context String. Set to JSFParameter if null
72       * @return context String
73       */
74      private static String getContext(String context)
75      {
76          if (context == null)
77          {
78              context = "org.andromda.cartridges.jsf.metafacades.JSFParameter";
79          }
80          return context;
81      }
82  
83      private FrontEndParameter superFrontEndParameter;
84      private boolean superFrontEndParameterInitialized = false;
85  
86      /**
87       * Gets the FrontEndParameter parent instance.
88       * @return this.superFrontEndParameter FrontEndParameter
89       */
90      private FrontEndParameter getSuperFrontEndParameter()
91      {
92          if (!this.superFrontEndParameterInitialized)
93          {
94              ((MetafacadeBase)this.superFrontEndParameter).setMetafacadeContext(this.getMetafacadeContext());
95              this.superFrontEndParameterInitialized = true;
96          }
97          return this.superFrontEndParameter;
98      }
99  
100     /** Reset context only for non-root metafacades
101      * @param context
102      * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
103      */
104     @Override
105     public void resetMetafacadeContext(String context)
106     {
107         if (!this.contextRoot) // reset context only for non-root metafacades
108         {
109             context = getContext(context);  // to have same value as in original constructor call
110             setMetafacadeContext (context);
111             if (this.superFrontEndParameterInitialized)
112             {
113                 ((MetafacadeBase)this.superFrontEndParameter).resetMetafacadeContext(context);
114             }
115         }
116     }
117 
118     /**
119      * @return boolean true always
120      * @see JSFParameter
121      */
122     public boolean isJSFParameterMetaType()
123     {
124         return true;
125     }
126 
127     // --------------- attributes ---------------------
128 
129    /**
130     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getMessageKey()
131     * @return String
132     */
133     protected abstract String handleGetMessageKey();
134 
135     private String __messageKey1a;
136     private boolean __messageKey1aSet = false;
137 
138     /**
139      * The default message key for this parameter.
140      * @return (String)handleGetMessageKey()
141      */
142     public final String getMessageKey()
143     {
144         String messageKey1a = this.__messageKey1a;
145         if (!this.__messageKey1aSet)
146         {
147             // messageKey has no pre constraints
148             messageKey1a = handleGetMessageKey();
149             // messageKey has no post constraints
150             this.__messageKey1a = messageKey1a;
151             if (isMetafacadePropertyCachingEnabled())
152             {
153                 this.__messageKey1aSet = true;
154             }
155         }
156         return messageKey1a;
157     }
158 
159    /**
160     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getMessageValue()
161     * @return String
162     */
163     protected abstract String handleGetMessageValue();
164 
165     private String __messageValue2a;
166     private boolean __messageValue2aSet = false;
167 
168     /**
169      * The default message value for this parameter.
170      * @return (String)handleGetMessageValue()
171      */
172     public final String getMessageValue()
173     {
174         String messageValue2a = this.__messageValue2a;
175         if (!this.__messageValue2aSet)
176         {
177             // messageValue has no pre constraints
178             messageValue2a = handleGetMessageValue();
179             // messageValue has no post constraints
180             this.__messageValue2a = messageValue2a;
181             if (isMetafacadePropertyCachingEnabled())
182             {
183                 this.__messageValue2aSet = true;
184             }
185         }
186         return messageValue2a;
187     }
188 
189    /**
190     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getDocumentationKey()
191     * @return String
192     */
193     protected abstract String handleGetDocumentationKey();
194 
195     private String __documentationKey3a;
196     private boolean __documentationKey3aSet = false;
197 
198     /**
199      * A resource message key suited for the parameter's documentation.
200      * @return (String)handleGetDocumentationKey()
201      */
202     public final String getDocumentationKey()
203     {
204         String documentationKey3a = this.__documentationKey3a;
205         if (!this.__documentationKey3aSet)
206         {
207             // documentationKey has no pre constraints
208             documentationKey3a = handleGetDocumentationKey();
209             // documentationKey has no post constraints
210             this.__documentationKey3a = documentationKey3a;
211             if (isMetafacadePropertyCachingEnabled())
212             {
213                 this.__documentationKey3aSet = true;
214             }
215         }
216         return documentationKey3a;
217     }
218 
219    /**
220     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getDocumentationValue()
221     * @return String
222     */
223     protected abstract String handleGetDocumentationValue();
224 
225     private String __documentationValue4a;
226     private boolean __documentationValue4aSet = false;
227 
228     /**
229      * A resource message value suited for the parameter's documentation.
230      * @return (String)handleGetDocumentationValue()
231      */
232     public final String getDocumentationValue()
233     {
234         String documentationValue4a = this.__documentationValue4a;
235         if (!this.__documentationValue4aSet)
236         {
237             // documentationValue has no pre constraints
238             documentationValue4a = handleGetDocumentationValue();
239             // documentationValue has no post constraints
240             this.__documentationValue4a = documentationValue4a;
241             if (isMetafacadePropertyCachingEnabled())
242             {
243                 this.__documentationValue4aSet = true;
244             }
245         }
246         return documentationValue4a;
247     }
248 
249    /**
250     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getFormat()
251     * @return String
252     */
253     protected abstract String handleGetFormat();
254 
255     private String __format5a;
256     private boolean __format5aSet = false;
257 
258     /**
259      * If this parameter represents a date or time this method will return the format in which it
260      * must be represented. In the event this format has not been specified by the any tagged value
261      * the default will be used.
262      * @return (String)handleGetFormat()
263      */
264     public final String getFormat()
265     {
266         String format5a = this.__format5a;
267         if (!this.__format5aSet)
268         {
269             // format has no pre constraints
270             format5a = handleGetFormat();
271             // format has no post constraints
272             this.__format5a = format5a;
273             if (isMetafacadePropertyCachingEnabled())
274             {
275                 this.__format5aSet = true;
276             }
277         }
278         return format5a;
279     }
280 
281    /**
282     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isStrictDateFormat()
283     * @return boolean
284     */
285     protected abstract boolean handleIsStrictDateFormat();
286 
287     private boolean __strictDateFormat6a;
288     private boolean __strictDateFormat6aSet = false;
289 
290     /**
291      * Indicates where or not the date format is to be strictly respected. Otherwise the date
292      * formatter used for the representation of this date is to be set to lenient.
293      * @return (boolean)handleIsStrictDateFormat()
294      */
295     public final boolean isStrictDateFormat()
296     {
297         boolean strictDateFormat6a = this.__strictDateFormat6a;
298         if (!this.__strictDateFormat6aSet)
299         {
300             // strictDateFormat has no pre constraints
301             strictDateFormat6a = handleIsStrictDateFormat();
302             // strictDateFormat has no post constraints
303             this.__strictDateFormat6a = strictDateFormat6a;
304             if (isMetafacadePropertyCachingEnabled())
305             {
306                 this.__strictDateFormat6aSet = true;
307             }
308         }
309         return strictDateFormat6a;
310     }
311 
312    /**
313     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getDateFormatter()
314     * @return String
315     */
316     protected abstract String handleGetDateFormatter();
317 
318     private String __dateFormatter7a;
319     private boolean __dateFormatter7aSet = false;
320 
321     /**
322      * The name of the date formatter for this parameter (if this parameter represents a date).
323      * @return (String)handleGetDateFormatter()
324      */
325     public final String getDateFormatter()
326     {
327         String dateFormatter7a = this.__dateFormatter7a;
328         if (!this.__dateFormatter7aSet)
329         {
330             // dateFormatter has no pre constraints
331             dateFormatter7a = handleGetDateFormatter();
332             // dateFormatter has no post constraints
333             this.__dateFormatter7a = dateFormatter7a;
334             if (isMetafacadePropertyCachingEnabled())
335             {
336                 this.__dateFormatter7aSet = true;
337             }
338         }
339         return dateFormatter7a;
340     }
341 
342    /**
343     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getTimeFormatter()
344     * @return String
345     */
346     protected abstract String handleGetTimeFormatter();
347 
348     private String __timeFormatter8a;
349     private boolean __timeFormatter8aSet = false;
350 
351     /**
352      * The name of the time formatter (if this parameter represents a time).
353      * @return (String)handleGetTimeFormatter()
354      */
355     public final String getTimeFormatter()
356     {
357         String timeFormatter8a = this.__timeFormatter8a;
358         if (!this.__timeFormatter8aSet)
359         {
360             // timeFormatter has no pre constraints
361             timeFormatter8a = handleGetTimeFormatter();
362             // timeFormatter has no post constraints
363             this.__timeFormatter8a = timeFormatter8a;
364             if (isMetafacadePropertyCachingEnabled())
365             {
366                 this.__timeFormatter8aSet = true;
367             }
368         }
369         return timeFormatter8a;
370     }
371 
372    /**
373     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputCheckbox()
374     * @return boolean
375     */
376     protected abstract boolean handleIsInputCheckbox();
377 
378     private boolean __inputCheckbox9a;
379     private boolean __inputCheckbox9aSet = false;
380 
381     /**
382      * Indicates if this parameter represents a checkbox widget.
383      * @return (boolean)handleIsInputCheckbox()
384      */
385     public final boolean isInputCheckbox()
386     {
387         boolean inputCheckbox9a = this.__inputCheckbox9a;
388         if (!this.__inputCheckbox9aSet)
389         {
390             // inputCheckbox has no pre constraints
391             inputCheckbox9a = handleIsInputCheckbox();
392             // inputCheckbox has no post constraints
393             this.__inputCheckbox9a = inputCheckbox9a;
394             if (isMetafacadePropertyCachingEnabled())
395             {
396                 this.__inputCheckbox9aSet = true;
397             }
398         }
399         return inputCheckbox9a;
400     }
401 
402    /**
403     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputTextarea()
404     * @return boolean
405     */
406     protected abstract boolean handleIsInputTextarea();
407 
408     private boolean __inputTextarea10a;
409     private boolean __inputTextarea10aSet = false;
410 
411     /**
412      * Indicates if this parameter represents as an input text area widget.
413      * @return (boolean)handleIsInputTextarea()
414      */
415     public final boolean isInputTextarea()
416     {
417         boolean inputTextarea10a = this.__inputTextarea10a;
418         if (!this.__inputTextarea10aSet)
419         {
420             // inputTextarea has no pre constraints
421             inputTextarea10a = handleIsInputTextarea();
422             // inputTextarea has no post constraints
423             this.__inputTextarea10a = inputTextarea10a;
424             if (isMetafacadePropertyCachingEnabled())
425             {
426                 this.__inputTextarea10aSet = true;
427             }
428         }
429         return inputTextarea10a;
430     }
431 
432    /**
433     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputSelect()
434     * @return boolean
435     */
436     protected abstract boolean handleIsInputSelect();
437 
438     private boolean __inputSelect11a;
439     private boolean __inputSelect11aSet = false;
440 
441     /**
442      * Indicates whether or not this parameter represents an input select widget.
443      * @return (boolean)handleIsInputSelect()
444      */
445     public final boolean isInputSelect()
446     {
447         boolean inputSelect11a = this.__inputSelect11a;
448         if (!this.__inputSelect11aSet)
449         {
450             // inputSelect has no pre constraints
451             inputSelect11a = handleIsInputSelect();
452             // inputSelect has no post constraints
453             this.__inputSelect11a = inputSelect11a;
454             if (isMetafacadePropertyCachingEnabled())
455             {
456                 this.__inputSelect11aSet = true;
457             }
458         }
459         return inputSelect11a;
460     }
461 
462    /**
463     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputSecret()
464     * @return boolean
465     */
466     protected abstract boolean handleIsInputSecret();
467 
468     private boolean __inputSecret12a;
469     private boolean __inputSecret12aSet = false;
470 
471     /**
472      * Indicates whether or not this parameter represents an input "secret" widget (i.e. password).
473      * @return (boolean)handleIsInputSecret()
474      */
475     public final boolean isInputSecret()
476     {
477         boolean inputSecret12a = this.__inputSecret12a;
478         if (!this.__inputSecret12aSet)
479         {
480             // inputSecret has no pre constraints
481             inputSecret12a = handleIsInputSecret();
482             // inputSecret has no post constraints
483             this.__inputSecret12a = inputSecret12a;
484             if (isMetafacadePropertyCachingEnabled())
485             {
486                 this.__inputSecret12aSet = true;
487             }
488         }
489         return inputSecret12a;
490     }
491 
492    /**
493     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputHidden()
494     * @return boolean
495     */
496     protected abstract boolean handleIsInputHidden();
497 
498     private boolean __inputHidden13a;
499     private boolean __inputHidden13aSet = false;
500 
501     /**
502      * Indicates whether or not this parameter represents a hidden input widget.
503      * @return (boolean)handleIsInputHidden()
504      */
505     public final boolean isInputHidden()
506     {
507         boolean inputHidden13a = this.__inputHidden13a;
508         if (!this.__inputHidden13aSet)
509         {
510             // inputHidden has no pre constraints
511             inputHidden13a = handleIsInputHidden();
512             // inputHidden has no post constraints
513             this.__inputHidden13a = inputHidden13a;
514             if (isMetafacadePropertyCachingEnabled())
515             {
516                 this.__inputHidden13aSet = true;
517             }
518         }
519         return inputHidden13a;
520     }
521 
522    /**
523     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isPlaintext()
524     * @return boolean
525     */
526     protected abstract boolean handleIsPlaintext();
527 
528     private boolean __plaintext14a;
529     private boolean __plaintext14aSet = false;
530 
531     /**
532      * Indicates whether or not this field should be rendered as plain text (not as a widget).
533      * @return (boolean)handleIsPlaintext()
534      */
535     public final boolean isPlaintext()
536     {
537         boolean plaintext14a = this.__plaintext14a;
538         if (!this.__plaintext14aSet)
539         {
540             // plaintext has no pre constraints
541             plaintext14a = handleIsPlaintext();
542             // plaintext has no post constraints
543             this.__plaintext14a = plaintext14a;
544             if (isMetafacadePropertyCachingEnabled())
545             {
546                 this.__plaintext14aSet = true;
547             }
548         }
549         return plaintext14a;
550     }
551 
552    /**
553     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputRadio()
554     * @return boolean
555     */
556     protected abstract boolean handleIsInputRadio();
557 
558     private boolean __inputRadio15a;
559     private boolean __inputRadio15aSet = false;
560 
561     /**
562      * Indicates whether or not this parameter should be rendered as an input radio widget.
563      * @return (boolean)handleIsInputRadio()
564      */
565     public final boolean isInputRadio()
566     {
567         boolean inputRadio15a = this.__inputRadio15a;
568         if (!this.__inputRadio15aSet)
569         {
570             // inputRadio has no pre constraints
571             inputRadio15a = handleIsInputRadio();
572             // inputRadio has no post constraints
573             this.__inputRadio15a = inputRadio15a;
574             if (isMetafacadePropertyCachingEnabled())
575             {
576                 this.__inputRadio15aSet = true;
577             }
578         }
579         return inputRadio15a;
580     }
581 
582    /**
583     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputText()
584     * @return boolean
585     */
586     protected abstract boolean handleIsInputText();
587 
588     private boolean __inputText16a;
589     private boolean __inputText16aSet = false;
590 
591     /**
592      * Indicates whether or not this parameter should be rendered as a text input widget.
593      * @return (boolean)handleIsInputText()
594      */
595     public final boolean isInputText()
596     {
597         boolean inputText16a = this.__inputText16a;
598         if (!this.__inputText16aSet)
599         {
600             // inputText has no pre constraints
601             inputText16a = handleIsInputText();
602             // inputText has no post constraints
603             this.__inputText16a = inputText16a;
604             if (isMetafacadePropertyCachingEnabled())
605             {
606                 this.__inputText16aSet = true;
607             }
608         }
609         return inputText16a;
610     }
611 
612    /**
613     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getBackingListName()
614     * @return String
615     */
616     protected abstract String handleGetBackingListName();
617 
618     private String __backingListName17a;
619     private boolean __backingListName17aSet = false;
620 
621     /**
622      * The backing list name for this parameter. This is useful if you want to be able to select the
623      * parameter value from a list (i.e. a drop-down select input type).
624      * @return (String)handleGetBackingListName()
625      */
626     public final String getBackingListName()
627     {
628         String backingListName17a = this.__backingListName17a;
629         if (!this.__backingListName17aSet)
630         {
631             // backingListName has no pre constraints
632             backingListName17a = handleGetBackingListName();
633             // backingListName has no post constraints
634             this.__backingListName17a = backingListName17a;
635             if (isMetafacadePropertyCachingEnabled())
636             {
637                 this.__backingListName17aSet = true;
638             }
639         }
640         return backingListName17a;
641     }
642 
643    /**
644     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getLabelListName()
645     * @return String
646     */
647     protected abstract String handleGetLabelListName();
648 
649     private String __labelListName18a;
650     private boolean __labelListName18aSet = false;
651 
652     /**
653      * The name of the label list for this parameter. The label list name is the name of the list
654      * storing the labels for the possible values of this parameter (typically used for the labels
655      * of a drop-down select lists).
656      * @return (String)handleGetLabelListName()
657      */
658     public final String getLabelListName()
659     {
660         String labelListName18a = this.__labelListName18a;
661         if (!this.__labelListName18aSet)
662         {
663             // labelListName has no pre constraints
664             labelListName18a = handleGetLabelListName();
665             // labelListName has no post constraints
666             this.__labelListName18a = labelListName18a;
667             if (isMetafacadePropertyCachingEnabled())
668             {
669                 this.__labelListName18aSet = true;
670             }
671         }
672         return labelListName18a;
673     }
674 
675    /**
676     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getValueListName()
677     * @return String
678     */
679     protected abstract String handleGetValueListName();
680 
681     private String __valueListName19a;
682     private boolean __valueListName19aSet = false;
683 
684     /**
685      * Stores the name of the value list for this parameter; this list stores the possible values
686      * that this parameter may be (typically used for the values of a drop-down select list).
687      * @return (String)handleGetValueListName()
688      */
689     public final String getValueListName()
690     {
691         String valueListName19a = this.__valueListName19a;
692         if (!this.__valueListName19aSet)
693         {
694             // valueListName has no pre constraints
695             valueListName19a = handleGetValueListName();
696             // valueListName has no post constraints
697             this.__valueListName19a = valueListName19a;
698             if (isMetafacadePropertyCachingEnabled())
699             {
700                 this.__valueListName19aSet = true;
701             }
702         }
703         return valueListName19a;
704     }
705 
706    /**
707     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isSelectable()
708     * @return boolean
709     */
710     protected abstract boolean handleIsSelectable();
711 
712     private boolean __selectable20a;
713     private boolean __selectable20aSet = false;
714 
715     /**
716      * Indicates whether or not this parameter is selectable or not (that is: it can be selected
717      * from a list of values).
718      * @return (boolean)handleIsSelectable()
719      */
720     public final boolean isSelectable()
721     {
722         boolean selectable20a = this.__selectable20a;
723         if (!this.__selectable20aSet)
724         {
725             // selectable has no pre constraints
726             selectable20a = handleIsSelectable();
727             // selectable has no post constraints
728             this.__selectable20a = selectable20a;
729             if (isMetafacadePropertyCachingEnabled())
730             {
731                 this.__selectable20aSet = true;
732             }
733         }
734         return selectable20a;
735     }
736 
737    /**
738     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getDummyValue()
739     * @return String
740     */
741     protected abstract String handleGetDummyValue();
742 
743     private String __dummyValue21a;
744     private boolean __dummyValue21aSet = false;
745 
746     /**
747      * The dummy value for this parameter. The dummy value is used for setting the dummy information
748      * when dummyData is enabled.
749      * @return (String)handleGetDummyValue()
750      */
751     public final String getDummyValue()
752     {
753         String dummyValue21a = this.__dummyValue21a;
754         if (!this.__dummyValue21aSet)
755         {
756             // dummyValue has no pre constraints
757             dummyValue21a = handleGetDummyValue();
758             // dummyValue has no post constraints
759             this.__dummyValue21a = dummyValue21a;
760             if (isMetafacadePropertyCachingEnabled())
761             {
762                 this.__dummyValue21aSet = true;
763             }
764         }
765         return dummyValue21a;
766     }
767 
768    /**
769     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getValueListDummyValue()
770     * @return String
771     */
772     protected abstract String handleGetValueListDummyValue();
773 
774     private String __valueListDummyValue22a;
775     private boolean __valueListDummyValue22aSet = false;
776 
777     /**
778      * The dummy value for a value list.
779      * @return (String)handleGetValueListDummyValue()
780      */
781     public final String getValueListDummyValue()
782     {
783         String valueListDummyValue22a = this.__valueListDummyValue22a;
784         if (!this.__valueListDummyValue22aSet)
785         {
786             // valueListDummyValue has no pre constraints
787             valueListDummyValue22a = handleGetValueListDummyValue();
788             // valueListDummyValue has no post constraints
789             this.__valueListDummyValue22a = valueListDummyValue22a;
790             if (isMetafacadePropertyCachingEnabled())
791             {
792                 this.__valueListDummyValue22aSet = true;
793             }
794         }
795         return valueListDummyValue22a;
796     }
797 
798    /**
799     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getTableSortColumnProperty()
800     * @return String
801     */
802     protected abstract String handleGetTableSortColumnProperty();
803 
804     private String __tableSortColumnProperty23a;
805     private boolean __tableSortColumnProperty23aSet = false;
806 
807     /**
808      * The name of the property storing the column to sort by if this parameter represents a table.
809      * @return (String)handleGetTableSortColumnProperty()
810      */
811     public final String getTableSortColumnProperty()
812     {
813         String tableSortColumnProperty23a = this.__tableSortColumnProperty23a;
814         if (!this.__tableSortColumnProperty23aSet)
815         {
816             // tableSortColumnProperty has no pre constraints
817             tableSortColumnProperty23a = handleGetTableSortColumnProperty();
818             // tableSortColumnProperty has no post constraints
819             this.__tableSortColumnProperty23a = tableSortColumnProperty23a;
820             if (isMetafacadePropertyCachingEnabled())
821             {
822                 this.__tableSortColumnProperty23aSet = true;
823             }
824         }
825         return tableSortColumnProperty23a;
826     }
827 
828    /**
829     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getTableSortAscendingProperty()
830     * @return String
831     */
832     protected abstract String handleGetTableSortAscendingProperty();
833 
834     private String __tableSortAscendingProperty24a;
835     private boolean __tableSortAscendingProperty24aSet = false;
836 
837     /**
838      * The name of the property that Indicates whether or not the table should be sorted ascending
839      * (if this parameter represents a table).
840      * @return (String)handleGetTableSortAscendingProperty()
841      */
842     public final String getTableSortAscendingProperty()
843     {
844         String tableSortAscendingProperty24a = this.__tableSortAscendingProperty24a;
845         if (!this.__tableSortAscendingProperty24aSet)
846         {
847             // tableSortAscendingProperty has no pre constraints
848             tableSortAscendingProperty24a = handleGetTableSortAscendingProperty();
849             // tableSortAscendingProperty has no post constraints
850             this.__tableSortAscendingProperty24a = tableSortAscendingProperty24a;
851             if (isMetafacadePropertyCachingEnabled())
852             {
853                 this.__tableSortAscendingProperty24aSet = true;
854             }
855         }
856         return tableSortAscendingProperty24a;
857     }
858 
859    /**
860     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getFormAttributeSetProperty()
861     * @return String
862     */
863     protected abstract String handleGetFormAttributeSetProperty();
864 
865     private String __formAttributeSetProperty25a;
866     private boolean __formAttributeSetProperty25aSet = false;
867 
868     /**
869      * The name of the property used for indicating whether or not a form attribute has been set at
870      * least once.
871      * @return (String)handleGetFormAttributeSetProperty()
872      */
873     public final String getFormAttributeSetProperty()
874     {
875         String formAttributeSetProperty25a = this.__formAttributeSetProperty25a;
876         if (!this.__formAttributeSetProperty25aSet)
877         {
878             // formAttributeSetProperty has no pre constraints
879             formAttributeSetProperty25a = handleGetFormAttributeSetProperty();
880             // formAttributeSetProperty has no post constraints
881             this.__formAttributeSetProperty25a = formAttributeSetProperty25a;
882             if (isMetafacadePropertyCachingEnabled())
883             {
884                 this.__formAttributeSetProperty25aSet = true;
885             }
886         }
887         return formAttributeSetProperty25a;
888     }
889 
890    /**
891     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isReadOnly()
892     * @return boolean
893     */
894     protected abstract boolean handleIsReadOnly();
895 
896     private boolean __readOnly26a;
897     private boolean __readOnly26aSet = false;
898 
899     /**
900      * Indicates if this parameter can only be read and not modified.
901      * @return (boolean)handleIsReadOnly()
902      */
903     public final boolean isReadOnly()
904     {
905         boolean readOnly26a = this.__readOnly26a;
906         if (!this.__readOnly26aSet)
907         {
908             // readOnly has no pre constraints
909             readOnly26a = handleIsReadOnly();
910             // readOnly has no post constraints
911             this.__readOnly26a = readOnly26a;
912             if (isMetafacadePropertyCachingEnabled())
913             {
914                 this.__readOnly26aSet = true;
915             }
916         }
917         return readOnly26a;
918     }
919 
920    /**
921     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isValidationRequired()
922     * @return boolean
923     */
924     protected abstract boolean handleIsValidationRequired();
925 
926     private boolean __validationRequired27a;
927     private boolean __validationRequired27aSet = false;
928 
929     /**
930      * Indicates whether or not this parameter requires some kind of validation (the collection of
931      * validator types is not empty).
932      * @return (boolean)handleIsValidationRequired()
933      */
934     public final boolean isValidationRequired()
935     {
936         boolean validationRequired27a = this.__validationRequired27a;
937         if (!this.__validationRequired27aSet)
938         {
939             // validationRequired has no pre constraints
940             validationRequired27a = handleIsValidationRequired();
941             // validationRequired has no post constraints
942             this.__validationRequired27a = validationRequired27a;
943             if (isMetafacadePropertyCachingEnabled())
944             {
945                 this.__validationRequired27aSet = true;
946             }
947         }
948         return validationRequired27a;
949     }
950 
951    /**
952     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getValidatorTypes()
953     * @return Collection
954     */
955     protected abstract Collection handleGetValidatorTypes();
956 
957     private Collection __validatorTypes28a;
958     private boolean __validatorTypes28aSet = false;
959 
960     /**
961      * All the validator types for this parameter.
962      * @return (Collection)handleGetValidatorTypes()
963      */
964     public final Collection getValidatorTypes()
965     {
966         Collection validatorTypes28a = this.__validatorTypes28a;
967         if (!this.__validatorTypes28aSet)
968         {
969             // validatorTypes has no pre constraints
970             validatorTypes28a = handleGetValidatorTypes();
971             // validatorTypes has no post constraints
972             this.__validatorTypes28a = validatorTypes28a;
973             if (isMetafacadePropertyCachingEnabled())
974             {
975                 this.__validatorTypes28aSet = true;
976             }
977         }
978         return validatorTypes28a;
979     }
980 
981    /**
982     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getValidWhen()
983     * @return String
984     */
985     protected abstract String handleGetValidWhen();
986 
987     private String __validWhen29a;
988     private boolean __validWhen29aSet = false;
989 
990     /**
991      * The validator's 'validwhen' value, this is useful when the validation of a parameter depends
992      * on the validation of others. See the apache commons-validator documentation for more
993      * information.
994      * @return (String)handleGetValidWhen()
995      */
996     public final String getValidWhen()
997     {
998         String validWhen29a = this.__validWhen29a;
999         if (!this.__validWhen29aSet)
1000         {
1001             // validWhen has no pre constraints
1002             validWhen29a = handleGetValidWhen();
1003             // validWhen has no post constraints
1004             this.__validWhen29a = validWhen29a;
1005             if (isMetafacadePropertyCachingEnabled())
1006             {
1007                 this.__validWhen29aSet = true;
1008             }
1009         }
1010         return validWhen29a;
1011     }
1012 
1013    /**
1014     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputFile()
1015     * @return boolean
1016     */
1017     protected abstract boolean handleIsInputFile();
1018 
1019     private boolean __inputFile30a;
1020     private boolean __inputFile30aSet = false;
1021 
1022     /**
1023      * Indicates whether or not this is a file input type.
1024      * @return (boolean)handleIsInputFile()
1025      */
1026     public final boolean isInputFile()
1027     {
1028         boolean inputFile30a = this.__inputFile30a;
1029         if (!this.__inputFile30aSet)
1030         {
1031             // inputFile has no pre constraints
1032             inputFile30a = handleIsInputFile();
1033             // inputFile has no post constraints
1034             this.__inputFile30a = inputFile30a;
1035             if (isMetafacadePropertyCachingEnabled())
1036             {
1037                 this.__inputFile30aSet = true;
1038             }
1039         }
1040         return inputFile30a;
1041     }
1042 
1043    /**
1044     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getValidatorVars()
1045     * @return Collection
1046     */
1047     protected abstract Collection handleGetValidatorVars();
1048 
1049     private Collection __validatorVars31a;
1050     private boolean __validatorVars31aSet = false;
1051 
1052     /**
1053      * The validator variables.
1054      * @return (Collection)handleGetValidatorVars()
1055      */
1056     public final Collection getValidatorVars()
1057     {
1058         Collection validatorVars31a = this.__validatorVars31a;
1059         if (!this.__validatorVars31aSet)
1060         {
1061             // validatorVars has no pre constraints
1062             validatorVars31a = handleGetValidatorVars();
1063             // validatorVars has no post constraints
1064             this.__validatorVars31a = validatorVars31a;
1065             if (isMetafacadePropertyCachingEnabled())
1066             {
1067                 this.__validatorVars31aSet = true;
1068             }
1069         }
1070         return validatorVars31a;
1071     }
1072 
1073    /**
1074     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputMultibox()
1075     * @return boolean
1076     */
1077     protected abstract boolean handleIsInputMultibox();
1078 
1079     private boolean __inputMultibox32a;
1080     private boolean __inputMultibox32aSet = false;
1081 
1082     /**
1083      * Indicates whether or not this type represents an input multibox.
1084      * @return (boolean)handleIsInputMultibox()
1085      */
1086     public final boolean isInputMultibox()
1087     {
1088         boolean inputMultibox32a = this.__inputMultibox32a;
1089         if (!this.__inputMultibox32aSet)
1090         {
1091             // inputMultibox has no pre constraints
1092             inputMultibox32a = handleIsInputMultibox();
1093             // inputMultibox has no post constraints
1094             this.__inputMultibox32a = inputMultibox32a;
1095             if (isMetafacadePropertyCachingEnabled())
1096             {
1097                 this.__inputMultibox32aSet = true;
1098             }
1099         }
1100         return inputMultibox32a;
1101     }
1102 
1103    /**
1104     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isReset()
1105     * @return boolean
1106     */
1107     protected abstract boolean handleIsReset();
1108 
1109     private boolean __reset33a;
1110     private boolean __reset33aSet = false;
1111 
1112     /**
1113      * Indicates if this parameter's value should be reset or not after an action has been performed
1114      * with this parameter.
1115      * @return (boolean)handleIsReset()
1116      */
1117     public final boolean isReset()
1118     {
1119         boolean reset33a = this.__reset33a;
1120         if (!this.__reset33aSet)
1121         {
1122             // reset has no pre constraints
1123             reset33a = handleIsReset();
1124             // reset has no post constraints
1125             this.__reset33a = reset33a;
1126             if (isMetafacadePropertyCachingEnabled())
1127             {
1128                 this.__reset33aSet = true;
1129             }
1130         }
1131         return reset33a;
1132     }
1133 
1134    /**
1135     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isComplex()
1136     * @return boolean
1137     */
1138     protected abstract boolean handleIsComplex();
1139 
1140     private boolean __complex34a;
1141     private boolean __complex34aSet = false;
1142 
1143     /**
1144      * Indicates if this parameter is 'complex', that is: its of a complex type (has at least one
1145      * attribute or association).
1146      * @return (boolean)handleIsComplex()
1147      */
1148     public final boolean isComplex()
1149     {
1150         boolean complex34a = this.__complex34a;
1151         if (!this.__complex34aSet)
1152         {
1153             // complex has no pre constraints
1154             complex34a = handleIsComplex();
1155             // complex has no post constraints
1156             this.__complex34a = complex34a;
1157             if (isMetafacadePropertyCachingEnabled())
1158             {
1159                 this.__complex34aSet = true;
1160             }
1161         }
1162         return complex34a;
1163     }
1164 
1165    /**
1166     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getAttributes()
1167     * @return Collection
1168     */
1169     protected abstract Collection handleGetAttributes();
1170 
1171     private Collection __attributes35a;
1172     private boolean __attributes35aSet = false;
1173 
1174     /**
1175      * All attributes belonging to this parameter's type.
1176      * @return (Collection)handleGetAttributes()
1177      */
1178     public final Collection getAttributes()
1179     {
1180         Collection attributes35a = this.__attributes35a;
1181         if (!this.__attributes35aSet)
1182         {
1183             // attributes has no pre constraints
1184             attributes35a = handleGetAttributes();
1185             // attributes has no post constraints
1186             this.__attributes35a = attributes35a;
1187             if (isMetafacadePropertyCachingEnabled())
1188             {
1189                 this.__attributes35aSet = true;
1190             }
1191         }
1192         return attributes35a;
1193     }
1194 
1195    /**
1196     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getNavigableAssociationEnds()
1197     * @return Collection
1198     */
1199     protected abstract Collection handleGetNavigableAssociationEnds();
1200 
1201     private Collection __navigableAssociationEnds36a;
1202     private boolean __navigableAssociationEnds36aSet = false;
1203 
1204     /**
1205      * All navigation association ends belonging to this parameter's type.
1206      * @return (Collection)handleGetNavigableAssociationEnds()
1207      */
1208     public final Collection getNavigableAssociationEnds()
1209     {
1210         Collection navigableAssociationEnds36a = this.__navigableAssociationEnds36a;
1211         if (!this.__navigableAssociationEnds36aSet)
1212         {
1213             // navigableAssociationEnds has no pre constraints
1214             navigableAssociationEnds36a = handleGetNavigableAssociationEnds();
1215             // navigableAssociationEnds has no post constraints
1216             this.__navigableAssociationEnds36a = navigableAssociationEnds36a;
1217             if (isMetafacadePropertyCachingEnabled())
1218             {
1219                 this.__navigableAssociationEnds36aSet = true;
1220             }
1221         }
1222         return navigableAssociationEnds36a;
1223     }
1224 
1225    /**
1226     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isEqualValidator()
1227     * @return boolean
1228     */
1229     protected abstract boolean handleIsEqualValidator();
1230 
1231     private boolean __equalValidator37a;
1232     private boolean __equalValidator37aSet = false;
1233 
1234     /**
1235      * Indicates whether or not this parameter uses the equal validator.
1236      * @return (boolean)handleIsEqualValidator()
1237      */
1238     public final boolean isEqualValidator()
1239     {
1240         boolean equalValidator37a = this.__equalValidator37a;
1241         if (!this.__equalValidator37aSet)
1242         {
1243             // equalValidator has no pre constraints
1244             equalValidator37a = handleIsEqualValidator();
1245             // equalValidator has no post constraints
1246             this.__equalValidator37a = equalValidator37a;
1247             if (isMetafacadePropertyCachingEnabled())
1248             {
1249                 this.__equalValidator37aSet = true;
1250             }
1251         }
1252         return equalValidator37a;
1253     }
1254 
1255    /**
1256     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getBackingValueName()
1257     * @return String
1258     */
1259     protected abstract String handleGetBackingValueName();
1260 
1261     private String __backingValueName38a;
1262     private boolean __backingValueName38aSet = false;
1263 
1264     /**
1265      * The name of the backing value for this parameter (only used with collections and arrays that
1266      * are input type table).
1267      * @return (String)handleGetBackingValueName()
1268      */
1269     public final String getBackingValueName()
1270     {
1271         String backingValueName38a = this.__backingValueName38a;
1272         if (!this.__backingValueName38aSet)
1273         {
1274             // backingValueName has no pre constraints
1275             backingValueName38a = handleGetBackingValueName();
1276             // backingValueName has no post constraints
1277             this.__backingValueName38a = backingValueName38a;
1278             if (isMetafacadePropertyCachingEnabled())
1279             {
1280                 this.__backingValueName38aSet = true;
1281             }
1282         }
1283         return backingValueName38a;
1284     }
1285 
1286    /**
1287     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isInputTable()
1288     * @return boolean
1289     */
1290     protected abstract boolean handleIsInputTable();
1291 
1292     private boolean __inputTable39a;
1293     private boolean __inputTable39aSet = false;
1294 
1295     /**
1296      * Indicates whether or not this is an table input type.
1297      * @return (boolean)handleIsInputTable()
1298      */
1299     public final boolean isInputTable()
1300     {
1301         boolean inputTable39a = this.__inputTable39a;
1302         if (!this.__inputTable39aSet)
1303         {
1304             // inputTable has no pre constraints
1305             inputTable39a = handleIsInputTable();
1306             // inputTable has no post constraints
1307             this.__inputTable39a = inputTable39a;
1308             if (isMetafacadePropertyCachingEnabled())
1309             {
1310                 this.__inputTable39aSet = true;
1311             }
1312         }
1313         return inputTable39a;
1314     }
1315 
1316    /**
1317     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isBackingValueRequired()
1318     * @return boolean
1319     */
1320     protected abstract boolean handleIsBackingValueRequired();
1321 
1322     private boolean __backingValueRequired40a;
1323     private boolean __backingValueRequired40aSet = false;
1324 
1325     /**
1326      * Indicates if a backing value is required for this parameter.
1327      * @return (boolean)handleIsBackingValueRequired()
1328      */
1329     public final boolean isBackingValueRequired()
1330     {
1331         boolean backingValueRequired40a = this.__backingValueRequired40a;
1332         if (!this.__backingValueRequired40aSet)
1333         {
1334             // backingValueRequired has no pre constraints
1335             backingValueRequired40a = handleIsBackingValueRequired();
1336             // backingValueRequired has no post constraints
1337             this.__backingValueRequired40a = backingValueRequired40a;
1338             if (isMetafacadePropertyCachingEnabled())
1339             {
1340                 this.__backingValueRequired40aSet = true;
1341             }
1342         }
1343         return backingValueRequired40a;
1344     }
1345 
1346    /**
1347     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getInputTableIdentifierColumns()
1348     * @return String
1349     */
1350     protected abstract String handleGetInputTableIdentifierColumns();
1351 
1352     private String __inputTableIdentifierColumns41a;
1353     private boolean __inputTableIdentifierColumns41aSet = false;
1354 
1355     /**
1356      * A comma separated list of the input table identifier columns (these are the columns that
1357      * uniquely define a row in an input table).
1358      * @return (String)handleGetInputTableIdentifierColumns()
1359      */
1360     public final String getInputTableIdentifierColumns()
1361     {
1362         String inputTableIdentifierColumns41a = this.__inputTableIdentifierColumns41a;
1363         if (!this.__inputTableIdentifierColumns41aSet)
1364         {
1365             // inputTableIdentifierColumns has no pre constraints
1366             inputTableIdentifierColumns41a = handleGetInputTableIdentifierColumns();
1367             // inputTableIdentifierColumns has no post constraints
1368             this.__inputTableIdentifierColumns41a = inputTableIdentifierColumns41a;
1369             if (isMetafacadePropertyCachingEnabled())
1370             {
1371                 this.__inputTableIdentifierColumns41aSet = true;
1372             }
1373         }
1374         return inputTableIdentifierColumns41a;
1375     }
1376 
1377    /**
1378     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#isPageableTable()
1379     * @return boolean
1380     */
1381     protected abstract boolean handleIsPageableTable();
1382 
1383     private boolean __pageableTable42a;
1384     private boolean __pageableTable42aSet = false;
1385 
1386     /**
1387      * Whether or not the parameter is a "pageable table", that is a table that supports paging
1388      * (i.e. DB paging).
1389      * @return (boolean)handleIsPageableTable()
1390      */
1391     public final boolean isPageableTable()
1392     {
1393         boolean pageableTable42a = this.__pageableTable42a;
1394         if (!this.__pageableTable42aSet)
1395         {
1396             // pageableTable has no pre constraints
1397             pageableTable42a = handleIsPageableTable();
1398             // pageableTable has no post constraints
1399             this.__pageableTable42a = pageableTable42a;
1400             if (isMetafacadePropertyCachingEnabled())
1401             {
1402                 this.__pageableTable42aSet = true;
1403             }
1404         }
1405         return pageableTable42a;
1406     }
1407 
1408    /**
1409     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getMaxLength()
1410     * @return String
1411     */
1412     protected abstract String handleGetMaxLength();
1413 
1414     private String __maxLength43a;
1415     private boolean __maxLength43aSet = false;
1416 
1417     /**
1418      * The max length allowed in the input component
1419      * @return (String)handleGetMaxLength()
1420      */
1421     public final String getMaxLength()
1422     {
1423         String maxLength43a = this.__maxLength43a;
1424         if (!this.__maxLength43aSet)
1425         {
1426             // maxLength has no pre constraints
1427             maxLength43a = handleGetMaxLength();
1428             // maxLength has no post constraints
1429             this.__maxLength43a = maxLength43a;
1430             if (isMetafacadePropertyCachingEnabled())
1431             {
1432                 this.__maxLength43aSet = true;
1433             }
1434         }
1435         return maxLength43a;
1436     }
1437 
1438    /**
1439     * @see org.andromda.cartridges.jsf.metafacades.JSFParameter#getAnnotations()
1440     * @return Collection
1441     */
1442     protected abstract Collection handleGetAnnotations();
1443 
1444     private Collection __annotations44a;
1445     private boolean __annotations44aSet = false;
1446 
1447     /**
1448      * All the annotations for this parameter.
1449      * @return (Collection)handleGetAnnotations()
1450      */
1451     public final Collection getAnnotations()
1452     {
1453         Collection annotations44a = this.__annotations44a;
1454         if (!this.__annotations44aSet)
1455         {
1456             // annotations has no pre constraints
1457             annotations44a = handleGetAnnotations();
1458             // annotations has no post constraints
1459             this.__annotations44a = annotations44a;
1460             if (isMetafacadePropertyCachingEnabled())
1461             {
1462                 this.__annotations44aSet = true;
1463             }
1464         }
1465         return annotations44a;
1466     }
1467 
1468     // ---------------- business methods ----------------------
1469 
1470     /**
1471      * Method to be implemented in descendants
1472      * TODO: Model Documentation for
1473      * org.andromda.cartridges.jsf.metafacades.JSFParameter.getTableColumnMessageKey
1474      * @param columnName
1475      * @return String
1476      */
1477     protected abstract String handleGetTableColumnMessageKey(String columnName);
1478 
1479     /**
1480      * TODO: Model Documentation for
1481      * org.andromda.cartridges.jsf.metafacades.JSFParameter.getTableColumnMessageKey
1482      * @param columnName String
1483      * The name of the table column.
1484      * @return handleGetTableColumnMessageKey(columnName)
1485      */
1486     public String getTableColumnMessageKey(String columnName)
1487     {
1488         // getTableColumnMessageKey has no pre constraints
1489         String returnValue = handleGetTableColumnMessageKey(columnName);
1490         // getTableColumnMessageKey has no post constraints
1491         return returnValue;
1492     }
1493 
1494     /**
1495      * Method to be implemented in descendants
1496      * TODO: Model Documentation for
1497      * org.andromda.cartridges.jsf.metafacades.JSFParameter.getTableColumnMessageValue
1498      * @param columnName
1499      * @return String
1500      */
1501     protected abstract String handleGetTableColumnMessageValue(String columnName);
1502 
1503     /**
1504      * TODO: Model Documentation for
1505      * org.andromda.cartridges.jsf.metafacades.JSFParameter.getTableColumnMessageValue
1506      * @param columnName String
1507      * Returns the resource bundle value for this table's column, only returns a value when this
1508      * parameter is a table.
1509      * @return handleGetTableColumnMessageValue(columnName)
1510      */
1511     public String getTableColumnMessageValue(String columnName)
1512     {
1513         // getTableColumnMessageValue has no pre constraints
1514         String returnValue = handleGetTableColumnMessageValue(columnName);
1515         // getTableColumnMessageValue has no post constraints
1516         return returnValue;
1517     }
1518 
1519     /**
1520      * Method to be implemented in descendants
1521      * Gets the arguments for this parameter's validators.
1522      * @param validatorType
1523      * @return Collection
1524      */
1525     protected abstract Collection handleGetValidatorArgs(String validatorType);
1526 
1527     /**
1528      * Gets the arguments for this parameter's validators.
1529      * @param validatorType String
1530      * The type of the validator.
1531      * @return handleGetValidatorArgs(validatorType)
1532      */
1533     public Collection getValidatorArgs(String validatorType)
1534     {
1535         // getValidatorArgs has no pre constraints
1536         Collection returnValue = handleGetValidatorArgs(validatorType);
1537         // getValidatorArgs has no post constraints
1538         return returnValue;
1539     }
1540 
1541     /**
1542      * Method to be implemented in descendants
1543      * Those actions that are targetting the given column, only makes sense when this parameter
1544      * represents a table view-variable.
1545      * @param columnName
1546      * @return List
1547      */
1548     protected abstract List handleGetTableColumnActions(String columnName);
1549 
1550     /**
1551      * Those actions that are targetting the given column, only makes sense when this parameter
1552      * represents a table view-variable.
1553      * @param columnName String
1554      * The column name of the column that the retrieved actions target.
1555      * @return handleGetTableColumnActions(columnName)
1556      */
1557     public List getTableColumnActions(String columnName)
1558     {
1559         // getTableColumnActions has no pre constraints
1560         List returnValue = handleGetTableColumnActions(columnName);
1561         // getTableColumnActions has no post constraints
1562         return returnValue;
1563     }
1564 
1565     // ------------- associations ------------------
1566 
1567     private List<JSFAction> __getTableHyperlinkActions1r;
1568     private boolean __getTableHyperlinkActions1rSet = false;
1569 
1570     /**
1571      * Represents a parameter in a JSF front-end.
1572      * @return (List<JSFAction>)handleGetTableHyperlinkActions()
1573      */
1574     public final List<JSFAction> getTableHyperlinkActions()
1575     {
1576         List<JSFAction> getTableHyperlinkActions1r = this.__getTableHyperlinkActions1r;
1577         if (!this.__getTableHyperlinkActions1rSet)
1578         {
1579             // jSFParameter has no pre constraints
1580             List result = handleGetTableHyperlinkActions();
1581             List shieldedResult = this.shieldedElements(result);
1582             try
1583             {
1584                 getTableHyperlinkActions1r = (List<JSFAction>)shieldedResult;
1585             }
1586             catch (ClassCastException ex)
1587             {
1588                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
1589                 JSFParameterLogic.logger.warn("incorrect metafacade cast for JSFParameterLogic.getTableHyperlinkActions List<JSFAction> " + result + ": " + shieldedResult);
1590             }
1591             // jSFParameter has no post constraints
1592             this.__getTableHyperlinkActions1r = getTableHyperlinkActions1r;
1593             if (isMetafacadePropertyCachingEnabled())
1594             {
1595                 this.__getTableHyperlinkActions1rSet = true;
1596             }
1597         }
1598         return getTableHyperlinkActions1r;
1599     }
1600 
1601     /**
1602      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
1603      * @return  List
1604      */
1605     protected abstract List handleGetTableHyperlinkActions();
1606 
1607     private List<JSFAction> __getTableFormActions2r;
1608     private boolean __getTableFormActions2rSet = false;
1609 
1610     /**
1611      * Represents a parameter in a JSF front-end.
1612      * @return (List<JSFAction>)handleGetTableFormActions()
1613      */
1614     public final List<JSFAction> getTableFormActions()
1615     {
1616         List<JSFAction> getTableFormActions2r = this.__getTableFormActions2r;
1617         if (!this.__getTableFormActions2rSet)
1618         {
1619             // jSFParameter has no pre constraints
1620             List result = handleGetTableFormActions();
1621             List shieldedResult = this.shieldedElements(result);
1622             try
1623             {
1624                 getTableFormActions2r = (List<JSFAction>)shieldedResult;
1625             }
1626             catch (ClassCastException ex)
1627             {
1628                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
1629                 JSFParameterLogic.logger.warn("incorrect metafacade cast for JSFParameterLogic.getTableFormActions List<JSFAction> " + result + ": " + shieldedResult);
1630             }
1631             // jSFParameter has no post constraints
1632             this.__getTableFormActions2r = getTableFormActions2r;
1633             if (isMetafacadePropertyCachingEnabled())
1634             {
1635                 this.__getTableFormActions2rSet = true;
1636             }
1637         }
1638         return getTableFormActions2r;
1639     }
1640 
1641     /**
1642      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
1643      * @return  List
1644      */
1645     protected abstract List handleGetTableFormActions();
1646 
1647     /**
1648      * @return true
1649      * @see FrontEndParameter
1650      */
1651     public boolean isFrontEndParameterMetaType()
1652     {
1653         return true;
1654     }
1655 
1656     /**
1657      * @return true
1658      * @see org.andromda.metafacades.uml.ParameterFacade
1659      */
1660     public boolean isParameterFacadeMetaType()
1661     {
1662         return true;
1663     }
1664 
1665     /**
1666      * @return true
1667      * @see ModelElementFacade
1668      */
1669     public boolean isModelElementFacadeMetaType()
1670     {
1671         return true;
1672     }
1673 
1674     // ----------- delegates to FrontEndParameter ------------
1675     /**
1676      * The action to which this parameter belongs (if it belongs to an action), otherwise it returns
1677      * null.
1678      * @see FrontEndParameter#getAction()
1679      */
1680     public FrontEndAction getAction()
1681     {
1682         return this.getSuperFrontEndParameter().getAction();
1683     }
1684 
1685     /**
1686      * Gets the controller operation to which this parameter belongs.
1687      * @see FrontEndParameter#getControllerOperation()
1688      */
1689     public FrontEndControllerOperation getControllerOperation()
1690     {
1691         return this.getSuperFrontEndParameter().getControllerOperation();
1692     }
1693 
1694     /**
1695      * A collection of all possible attribute names of a table (this will only work when your table
1696      * is modeled as an array..not a collection).
1697      * @see FrontEndParameter#getTableAttributeNames()
1698      */
1699     public Collection<String> getTableAttributeNames()
1700     {
1701         return this.getSuperFrontEndParameter().getTableAttributeNames();
1702     }
1703 
1704     /**
1705      * All the columns for this parameter if it represents a table variable. If a column is linked
1706      * by an event (action) a FrontEndParameter instance is included in the return value, otherwise
1707      * a plain String representing the column name.
1708      * @see FrontEndParameter#getTableColumnNames()
1709      */
1710     public Collection<String> getTableColumnNames()
1711     {
1712         return this.getSuperFrontEndParameter().getTableColumnNames();
1713     }
1714 
1715     /**
1716      * A list of all attributes which make up the table columns of this table (this only contains
1717      * attributes when the table is represented by an array).
1718      * @see FrontEndParameter#getTableColumns()
1719      */
1720     public Collection<String> getTableColumns()
1721     {
1722         return this.getSuperFrontEndParameter().getTableColumns();
1723     }
1724 
1725     /**
1726      * Represents the view in which this parameter will be used.
1727      * @see FrontEndParameter#getView()
1728      */
1729     public FrontEndView getView()
1730     {
1731         return this.getSuperFrontEndParameter().getView();
1732     }
1733 
1734     /**
1735      * Indicates whether or not this is an action parameter or not.
1736      * @see FrontEndParameter#isActionParameter()
1737      */
1738     public boolean isActionParameter()
1739     {
1740         return this.getSuperFrontEndParameter().isActionParameter();
1741     }
1742 
1743     /**
1744      * Indicates if this parameter is contained in a "front-end" use case.
1745      * @see FrontEndParameter#isContainedInFrontEndUseCase()
1746      */
1747     public boolean isContainedInFrontEndUseCase()
1748     {
1749         return this.getSuperFrontEndParameter().isContainedInFrontEndUseCase();
1750     }
1751 
1752     /**
1753      * Indicates whether or not this parameter is an argument of a controller operation.
1754      * @see FrontEndParameter#isControllerOperationArgument()
1755      */
1756     public boolean isControllerOperationArgument()
1757     {
1758         return this.getSuperFrontEndParameter().isControllerOperationArgument();
1759     }
1760 
1761     /**
1762      * Indicates whether or not this parameter represents a table.
1763      * @see FrontEndParameter#isTable()
1764      */
1765     public boolean isTable()
1766     {
1767         return this.getSuperFrontEndParameter().isTable();
1768     }
1769 
1770     /**
1771      * Copies all tagged values from the given ModelElementFacade to this model element facade.
1772      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
1773      */
1774     public void copyTaggedValues(ModelElementFacade element)
1775     {
1776         this.getSuperFrontEndParameter().copyTaggedValues(element);
1777     }
1778 
1779     /**
1780      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
1781      * one found will be returned.
1782      * @see ModelElementFacade#findTaggedValue(String tagName)
1783      */
1784     public Object findTaggedValue(String tagName)
1785     {
1786         return this.getSuperFrontEndParameter().findTaggedValue(tagName);
1787     }
1788 
1789     /**
1790      * Returns all the values for the tagged value with the specified name. The returned collection
1791      * will contains only String instances, or will be empty. Never null.
1792      * @see ModelElementFacade#findTaggedValues(String tagName)
1793      */
1794     public Collection<Object> findTaggedValues(String tagName)
1795     {
1796         return this.getSuperFrontEndParameter().findTaggedValues(tagName);
1797     }
1798 
1799     /**
1800      * Returns the fully qualified name of the model element. The fully qualified name includes
1801      * complete package qualified name of the underlying model element. The templates parameter will
1802      * be replaced by the correct one given the binding relation of the parameter to this element.
1803      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1804      */
1805     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1806     {
1807         return this.getSuperFrontEndParameter().getBindedFullyQualifiedName(bindedElement);
1808     }
1809 
1810     /**
1811      * Gets all constraints belonging to the model element.
1812      * @see ModelElementFacade#getConstraints()
1813      */
1814     public Collection<ConstraintFacade> getConstraints()
1815     {
1816         return this.getSuperFrontEndParameter().getConstraints();
1817     }
1818 
1819     /**
1820      * Returns the constraints of the argument kind that have been placed onto this model. Typical
1821      * kinds are "inv", "pre" and "post". Other kinds are possible.
1822      * @see ModelElementFacade#getConstraints(String kind)
1823      */
1824     public Collection<ConstraintFacade> getConstraints(String kind)
1825     {
1826         return this.getSuperFrontEndParameter().getConstraints(kind);
1827     }
1828 
1829     /**
1830      * Gets the documentation for the model element, The indent argument is prefixed to each line.
1831      * By default this method wraps lines after 64 characters.
1832      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
1833      * @see ModelElementFacade#getDocumentation(String indent)
1834      */
1835     public String getDocumentation(String indent)
1836     {
1837         return this.getSuperFrontEndParameter().getDocumentation(indent);
1838     }
1839 
1840     /**
1841      * This method returns the documentation for this model element, with the lines wrapped after
1842      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1843      * required. By default paragraphs are returned as HTML.
1844      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
1845      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
1846      */
1847     public String getDocumentation(String indent, int lineLength)
1848     {
1849         return this.getSuperFrontEndParameter().getDocumentation(indent, lineLength);
1850     }
1851 
1852     /**
1853      * This method returns the documentation for this model element, with the lines wrapped after
1854      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1855      * required. HTML style determines if HTML Escaping is applied.
1856      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1857      */
1858     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1859     {
1860         return this.getSuperFrontEndParameter().getDocumentation(indent, lineLength, htmlStyle);
1861     }
1862 
1863     /**
1864      * The fully qualified name of this model element.
1865      * @see ModelElementFacade#getFullyQualifiedName()
1866      */
1867     public String getFullyQualifiedName()
1868     {
1869         return this.getSuperFrontEndParameter().getFullyQualifiedName();
1870     }
1871 
1872     /**
1873      * Returns the fully qualified name of the model element. The fully qualified name includes
1874      * complete package qualified name of the underlying model element.  If modelName is true, then
1875      * the original name of the model element (the name contained within the model) will be the name
1876      * returned, otherwise a name from a language mapping will be returned.
1877      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1878      */
1879     public String getFullyQualifiedName(boolean modelName)
1880     {
1881         return this.getSuperFrontEndParameter().getFullyQualifiedName(modelName);
1882     }
1883 
1884     /**
1885      * Returns the fully qualified name as a path, the returned value always starts with out a slash
1886      * '/'.
1887      * @see ModelElementFacade#getFullyQualifiedNamePath()
1888      */
1889     public String getFullyQualifiedNamePath()
1890     {
1891         return this.getSuperFrontEndParameter().getFullyQualifiedNamePath();
1892     }
1893 
1894     /**
1895      * Gets the unique identifier of the underlying model element.
1896      * @see ModelElementFacade#getId()
1897      */
1898     public String getId()
1899     {
1900         return this.getSuperFrontEndParameter().getId();
1901     }
1902 
1903     /**
1904      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1905      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1906      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1907      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1908      * JDK5 compiler level.
1909      * @see ModelElementFacade#getKeywords()
1910      */
1911     public Collection<String> getKeywords()
1912     {
1913         return this.getSuperFrontEndParameter().getKeywords();
1914     }
1915 
1916     /**
1917      * UML2: Retrieves a localized label for this named element.
1918      * @see ModelElementFacade#getLabel()
1919      */
1920     public String getLabel()
1921     {
1922         return this.getSuperFrontEndParameter().getLabel();
1923     }
1924 
1925     /**
1926      * The language mappings that have been set for this model element.
1927      * @see ModelElementFacade#getLanguageMappings()
1928      */
1929     public TypeMappings getLanguageMappings()
1930     {
1931         return this.getSuperFrontEndParameter().getLanguageMappings();
1932     }
1933 
1934     /**
1935      * Return the model containing this model element (multiple models may be loaded and processed
1936      * at the same time).
1937      * @see ModelElementFacade#getModel()
1938      */
1939     public ModelFacade getModel()
1940     {
1941         return this.getSuperFrontEndParameter().getModel();
1942     }
1943 
1944     /**
1945      * The name of the model element.
1946      * @see ModelElementFacade#getName()
1947      */
1948     public String getName()
1949     {
1950         return this.getSuperFrontEndParameter().getName();
1951     }
1952 
1953     /**
1954      * Gets the package to which this model element belongs.
1955      * @see ModelElementFacade#getPackage()
1956      */
1957     public ModelElementFacade getPackage()
1958     {
1959         return this.getSuperFrontEndParameter().getPackage();
1960     }
1961 
1962     /**
1963      * The name of this model element's package.
1964      * @see ModelElementFacade#getPackageName()
1965      */
1966     public String getPackageName()
1967     {
1968         return this.getSuperFrontEndParameter().getPackageName();
1969     }
1970 
1971     /**
1972      * Gets the package name (optionally providing the ability to retrieve the model name and not
1973      * the mapped name).
1974      * @see ModelElementFacade#getPackageName(boolean modelName)
1975      */
1976     public String getPackageName(boolean modelName)
1977     {
1978         return this.getSuperFrontEndParameter().getPackageName(modelName);
1979     }
1980 
1981     /**
1982      * Returns the package as a path, the returned value always starts with out a slash '/'.
1983      * @see ModelElementFacade#getPackagePath()
1984      */
1985     public String getPackagePath()
1986     {
1987         return this.getSuperFrontEndParameter().getPackagePath();
1988     }
1989 
1990     /**
1991      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1992      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1993      * the names of the containing namespaces starting at the root of the hierarchy and ending with
1994      * the name of the NamedElement itself.
1995      * @see ModelElementFacade#getQualifiedName()
1996      */
1997     public String getQualifiedName()
1998     {
1999         return this.getSuperFrontEndParameter().getQualifiedName();
2000     }
2001 
2002     /**
2003      * Gets the root package for the model element.
2004      * @see ModelElementFacade#getRootPackage()
2005      */
2006     public PackageFacade getRootPackage()
2007     {
2008         return this.getSuperFrontEndParameter().getRootPackage();
2009     }
2010 
2011     /**
2012      * Gets the dependencies for which this model element is the source.
2013      * @see ModelElementFacade#getSourceDependencies()
2014      */
2015     public Collection<DependencyFacade> getSourceDependencies()
2016     {
2017         return this.getSuperFrontEndParameter().getSourceDependencies();
2018     }
2019 
2020     /**
2021      * If this model element is the context of an activity graph, this represents that activity
2022      * graph.
2023      * @see ModelElementFacade#getStateMachineContext()
2024      */
2025     public StateMachineFacade getStateMachineContext()
2026     {
2027         return this.getSuperFrontEndParameter().getStateMachineContext();
2028     }
2029 
2030     /**
2031      * The collection of ALL stereotype names for this model element.
2032      * @see ModelElementFacade#getStereotypeNames()
2033      */
2034     public Collection<String> getStereotypeNames()
2035     {
2036         return this.getSuperFrontEndParameter().getStereotypeNames();
2037     }
2038 
2039     /**
2040      * Gets all stereotypes for this model element.
2041      * @see ModelElementFacade#getStereotypes()
2042      */
2043     public Collection<StereotypeFacade> getStereotypes()
2044     {
2045         return this.getSuperFrontEndParameter().getStereotypes();
2046     }
2047 
2048     /**
2049      * Return the TaggedValues associated with this model element, under all stereotypes.
2050      * @see ModelElementFacade#getTaggedValues()
2051      */
2052     public Collection<TaggedValueFacade> getTaggedValues()
2053     {
2054         return this.getSuperFrontEndParameter().getTaggedValues();
2055     }
2056 
2057     /**
2058      * Gets the dependencies for which this model element is the target.
2059      * @see ModelElementFacade#getTargetDependencies()
2060      */
2061     public Collection<DependencyFacade> getTargetDependencies()
2062     {
2063         return this.getSuperFrontEndParameter().getTargetDependencies();
2064     }
2065 
2066     /**
2067      * Get the template parameter for this model element having the parameterName
2068      * @see ModelElementFacade#getTemplateParameter(String parameterName)
2069      */
2070     public Object getTemplateParameter(String parameterName)
2071     {
2072         return this.getSuperFrontEndParameter().getTemplateParameter(parameterName);
2073     }
2074 
2075     /**
2076      * Get the template parameters for this model element
2077      * @see ModelElementFacade#getTemplateParameters()
2078      */
2079     public Collection<TemplateParameterFacade> getTemplateParameters()
2080     {
2081         return this.getSuperFrontEndParameter().getTemplateParameters();
2082     }
2083 
2084     /**
2085      * The visibility (i.e. public, private, protected or package) of the model element, will
2086      * attempt a lookup for these values in the language mappings (if any).
2087      * @see ModelElementFacade#getVisibility()
2088      */
2089     public String getVisibility()
2090     {
2091         return this.getSuperFrontEndParameter().getVisibility();
2092     }
2093 
2094     /**
2095      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
2096      * is taken into account when searching for the stereotype), false otherwise.
2097      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
2098      */
2099     public boolean hasExactStereotype(String stereotypeName)
2100     {
2101         return this.getSuperFrontEndParameter().hasExactStereotype(stereotypeName);
2102     }
2103 
2104     /**
2105      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
2106      * pipe, semicolon, or << >>
2107      * @see ModelElementFacade#hasKeyword(String keywordName)
2108      */
2109     public boolean hasKeyword(String keywordName)
2110     {
2111         return this.getSuperFrontEndParameter().hasKeyword(keywordName);
2112     }
2113 
2114     /**
2115      * Returns true if the model element has the specified stereotype.  If the stereotype itself
2116      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
2117      * one of the stereotype's ancestors has a matching name this method will return true, false
2118      * otherwise.
2119      * For example, if we have a certain stereotype called <<exception>> and a model element has a
2120      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
2121      * method with 'stereotypeName' defined as 'exception' the method would return true since
2122      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
2123      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
2124      * @see ModelElementFacade#hasStereotype(String stereotypeName)
2125      */
2126     public boolean hasStereotype(String stereotypeName)
2127     {
2128         return this.getSuperFrontEndParameter().hasStereotype(stereotypeName);
2129     }
2130 
2131     /**
2132      * True if there are target dependencies from this element that are instances of BindingFacade.
2133      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
2134      * @see ModelElementFacade#isBindingDependenciesPresent()
2135      */
2136     public boolean isBindingDependenciesPresent()
2137     {
2138         return this.getSuperFrontEndParameter().isBindingDependenciesPresent();
2139     }
2140 
2141     /**
2142      * Indicates if any constraints are present on this model element.
2143      * @see ModelElementFacade#isConstraintsPresent()
2144      */
2145     public boolean isConstraintsPresent()
2146     {
2147         return this.getSuperFrontEndParameter().isConstraintsPresent();
2148     }
2149 
2150     /**
2151      * Indicates if any documentation is present on this model element.
2152      * @see ModelElementFacade#isDocumentationPresent()
2153      */
2154     public boolean isDocumentationPresent()
2155     {
2156         return this.getSuperFrontEndParameter().isDocumentationPresent();
2157     }
2158 
2159     /**
2160      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
2161      * @see ModelElementFacade#isReservedWord()
2162      */
2163     public boolean isReservedWord()
2164     {
2165         return this.getSuperFrontEndParameter().isReservedWord();
2166     }
2167 
2168     /**
2169      * True is there are template parameters on this model element. For UML2, applies to Class,
2170      * Operation, Property, and Parameter.
2171      * @see ModelElementFacade#isTemplateParametersPresent()
2172      */
2173     public boolean isTemplateParametersPresent()
2174     {
2175         return this.getSuperFrontEndParameter().isTemplateParametersPresent();
2176     }
2177 
2178     /**
2179      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
2180      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
2181      * Enumerations and Interfaces, optionally applies on other model elements.
2182      * @see ModelElementFacade#isValidIdentifierName()
2183      */
2184     public boolean isValidIdentifierName()
2185     {
2186         return this.getSuperFrontEndParameter().isValidIdentifierName();
2187     }
2188 
2189     /**
2190      * Searches for the constraint with the specified 'name' on this model element, and if found
2191      * translates it using the specified 'translation' from a translation library discovered by the
2192      * framework.
2193      * @see ModelElementFacade#translateConstraint(String name, String translation)
2194      */
2195     public String translateConstraint(String name, String translation)
2196     {
2197         return this.getSuperFrontEndParameter().translateConstraint(name, translation);
2198     }
2199 
2200     /**
2201      * Translates all constraints belonging to this model element with the given 'translation'.
2202      * @see ModelElementFacade#translateConstraints(String translation)
2203      */
2204     public String[] translateConstraints(String translation)
2205     {
2206         return this.getSuperFrontEndParameter().translateConstraints(translation);
2207     }
2208 
2209     /**
2210      * Translates the constraints of the specified 'kind' belonging to this model element.
2211      * @see ModelElementFacade#translateConstraints(String kind, String translation)
2212      */
2213     public String[] translateConstraints(String kind, String translation)
2214     {
2215         return this.getSuperFrontEndParameter().translateConstraints(kind, translation);
2216     }
2217 
2218     /**
2219      * TODO: Model Documentation for org.andromda.metafacades.uml.ParameterFacade.defaultValue
2220      * @see org.andromda.metafacades.uml.ParameterFacade#getDefaultValue()
2221      */
2222     public String getDefaultValue()
2223     {
2224         return this.getSuperFrontEndParameter().getDefaultValue();
2225     }
2226 
2227     /**
2228      * UML2: A representation of the literals of the enumeration 'Parameter Effect Kind': CREATE,
2229      * READ, UPDATE, DELETE. The datatype ParameterEffectKind is an enumeration that indicates the
2230      * effect of a behavior on values passed in or out of its parameters.
2231      * @see org.andromda.metafacades.uml.ParameterFacade#getEffect()
2232      */
2233     public String getEffect()
2234     {
2235         return this.getSuperFrontEndParameter().getEffect();
2236     }
2237 
2238     /**
2239      * If this parameter is located on an event, this will represent that event.
2240      * @see org.andromda.metafacades.uml.ParameterFacade#getEvent()
2241      */
2242     public EventFacade getEvent()
2243     {
2244         return this.getSuperFrontEndParameter().getEvent();
2245     }
2246 
2247     /**
2248      * The name to use for accessors getting this parameter from a bean.
2249      * @see org.andromda.metafacades.uml.ParameterFacade#getGetterName()
2250      */
2251     public String getGetterName()
2252     {
2253         return this.getSuperFrontEndParameter().getGetterName();
2254     }
2255 
2256     /**
2257      * Fully Qualified TypeName, determined in part by multiplicity (for UML2). For UML14, same as
2258      * getterName.
2259      * @see org.andromda.metafacades.uml.ParameterFacade#getGetterSetterTypeName()
2260      */
2261     public String getGetterSetterTypeName()
2262     {
2263         return this.getSuperFrontEndParameter().getGetterSetterTypeName();
2264     }
2265 
2266     /**
2267      * Fully Qualified implementation class of TypeName, determined in part by multiplicity (for
2268      * UML2). If upper multiplicity =1, same as getterSetterTypeName.
2269      * @see org.andromda.metafacades.uml.ParameterFacade#getGetterSetterTypeNameImpl()
2270      */
2271     public String getGetterSetterTypeNameImpl()
2272     {
2273         return this.getSuperFrontEndParameter().getGetterSetterTypeNameImpl();
2274     }
2275 
2276     /**
2277      * the lower value for the multiplicity
2278      * -only applicable for UML2
2279      * @see org.andromda.metafacades.uml.ParameterFacade#getLower()
2280      */
2281     public int getLower()
2282     {
2283         return this.getSuperFrontEndParameter().getLower();
2284     }
2285 
2286     /**
2287      * If this parameter is located on an operation, this will represent that operation.
2288      * @see org.andromda.metafacades.uml.ParameterFacade#getOperation()
2289      */
2290     public OperationFacade getOperation()
2291     {
2292         return this.getSuperFrontEndParameter().getOperation();
2293     }
2294 
2295     /**
2296      * The name to use for accessors getting this parameter in a bean.
2297      * @see org.andromda.metafacades.uml.ParameterFacade#getSetterName()
2298      */
2299     public String getSetterName()
2300     {
2301         return this.getSuperFrontEndParameter().getSetterName();
2302     }
2303 
2304     /**
2305      * A Classifier is a classification of instances - it describes a set of instances that have
2306      * features
2307      * in common. Can specify a generalization hierarchy by referencing its general classifiers. It
2308      * may be
2309      * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a
2310      * generalization hierarchy by referencing its general classifiers. Has the capability to own
2311      * collaboration uses. These collaboration uses link a collaboration with the classifier to give
2312      * a
2313      * description of the workings of the classifier. Classifier is defined to be a kind of
2314      * templateable
2315      * element so that a classifier can be parameterized. It is also defined to be a kind of
2316      * parameterable
2317      * element so that a classifier can be a formal template parameter.
2318      * @see org.andromda.metafacades.uml.ParameterFacade#getType()
2319      */
2320     public ClassifierFacade getType()
2321     {
2322         return this.getSuperFrontEndParameter().getType();
2323     }
2324 
2325     /**
2326      * the upper value of the multiplicity (will be -1 for *)
2327      * -only applicable for UML2
2328      * @see org.andromda.metafacades.uml.ParameterFacade#getUpper()
2329      */
2330     public int getUpper()
2331     {
2332         return this.getSuperFrontEndParameter().getUpper();
2333     }
2334 
2335     /**
2336      * Indicates if the default value is present.
2337      * @see org.andromda.metafacades.uml.ParameterFacade#isDefaultValuePresent()
2338      */
2339     public boolean isDefaultValuePresent()
2340     {
2341         return this.getSuperFrontEndParameter().isDefaultValuePresent();
2342     }
2343 
2344     /**
2345      * UML2: Returns the value of the 'Is Exception' attribute. The default value is "false". Tells
2346      * whether an output parameter may emit a value to the exclusion of the other outputs.
2347      * @see org.andromda.metafacades.uml.ParameterFacade#isException()
2348      */
2349     public boolean isException()
2350     {
2351         return this.getSuperFrontEndParameter().isException();
2352     }
2353 
2354     /**
2355      * True if this parameter is an 'in' parameter.
2356      * @see org.andromda.metafacades.uml.ParameterFacade#isInParameter()
2357      */
2358     public boolean isInParameter()
2359     {
2360         return this.getSuperFrontEndParameter().isInParameter();
2361     }
2362 
2363     /**
2364      * True if this parameter is an inout parameter.
2365      * @see org.andromda.metafacades.uml.ParameterFacade#isInoutParameter()
2366      */
2367     public boolean isInoutParameter()
2368     {
2369         return this.getSuperFrontEndParameter().isInoutParameter();
2370     }
2371 
2372     /**
2373      * If upper>1 or upper==unlimited. Only applies to UML2. For UML14, always false.
2374      * @see org.andromda.metafacades.uml.ParameterFacade#isMany()
2375      */
2376     public boolean isMany()
2377     {
2378         return this.getSuperFrontEndParameter().isMany();
2379     }
2380 
2381     /**
2382      * UML2 Only: Is parameter ordered within the Collection type. Ordered+Unique determines the
2383      * implementation Collection Type. For UML14, always false.
2384      * @see org.andromda.metafacades.uml.ParameterFacade#isOrdered()
2385      */
2386     public boolean isOrdered()
2387     {
2388         return this.getSuperFrontEndParameter().isOrdered();
2389     }
2390 
2391     /**
2392      * True if this parameter is an 'out' parameter.
2393      * @see org.andromda.metafacades.uml.ParameterFacade#isOutParameter()
2394      */
2395     public boolean isOutParameter()
2396     {
2397         return this.getSuperFrontEndParameter().isOutParameter();
2398     }
2399 
2400     /**
2401      * True if this parameter is readable, aka an in-parameter, or this feature is unspecified.
2402      * @see org.andromda.metafacades.uml.ParameterFacade#isReadable()
2403      */
2404     public boolean isReadable()
2405     {
2406         return this.getSuperFrontEndParameter().isReadable();
2407     }
2408 
2409     /**
2410      * Whether or not this parameter is considered required (i.e must a non-empty value).
2411      * @see org.andromda.metafacades.uml.ParameterFacade#isRequired()
2412      */
2413     public boolean isRequired()
2414     {
2415         return this.getSuperFrontEndParameter().isRequired();
2416     }
2417 
2418     /**
2419      * Whether or not this parameter represents a return parameter.
2420      * @see org.andromda.metafacades.uml.ParameterFacade#isReturn()
2421      */
2422     public boolean isReturn()
2423     {
2424         return this.getSuperFrontEndParameter().isReturn();
2425     }
2426 
2427     /**
2428      * If Parameter type isMany (UML2), is the parameter unique within the Collection. Unique+Sorted
2429      * determines pareter implementation type. For UML14, always false.
2430      * @see org.andromda.metafacades.uml.ParameterFacade#isUnique()
2431      */
2432     public boolean isUnique()
2433     {
2434         return this.getSuperFrontEndParameter().isUnique();
2435     }
2436 
2437     /**
2438      * True if this parameter is writable, aka an out-parameter, or this feature is unspecified.
2439      * @see org.andromda.metafacades.uml.ParameterFacade#isWritable()
2440      */
2441     public boolean isWritable()
2442     {
2443         return this.getSuperFrontEndParameter().isWritable();
2444     }
2445 
2446     /**
2447      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
2448      */
2449     @Override
2450     public void initialize()
2451     {
2452         this.getSuperFrontEndParameter().initialize();
2453     }
2454 
2455     /**
2456      * @return Object getSuperFrontEndParameter().getValidationOwner()
2457      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
2458      */
2459     @Override
2460     public Object getValidationOwner()
2461     {
2462         Object owner = this.getSuperFrontEndParameter().getValidationOwner();
2463         return owner;
2464     }
2465 
2466     /**
2467      * @return String getSuperFrontEndParameter().getValidationName()
2468      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
2469      */
2470     @Override
2471     public String getValidationName()
2472     {
2473         String name = this.getSuperFrontEndParameter().getValidationName();
2474         return name;
2475     }
2476 
2477     /**
2478      * @param validationMessages Collection<ModelValidationMessage>
2479      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
2480      */
2481     @Override
2482     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
2483     {
2484         this.getSuperFrontEndParameter().validateInvariants(validationMessages);
2485     }
2486 
2487     /**
2488      * The property that stores the name of the metafacade.
2489      */
2490     private static final String NAME_PROPERTY = "name";
2491     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
2492 
2493     /**
2494      * @see Object#toString()
2495      */
2496     @Override
2497     public String toString()
2498     {
2499         final StringBuilder toString = new StringBuilder(this.getClass().getName());
2500         toString.append("[");
2501         try
2502         {
2503             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
2504         }
2505         catch (final Throwable tryAgain)
2506         {
2507             try
2508             {
2509                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
2510             }
2511             catch (final Throwable ignore)
2512             {
2513                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
2514             }
2515         }
2516         toString.append("]");
2517         return toString.toString();
2518     }
2519 }