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