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