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