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