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