View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.jsf2.metafacades;
6   
7   import java.util.Collection;
8   import org.andromda.core.common.Introspector;
9   import org.andromda.core.metafacade.MetafacadeBase;
10  import org.andromda.core.metafacade.MetafacadeFactory;
11  import org.andromda.core.metafacade.ModelValidationMessage;
12  import org.andromda.metafacades.uml.AssociationEndFacade;
13  import org.andromda.metafacades.uml.AssociationFacade;
14  import org.andromda.metafacades.uml.ClassifierFacade;
15  import org.andromda.metafacades.uml.ConstraintFacade;
16  import org.andromda.metafacades.uml.DependencyFacade;
17  import org.andromda.metafacades.uml.EntityAttribute;
18  import org.andromda.metafacades.uml.ManageableEntityAssociationEnd;
19  import org.andromda.metafacades.uml.ModelElementFacade;
20  import org.andromda.metafacades.uml.ModelFacade;
21  import org.andromda.metafacades.uml.PackageFacade;
22  import org.andromda.metafacades.uml.StateMachineFacade;
23  import org.andromda.metafacades.uml.StereotypeFacade;
24  import org.andromda.metafacades.uml.TaggedValueFacade;
25  import org.andromda.metafacades.uml.TemplateParameterFacade;
26  import org.andromda.metafacades.uml.TypeMappings;
27  
28  /**
29   * TODO: Model Documentation for
30   * org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd
31   * MetafacadeLogic for JSFManageableEntityAssociationEnd
32   *
33   * @see JSFManageableEntityAssociationEnd
34   */
35  public abstract class JSFManageableEntityAssociationEndLogic
36      extends MetafacadeBase
37      implements JSFManageableEntityAssociationEnd
38  {
39      /**
40       * The underlying UML object
41       * @see Object
42       */
43      protected Object metaObject;
44  
45      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
46       * @param metaObjectIn
47       * @param context
48       */
49      protected JSFManageableEntityAssociationEndLogic(Object metaObjectIn, String context)
50      {
51          super(metaObjectIn, getContext(context));
52          this.superManageableEntityAssociationEnd =
53             (ManageableEntityAssociationEnd)
54              MetafacadeFactory.getInstance().createFacadeImpl(
55                      "org.andromda.metafacades.uml.ManageableEntityAssociationEnd",
56                      metaObjectIn,
57                      getContext(context));
58          this.metaObject = metaObjectIn;
59      }
60  
61      /**
62       * Gets the context for this metafacade logic instance.
63       * @param context String. Set to JSFManageableEntityAssociationEnd if null
64       * @return context String
65       */
66      private static String getContext(String context)
67      {
68          if (context == null)
69          {
70              context = "org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd";
71          }
72          return context;
73      }
74  
75      private ManageableEntityAssociationEnd superManageableEntityAssociationEnd;
76      private boolean superManageableEntityAssociationEndInitialized = false;
77  
78      /**
79       * Gets the ManageableEntityAssociationEnd parent instance.
80       * @return this.superManageableEntityAssociationEnd ManageableEntityAssociationEnd
81       */
82      private ManageableEntityAssociationEnd getSuperManageableEntityAssociationEnd()
83      {
84          if (!this.superManageableEntityAssociationEndInitialized)
85          {
86              ((MetafacadeBase)this.superManageableEntityAssociationEnd).setMetafacadeContext(this.getMetafacadeContext());
87              this.superManageableEntityAssociationEndInitialized = true;
88          }
89          return this.superManageableEntityAssociationEnd;
90      }
91  
92      /** Reset context only for non-root metafacades
93       * @param context
94       * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
95       */
96      @Override
97      public void resetMetafacadeContext(String context)
98      {
99          if (!this.contextRoot) // reset context only for non-root metafacades
100         {
101             context = getContext(context);  // to have same value as in original constructor call
102             setMetafacadeContext (context);
103             if (this.superManageableEntityAssociationEndInitialized)
104             {
105                 ((MetafacadeBase)this.superManageableEntityAssociationEnd).resetMetafacadeContext(context);
106             }
107         }
108     }
109 
110     /**
111      * @return boolean true always
112      * @see JSFManageableEntityAssociationEnd
113      */
114     public boolean isJSFManageableEntityAssociationEndMetaType()
115     {
116         return true;
117     }
118 
119     // --------------- attributes ---------------------
120 
121    /**
122     * @see org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd#getMessageKey()
123     * @return String
124     */
125     protected abstract String handleGetMessageKey();
126 
127     private String __messageKey1a;
128     private boolean __messageKey1aSet = false;
129 
130     /**
131      * TODO: Model Documentation for
132      * org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd.messageKey
133      * @return (String)handleGetMessageKey()
134      */
135     public final String getMessageKey()
136     {
137         String messageKey1a = this.__messageKey1a;
138         if (!this.__messageKey1aSet)
139         {
140             // messageKey has no pre constraints
141             messageKey1a = handleGetMessageKey();
142             // messageKey has no post constraints
143             this.__messageKey1a = messageKey1a;
144             if (isMetafacadePropertyCachingEnabled())
145             {
146                 this.__messageKey1aSet = true;
147             }
148         }
149         return messageKey1a;
150     }
151 
152    /**
153     * @see org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd#getMessageValue()
154     * @return String
155     */
156     protected abstract String handleGetMessageValue();
157 
158     private String __messageValue2a;
159     private boolean __messageValue2aSet = false;
160 
161     /**
162      * TODO: Model Documentation for
163      * org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd.messageValue
164      * @return (String)handleGetMessageValue()
165      */
166     public final String getMessageValue()
167     {
168         String messageValue2a = this.__messageValue2a;
169         if (!this.__messageValue2aSet)
170         {
171             // messageValue has no pre constraints
172             messageValue2a = handleGetMessageValue();
173             // messageValue has no post constraints
174             this.__messageValue2a = messageValue2a;
175             if (isMetafacadePropertyCachingEnabled())
176             {
177                 this.__messageValue2aSet = true;
178             }
179         }
180         return messageValue2a;
181     }
182 
183    /**
184     * @see org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd#getOnlineHelpKey()
185     * @return String
186     */
187     protected abstract String handleGetOnlineHelpKey();
188 
189     private String __onlineHelpKey3a;
190     private boolean __onlineHelpKey3aSet = false;
191 
192     /**
193      * The key to lookup the online help documentation. This documentation is gathered from the
194      * documentation entered by the user, as well as analyzing the model.
195      * @return (String)handleGetOnlineHelpKey()
196      */
197     public final String getOnlineHelpKey()
198     {
199         String onlineHelpKey3a = this.__onlineHelpKey3a;
200         if (!this.__onlineHelpKey3aSet)
201         {
202             // onlineHelpKey has no pre constraints
203             onlineHelpKey3a = handleGetOnlineHelpKey();
204             // onlineHelpKey has no post constraints
205             this.__onlineHelpKey3a = onlineHelpKey3a;
206             if (isMetafacadePropertyCachingEnabled())
207             {
208                 this.__onlineHelpKey3aSet = true;
209             }
210         }
211         return onlineHelpKey3a;
212     }
213 
214    /**
215     * @see org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd#getOnlineHelpValue()
216     * @return String
217     */
218     protected abstract String handleGetOnlineHelpValue();
219 
220     private String __onlineHelpValue4a;
221     private boolean __onlineHelpValue4aSet = false;
222 
223     /**
224      * The online help documentation. This documentation is gathered from the documentation entered
225      * by the user, as well as analyzing the model. The format is HTML without any style.
226      * @return (String)handleGetOnlineHelpValue()
227      */
228     public final String getOnlineHelpValue()
229     {
230         String onlineHelpValue4a = this.__onlineHelpValue4a;
231         if (!this.__onlineHelpValue4aSet)
232         {
233             // onlineHelpValue has no pre constraints
234             onlineHelpValue4a = handleGetOnlineHelpValue();
235             // onlineHelpValue has no post constraints
236             this.__onlineHelpValue4a = onlineHelpValue4a;
237             if (isMetafacadePropertyCachingEnabled())
238             {
239                 this.__onlineHelpValue4aSet = true;
240             }
241         }
242         return onlineHelpValue4a;
243     }
244 
245    /**
246     * @see org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd#getBackingListName()
247     * @return String
248     */
249     protected abstract String handleGetBackingListName();
250 
251     private String __backingListName5a;
252     private boolean __backingListName5aSet = false;
253 
254     /**
255      * TODO: Model Documentation for
256      * org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd.backingListName
257      * @return (String)handleGetBackingListName()
258      */
259     public final String getBackingListName()
260     {
261         String backingListName5a = this.__backingListName5a;
262         if (!this.__backingListName5aSet)
263         {
264             // backingListName has no pre constraints
265             backingListName5a = handleGetBackingListName();
266             // backingListName has no post constraints
267             this.__backingListName5a = backingListName5a;
268             if (isMetafacadePropertyCachingEnabled())
269             {
270                 this.__backingListName5aSet = true;
271             }
272         }
273         return backingListName5a;
274     }
275 
276    /**
277     * @see org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd#getValueListName()
278     * @return String
279     */
280     protected abstract String handleGetValueListName();
281 
282     private String __valueListName6a;
283     private boolean __valueListName6aSet = false;
284 
285     /**
286      * TODO: Model Documentation for
287      * org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd.valueListName
288      * @return (String)handleGetValueListName()
289      */
290     public final String getValueListName()
291     {
292         String valueListName6a = this.__valueListName6a;
293         if (!this.__valueListName6aSet)
294         {
295             // valueListName has no pre constraints
296             valueListName6a = handleGetValueListName();
297             // valueListName has no post constraints
298             this.__valueListName6a = valueListName6a;
299             if (isMetafacadePropertyCachingEnabled())
300             {
301                 this.__valueListName6aSet = true;
302             }
303         }
304         return valueListName6a;
305     }
306 
307    /**
308     * @see org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd#getLabelListName()
309     * @return String
310     */
311     protected abstract String handleGetLabelListName();
312 
313     private String __labelListName7a;
314     private boolean __labelListName7aSet = false;
315 
316     /**
317      * TODO: Model Documentation for
318      * org.andromda.cartridges.jsf2.metafacades.JSFManageableEntityAssociationEnd.labelListName
319      * @return (String)handleGetLabelListName()
320      */
321     public final String getLabelListName()
322     {
323         String labelListName7a = this.__labelListName7a;
324         if (!this.__labelListName7aSet)
325         {
326             // labelListName has no pre constraints
327             labelListName7a = handleGetLabelListName();
328             // labelListName has no post constraints
329             this.__labelListName7a = labelListName7a;
330             if (isMetafacadePropertyCachingEnabled())
331             {
332                 this.__labelListName7aSet = true;
333             }
334         }
335         return labelListName7a;
336     }
337 
338     /**
339      * @return true
340      * @see ManageableEntityAssociationEnd
341      */
342     public boolean isManageableEntityAssociationEndMetaType()
343     {
344         return true;
345     }
346 
347     /**
348      * @return true
349      * @see org.andromda.metafacades.uml.EntityAssociationEnd
350      */
351     public boolean isEntityAssociationEndMetaType()
352     {
353         return true;
354     }
355 
356     /**
357      * @return true
358      * @see AssociationEndFacade
359      */
360     public boolean isAssociationEndFacadeMetaType()
361     {
362         return true;
363     }
364 
365     /**
366      * @return true
367      * @see ModelElementFacade
368      */
369     public boolean isModelElementFacadeMetaType()
370     {
371         return true;
372     }
373 
374     // ----------- delegates to ManageableEntityAssociationEnd ------------
375     /**
376      * A name suitable for use when adding new elements to this association end in programming code.
377      * @see AssociationEndFacade#getAdderName()
378      */
379     public String getAdderName()
380     {
381         return this.getSuperManageableEntityAssociationEnd().getAdderName();
382     }
383 
384     /**
385      * Returns the value of the 'Aggregation' attribute (none, shared, composite). The default value
386      * is "none". The literals are from the enumeration org.eclipse.uml2.uml.AggregationKind.
387      * Specifies the kind of aggregation that applies to the Property.
388      * @see AssociationEndFacade#getAggregationKind()
389      */
390     public String getAggregationKind()
391     {
392         return this.getSuperManageableEntityAssociationEnd().getAggregationKind();
393     }
394 
395     /**
396      * The association owning this association end.
397      * @see AssociationEndFacade#getAssociation()
398      */
399     public AssociationFacade getAssociation()
400     {
401         return this.getSuperManageableEntityAssociationEnd().getAssociation();
402     }
403 
404     /**
405      * UML2: Returns the value of the 'Default' attribute. Specifies a String that represents a
406      * value to be used when no argument is supplied for the Property. A String that is evaluated to
407      * give a default value for the Property when an object of the owning Classifier is
408      * instantiated.  Can be something like: new ValueObject(values);
409      * @see AssociationEndFacade#getDefault()
410      */
411     public String getDefault()
412     {
413         return this.getSuperManageableEntityAssociationEnd().getDefault();
414     }
415 
416     /**
417      * A name suitable for use when accessing this association end in programming code.
418      * @see AssociationEndFacade#getGetterName()
419      */
420     public String getGetterName()
421     {
422         return this.getSuperManageableEntityAssociationEnd().getGetterName();
423     }
424 
425     /**
426      * The name of the type that is returned on the accessor and mutator operations,  determined in
427      * part by the multiplicity.
428      * @see AssociationEndFacade#getGetterSetterTypeName()
429      */
430     public String getGetterSetterTypeName()
431     {
432         return this.getSuperManageableEntityAssociationEnd().getGetterSetterTypeName();
433     }
434 
435     /**
436      * the lower value for the multiplicity
437      * -only applicable for UML2
438      * @see AssociationEndFacade#getLower()
439      */
440     public int getLower()
441     {
442         return this.getSuperManageableEntityAssociationEnd().getLower();
443     }
444 
445     /**
446      * The other association end owned by this end's association.
447      * @see AssociationEndFacade#getOtherEnd()
448      */
449     public AssociationEndFacade getOtherEnd()
450     {
451         return this.getSuperManageableEntityAssociationEnd().getOtherEnd();
452     }
453 
454     /**
455      * A name suitable for use when removing element from this association end in programming code.
456      * @see AssociationEndFacade#getRemoverName()
457      */
458     public String getRemoverName()
459     {
460         return this.getSuperManageableEntityAssociationEnd().getRemoverName();
461     }
462 
463     /**
464      * A name suitable for use when accessing this association end in programming code.
465      * @see AssociationEndFacade#getSetterName()
466      */
467     public String getSetterName()
468     {
469         return this.getSuperManageableEntityAssociationEnd().getSetterName();
470     }
471 
472     /**
473      * The classifier attached to this association end.
474      * @see AssociationEndFacade#getType()
475      */
476     public ClassifierFacade getType()
477     {
478         return this.getSuperManageableEntityAssociationEnd().getType();
479     }
480 
481     /**
482      * the upper value for the multiplicity (will be -1 for *)
483      * -only applicable for UML2
484      * @see AssociationEndFacade#getUpper()
485      */
486     public int getUpper()
487     {
488         return this.getSuperManageableEntityAssociationEnd().getUpper();
489     }
490 
491     /**
492      * True if this association end represents an aggregation relationship.
493      * @see AssociationEndFacade#isAggregation()
494      */
495     public boolean isAggregation()
496     {
497         return this.getSuperManageableEntityAssociationEnd().isAggregation();
498     }
499 
500     /**
501      * Is true if update of one side of the association should also update the other side. false if
502      * not.
503      * @see AssociationEndFacade#isBidirectional()
504      */
505     public boolean isBidirectional()
506     {
507         return this.getSuperManageableEntityAssociationEnd().isBidirectional();
508     }
509 
510     /**
511      * Returns whether or not (true/false) this association end is the child end of the assocation
512      * (i.e. the other end's aggregation is composition).
513      * @see AssociationEndFacade#isChild()
514      */
515     public boolean isChild()
516     {
517         return this.getSuperManageableEntityAssociationEnd().isChild();
518     }
519 
520     /**
521      * True if this association end represents a composition relationship.
522      * @see AssociationEndFacade#isComposition()
523      */
524     public boolean isComposition()
525     {
526         return this.getSuperManageableEntityAssociationEnd().isComposition();
527     }
528 
529     /**
530      * If the association end is derived (its value is computed). UML2 only. UML14 always returns
531      * false. Default=false.
532      * @see AssociationEndFacade#isDerived()
533      */
534     public boolean isDerived()
535     {
536         return this.getSuperManageableEntityAssociationEnd().isDerived();
537     }
538 
539     /**
540      * IsLeaf property in the association end property. If true, attribute is final, cannot be
541      * extended or implemented by a descendant. Default=false.
542      * @see AssociationEndFacade#isLeaf()
543      */
544     public boolean isLeaf()
545     {
546         return this.getSuperManageableEntityAssociationEnd().isLeaf();
547     }
548 
549     /**
550      * True if this association end's multiplicity is greater than one.
551      * @see AssociationEndFacade#isMany()
552      */
553     public boolean isMany()
554     {
555         return this.getSuperManageableEntityAssociationEnd().isMany();
556     }
557 
558     /**
559      * True if this association end's and the other end's multiplicities are both many.
560      * @see AssociationEndFacade#isMany2Many()
561      */
562     public boolean isMany2Many()
563     {
564         return this.getSuperManageableEntityAssociationEnd().isMany2Many();
565     }
566 
567     /**
568      * True if this association end's multiplicity is many while the other end's is one.
569      * @see AssociationEndFacade#isMany2One()
570      */
571     public boolean isMany2One()
572     {
573         return this.getSuperManageableEntityAssociationEnd().isMany2One();
574     }
575 
576     /**
577      * True if it is possible to navigate from the other end to this association end .
578      * @see AssociationEndFacade#isNavigable()
579      */
580     public boolean isNavigable()
581     {
582         return this.getSuperManageableEntityAssociationEnd().isNavigable();
583     }
584 
585     /**
586      * True if this association end's multiplicity is one while the other end's is many.
587      * @see AssociationEndFacade#isOne2Many()
588      */
589     public boolean isOne2Many()
590     {
591         return this.getSuperManageableEntityAssociationEnd().isOne2Many();
592     }
593 
594     /**
595      * True if this association end's and the other end's multiplicities are both one.
596      * @see AssociationEndFacade#isOne2One()
597      */
598     public boolean isOne2One()
599     {
600         return this.getSuperManageableEntityAssociationEnd().isOne2One();
601     }
602 
603     /**
604      * Indicates whether or not the association ends are ordered (if multiplicity is greater than
605      * 1).
606      * @see AssociationEndFacade#isOrdered()
607      */
608     public boolean isOrdered()
609     {
610         return this.getSuperManageableEntityAssociationEnd().isOrdered();
611     }
612 
613     /**
614      * True if the association end cannot be changed.
615      * @see AssociationEndFacade#isReadOnly()
616      */
617     public boolean isReadOnly()
618     {
619         return this.getSuperManageableEntityAssociationEnd().isReadOnly();
620     }
621 
622     /**
623      * True if this association end's multiplicity is strictly greater than zero.
624      * @see AssociationEndFacade#isRequired()
625      */
626     public boolean isRequired()
627     {
628         return this.getSuperManageableEntityAssociationEnd().isRequired();
629     }
630 
631     /**
632      * Indicates if this associationEnd is 'static', meaning it has a classifier scope.
633      * @see AssociationEndFacade#isStatic()
634      */
635     public boolean isStatic()
636     {
637         return this.getSuperManageableEntityAssociationEnd().isStatic();
638     }
639 
640     /**
641      * UML2: If the association attribute is unique within the Collection type. UML14 always returns
642      * false. Unique+Ordered determines the implementation Collection type. Default=false.
643      * @see AssociationEndFacade#isUnique()
644      */
645     public boolean isUnique()
646     {
647         return this.getSuperManageableEntityAssociationEnd().isUnique();
648     }
649 
650     /**
651      * The name of the index to create on a column that persists the foreign key attribute.
652      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getColumnIndex()
653      */
654     public String getColumnIndex()
655     {
656         return this.getSuperManageableEntityAssociationEnd().getColumnIndex();
657     }
658 
659     /**
660      * The name of the column that makes up the foreign key.
661      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getColumnName()
662      */
663     public String getColumnName()
664     {
665         return this.getSuperManageableEntityAssociationEnd().getColumnName();
666     }
667 
668     /**
669      * The name of the foreign key constraint to use for databases.
670      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getForeignKeyConstraintName()
671      */
672     public String getForeignKeyConstraintName()
673     {
674         return this.getSuperManageableEntityAssociationEnd().getForeignKeyConstraintName();
675     }
676 
677     /**
678      * The current foreign key suffix specified for this entity association end facade.
679      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getForeignKeySuffix()
680      */
681     public String getForeignKeySuffix()
682     {
683         return this.getSuperManageableEntityAssociationEnd().getForeignKeySuffix();
684     }
685 
686     /**
687      * The SQL type for this the foreign key column of this association end.
688      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getSqlType()
689      */
690     public String getSqlType()
691     {
692         return this.getSuperManageableEntityAssociationEnd().getSqlType();
693     }
694 
695     /**
696      * The name of the unique-key that this unique association end belongs
697      * @see org.andromda.metafacades.uml.EntityAssociationEnd#getUniqueGroup()
698      */
699     public String getUniqueGroup()
700     {
701         return this.getSuperManageableEntityAssociationEnd().getUniqueGroup();
702     }
703 
704     /**
705      * Indicates whether or not a foreign identifier should be used for the entity that owns this
706      * association end.  This would only make sense in the case of a child in a one-to-one
707      * parent-child association.  If this flag is true, then the identifier of this entity should
708      * also be used as the foreign key to the related parent entity.
709      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isForeignIdentifier()
710      */
711     public boolean isForeignIdentifier()
712     {
713         return this.getSuperManageableEntityAssociationEnd().isForeignIdentifier();
714     }
715 
716     /**
717      * True if this association is an identifier for its entity.
718      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isIdentifier()
719      */
720     public boolean isIdentifier()
721     {
722         return this.getSuperManageableEntityAssociationEnd().isIdentifier();
723     }
724 
725     /**
726      * True if the associationEnd is marked with identifiers stereotype, false otherwise.
727      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isIdentifiersPresent()
728      */
729     public boolean isIdentifiersPresent()
730     {
731         return this.getSuperManageableEntityAssociationEnd().isIdentifiersPresent();
732     }
733 
734     /**
735      * Indicates this association end should be ignored by the persistence layer.
736      * @see org.andromda.metafacades.uml.EntityAssociationEnd#isTransient()
737      */
738     public boolean isTransient()
739     {
740         return this.getSuperManageableEntityAssociationEnd().isTransient();
741     }
742 
743     /**
744      * Represents an attribute of an entity.
745      * @see ManageableEntityAssociationEnd#getManageableIdentifier()
746      */
747     public EntityAttribute getManageableIdentifier()
748     {
749         return this.getSuperManageableEntityAssociationEnd().getManageableIdentifier();
750     }
751 
752     /**
753      * Whether or not this association end should be displayed.
754      * @see ManageableEntityAssociationEnd#isDisplay()
755      */
756     public boolean isDisplay()
757     {
758         return this.getSuperManageableEntityAssociationEnd().isDisplay();
759     }
760 
761     /**
762      * Copies all tagged values from the given ModelElementFacade to this model element facade.
763      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
764      */
765     public void copyTaggedValues(ModelElementFacade element)
766     {
767         this.getSuperManageableEntityAssociationEnd().copyTaggedValues(element);
768     }
769 
770     /**
771      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
772      * one found will be returned.
773      * @see ModelElementFacade#findTaggedValue(String tagName)
774      */
775     public Object findTaggedValue(String tagName)
776     {
777         return this.getSuperManageableEntityAssociationEnd().findTaggedValue(tagName);
778     }
779 
780     /**
781      * Returns all the values for the tagged value with the specified name. The returned collection
782      * will contains only String instances, or will be empty. Never null.
783      * @see ModelElementFacade#findTaggedValues(String tagName)
784      */
785     public Collection<Object> findTaggedValues(String tagName)
786     {
787         return this.getSuperManageableEntityAssociationEnd().findTaggedValues(tagName);
788     }
789 
790     /**
791      * Returns the fully qualified name of the model element. The fully qualified name includes
792      * complete package qualified name of the underlying model element. The templates parameter will
793      * be replaced by the correct one given the binding relation of the parameter to this element.
794      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
795      */
796     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
797     {
798         return this.getSuperManageableEntityAssociationEnd().getBindedFullyQualifiedName(bindedElement);
799     }
800 
801     /**
802      * Gets all constraints belonging to the model element.
803      * @see ModelElementFacade#getConstraints()
804      */
805     public Collection<ConstraintFacade> getConstraints()
806     {
807         return this.getSuperManageableEntityAssociationEnd().getConstraints();
808     }
809 
810     /**
811      * Returns the constraints of the argument kind that have been placed onto this model. Typical
812      * kinds are "inv", "pre" and "post". Other kinds are possible.
813      * @see ModelElementFacade#getConstraints(String kind)
814      */
815     public Collection<ConstraintFacade> getConstraints(String kind)
816     {
817         return this.getSuperManageableEntityAssociationEnd().getConstraints(kind);
818     }
819 
820     /**
821      * Gets the documentation for the model element, The indent argument is prefixed to each line.
822      * By default this method wraps lines after 64 characters.
823      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
824      * @see ModelElementFacade#getDocumentation(String indent)
825      */
826     public String getDocumentation(String indent)
827     {
828         return this.getSuperManageableEntityAssociationEnd().getDocumentation(indent);
829     }
830 
831     /**
832      * This method returns the documentation for this model element, with the lines wrapped after
833      * the specified number of characters, values of less than 1 will indicate no line wrapping is
834      * required. By default paragraphs are returned as HTML.
835      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
836      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
837      */
838     public String getDocumentation(String indent, int lineLength)
839     {
840         return this.getSuperManageableEntityAssociationEnd().getDocumentation(indent, lineLength);
841     }
842 
843     /**
844      * This method returns the documentation for this model element, with the lines wrapped after
845      * the specified number of characters, values of less than 1 will indicate no line wrapping is
846      * required. HTML style determines if HTML Escaping is applied.
847      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
848      */
849     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
850     {
851         return this.getSuperManageableEntityAssociationEnd().getDocumentation(indent, lineLength, htmlStyle);
852     }
853 
854     /**
855      * The fully qualified name of this model element.
856      * @see ModelElementFacade#getFullyQualifiedName()
857      */
858     public String getFullyQualifiedName()
859     {
860         return this.getSuperManageableEntityAssociationEnd().getFullyQualifiedName();
861     }
862 
863     /**
864      * Returns the fully qualified name of the model element. The fully qualified name includes
865      * complete package qualified name of the underlying model element.  If modelName is true, then
866      * the original name of the model element (the name contained within the model) will be the name
867      * returned, otherwise a name from a language mapping will be returned.
868      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
869      */
870     public String getFullyQualifiedName(boolean modelName)
871     {
872         return this.getSuperManageableEntityAssociationEnd().getFullyQualifiedName(modelName);
873     }
874 
875     /**
876      * Returns the fully qualified name as a path, the returned value always starts with out a slash
877      * '/'.
878      * @see ModelElementFacade#getFullyQualifiedNamePath()
879      */
880     public String getFullyQualifiedNamePath()
881     {
882         return this.getSuperManageableEntityAssociationEnd().getFullyQualifiedNamePath();
883     }
884 
885     /**
886      * Gets the unique identifier of the underlying model element.
887      * @see ModelElementFacade#getId()
888      */
889     public String getId()
890     {
891         return this.getSuperManageableEntityAssociationEnd().getId();
892     }
893 
894     /**
895      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
896      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
897      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
898      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
899      * JDK5 compiler level.
900      * @see ModelElementFacade#getKeywords()
901      */
902     public Collection<String> getKeywords()
903     {
904         return this.getSuperManageableEntityAssociationEnd().getKeywords();
905     }
906 
907     /**
908      * UML2: Retrieves a localized label for this named element.
909      * @see ModelElementFacade#getLabel()
910      */
911     public String getLabel()
912     {
913         return this.getSuperManageableEntityAssociationEnd().getLabel();
914     }
915 
916     /**
917      * The language mappings that have been set for this model element.
918      * @see ModelElementFacade#getLanguageMappings()
919      */
920     public TypeMappings getLanguageMappings()
921     {
922         return this.getSuperManageableEntityAssociationEnd().getLanguageMappings();
923     }
924 
925     /**
926      * Return the model containing this model element (multiple models may be loaded and processed
927      * at the same time).
928      * @see ModelElementFacade#getModel()
929      */
930     public ModelFacade getModel()
931     {
932         return this.getSuperManageableEntityAssociationEnd().getModel();
933     }
934 
935     /**
936      * The name of the model element.
937      * @see ModelElementFacade#getName()
938      */
939     public String getName()
940     {
941         return this.getSuperManageableEntityAssociationEnd().getName();
942     }
943 
944     /**
945      * Gets the package to which this model element belongs.
946      * @see ModelElementFacade#getPackage()
947      */
948     public ModelElementFacade getPackage()
949     {
950         return this.getSuperManageableEntityAssociationEnd().getPackage();
951     }
952 
953     /**
954      * The name of this model element's package.
955      * @see ModelElementFacade#getPackageName()
956      */
957     public String getPackageName()
958     {
959         return this.getSuperManageableEntityAssociationEnd().getPackageName();
960     }
961 
962     /**
963      * Gets the package name (optionally providing the ability to retrieve the model name and not
964      * the mapped name).
965      * @see ModelElementFacade#getPackageName(boolean modelName)
966      */
967     public String getPackageName(boolean modelName)
968     {
969         return this.getSuperManageableEntityAssociationEnd().getPackageName(modelName);
970     }
971 
972     /**
973      * Returns the package as a path, the returned value always starts with out a slash '/'.
974      * @see ModelElementFacade#getPackagePath()
975      */
976     public String getPackagePath()
977     {
978         return this.getSuperManageableEntityAssociationEnd().getPackagePath();
979     }
980 
981     /**
982      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
983      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
984      * the names of the containing namespaces starting at the root of the hierarchy and ending with
985      * the name of the NamedElement itself.
986      * @see ModelElementFacade#getQualifiedName()
987      */
988     public String getQualifiedName()
989     {
990         return this.getSuperManageableEntityAssociationEnd().getQualifiedName();
991     }
992 
993     /**
994      * Gets the root package for the model element.
995      * @see ModelElementFacade#getRootPackage()
996      */
997     public PackageFacade getRootPackage()
998     {
999         return this.getSuperManageableEntityAssociationEnd().getRootPackage();
1000     }
1001 
1002     /**
1003      * Gets the dependencies for which this model element is the source.
1004      * @see ModelElementFacade#getSourceDependencies()
1005      */
1006     public Collection<DependencyFacade> getSourceDependencies()
1007     {
1008         return this.getSuperManageableEntityAssociationEnd().getSourceDependencies();
1009     }
1010 
1011     /**
1012      * If this model element is the context of an activity graph, this represents that activity
1013      * graph.
1014      * @see ModelElementFacade#getStateMachineContext()
1015      */
1016     public StateMachineFacade getStateMachineContext()
1017     {
1018         return this.getSuperManageableEntityAssociationEnd().getStateMachineContext();
1019     }
1020 
1021     /**
1022      * The collection of ALL stereotype names for this model element.
1023      * @see ModelElementFacade#getStereotypeNames()
1024      */
1025     public Collection<String> getStereotypeNames()
1026     {
1027         return this.getSuperManageableEntityAssociationEnd().getStereotypeNames();
1028     }
1029 
1030     /**
1031      * Gets all stereotypes for this model element.
1032      * @see ModelElementFacade#getStereotypes()
1033      */
1034     public Collection<StereotypeFacade> getStereotypes()
1035     {
1036         return this.getSuperManageableEntityAssociationEnd().getStereotypes();
1037     }
1038 
1039     /**
1040      * Return the TaggedValues associated with this model element, under all stereotypes.
1041      * @see ModelElementFacade#getTaggedValues()
1042      */
1043     public Collection<TaggedValueFacade> getTaggedValues()
1044     {
1045         return this.getSuperManageableEntityAssociationEnd().getTaggedValues();
1046     }
1047 
1048     /**
1049      * Gets the dependencies for which this model element is the target.
1050      * @see ModelElementFacade#getTargetDependencies()
1051      */
1052     public Collection<DependencyFacade> getTargetDependencies()
1053     {
1054         return this.getSuperManageableEntityAssociationEnd().getTargetDependencies();
1055     }
1056 
1057     /**
1058      * Get the template parameter for this model element having the parameterName
1059      * @see ModelElementFacade#getTemplateParameter(String parameterName)
1060      */
1061     public Object getTemplateParameter(String parameterName)
1062     {
1063         return this.getSuperManageableEntityAssociationEnd().getTemplateParameter(parameterName);
1064     }
1065 
1066     /**
1067      * Get the template parameters for this model element
1068      * @see ModelElementFacade#getTemplateParameters()
1069      */
1070     public Collection<TemplateParameterFacade> getTemplateParameters()
1071     {
1072         return this.getSuperManageableEntityAssociationEnd().getTemplateParameters();
1073     }
1074 
1075     /**
1076      * The visibility (i.e. public, private, protected or package) of the model element, will
1077      * attempt a lookup for these values in the language mappings (if any).
1078      * @see ModelElementFacade#getVisibility()
1079      */
1080     public String getVisibility()
1081     {
1082         return this.getSuperManageableEntityAssociationEnd().getVisibility();
1083     }
1084 
1085     /**
1086      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1087      * is taken into account when searching for the stereotype), false otherwise.
1088      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1089      */
1090     public boolean hasExactStereotype(String stereotypeName)
1091     {
1092         return this.getSuperManageableEntityAssociationEnd().hasExactStereotype(stereotypeName);
1093     }
1094 
1095     /**
1096      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1097      * pipe, semicolon, or << >>
1098      * @see ModelElementFacade#hasKeyword(String keywordName)
1099      */
1100     public boolean hasKeyword(String keywordName)
1101     {
1102         return this.getSuperManageableEntityAssociationEnd().hasKeyword(keywordName);
1103     }
1104 
1105     /**
1106      * Returns true if the model element has the specified stereotype.  If the stereotype itself
1107      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1108      * one of the stereotype's ancestors has a matching name this method will return true, false
1109      * otherwise.
1110      * For example, if we have a certain stereotype called <<exception>> and a model element has a
1111      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1112      * method with 'stereotypeName' defined as 'exception' the method would return true since
1113      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
1114      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1115      * @see ModelElementFacade#hasStereotype(String stereotypeName)
1116      */
1117     public boolean hasStereotype(String stereotypeName)
1118     {
1119         return this.getSuperManageableEntityAssociationEnd().hasStereotype(stereotypeName);
1120     }
1121 
1122     /**
1123      * True if there are target dependencies from this element that are instances of BindingFacade.
1124      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1125      * @see ModelElementFacade#isBindingDependenciesPresent()
1126      */
1127     public boolean isBindingDependenciesPresent()
1128     {
1129         return this.getSuperManageableEntityAssociationEnd().isBindingDependenciesPresent();
1130     }
1131 
1132     /**
1133      * Indicates if any constraints are present on this model element.
1134      * @see ModelElementFacade#isConstraintsPresent()
1135      */
1136     public boolean isConstraintsPresent()
1137     {
1138         return this.getSuperManageableEntityAssociationEnd().isConstraintsPresent();
1139     }
1140 
1141     /**
1142      * Indicates if any documentation is present on this model element.
1143      * @see ModelElementFacade#isDocumentationPresent()
1144      */
1145     public boolean isDocumentationPresent()
1146     {
1147         return this.getSuperManageableEntityAssociationEnd().isDocumentationPresent();
1148     }
1149 
1150     /**
1151      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1152      * @see ModelElementFacade#isReservedWord()
1153      */
1154     public boolean isReservedWord()
1155     {
1156         return this.getSuperManageableEntityAssociationEnd().isReservedWord();
1157     }
1158 
1159     /**
1160      * True is there are template parameters on this model element. For UML2, applies to Class,
1161      * Operation, Property, and Parameter.
1162      * @see ModelElementFacade#isTemplateParametersPresent()
1163      */
1164     public boolean isTemplateParametersPresent()
1165     {
1166         return this.getSuperManageableEntityAssociationEnd().isTemplateParametersPresent();
1167     }
1168 
1169     /**
1170      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1171      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1172      * Enumerations and Interfaces, optionally applies on other model elements.
1173      * @see ModelElementFacade#isValidIdentifierName()
1174      */
1175     public boolean isValidIdentifierName()
1176     {
1177         return this.getSuperManageableEntityAssociationEnd().isValidIdentifierName();
1178     }
1179 
1180     /**
1181      * Searches for the constraint with the specified 'name' on this model element, and if found
1182      * translates it using the specified 'translation' from a translation library discovered by the
1183      * framework.
1184      * @see ModelElementFacade#translateConstraint(String name, String translation)
1185      */
1186     public String translateConstraint(String name, String translation)
1187     {
1188         return this.getSuperManageableEntityAssociationEnd().translateConstraint(name, translation);
1189     }
1190 
1191     /**
1192      * Translates all constraints belonging to this model element with the given 'translation'.
1193      * @see ModelElementFacade#translateConstraints(String translation)
1194      */
1195     public String[] translateConstraints(String translation)
1196     {
1197         return this.getSuperManageableEntityAssociationEnd().translateConstraints(translation);
1198     }
1199 
1200     /**
1201      * Translates the constraints of the specified 'kind' belonging to this model element.
1202      * @see ModelElementFacade#translateConstraints(String kind, String translation)
1203      */
1204     public String[] translateConstraints(String kind, String translation)
1205     {
1206         return this.getSuperManageableEntityAssociationEnd().translateConstraints(kind, translation);
1207     }
1208 
1209     /**
1210      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1211      */
1212     @Override
1213     public void initialize()
1214     {
1215         this.getSuperManageableEntityAssociationEnd().initialize();
1216     }
1217 
1218     /**
1219      * @return Object getSuperManageableEntityAssociationEnd().getValidationOwner()
1220      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1221      */
1222     @Override
1223     public Object getValidationOwner()
1224     {
1225         Object owner = this.getSuperManageableEntityAssociationEnd().getValidationOwner();
1226         return owner;
1227     }
1228 
1229     /**
1230      * @return String getSuperManageableEntityAssociationEnd().getValidationName()
1231      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1232      */
1233     @Override
1234     public String getValidationName()
1235     {
1236         String name = this.getSuperManageableEntityAssociationEnd().getValidationName();
1237         return name;
1238     }
1239 
1240     /**
1241      * @param validationMessages Collection<ModelValidationMessage>
1242      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1243      */
1244     @Override
1245     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1246     {
1247         this.getSuperManageableEntityAssociationEnd().validateInvariants(validationMessages);
1248     }
1249 
1250     /**
1251      * The property that stores the name of the metafacade.
1252      */
1253     private static final String NAME_PROPERTY = "name";
1254     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1255 
1256     /**
1257      * @see Object#toString()
1258      */
1259     @Override
1260     public String toString()
1261     {
1262         final StringBuilder toString = new StringBuilder(this.getClass().getName());
1263         toString.append("[");
1264         try
1265         {
1266             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1267         }
1268         catch (final Throwable tryAgain)
1269         {
1270             try
1271             {
1272                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1273             }
1274             catch (final Throwable ignore)
1275             {
1276                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1277             }
1278         }
1279         toString.append("]");
1280         return toString.toString();
1281     }
1282 }