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.AttributeFacade;
15  import org.andromda.metafacades.uml.ClassifierFacade;
16  import org.andromda.metafacades.uml.ConstraintFacade;
17  import org.andromda.metafacades.uml.DependencyFacade;
18  import org.andromda.metafacades.uml.Entity;
19  import org.andromda.metafacades.uml.EntityAssociationEnd;
20  import org.andromda.metafacades.uml.EntityQueryOperation;
21  import org.andromda.metafacades.uml.GeneralizableElementFacade;
22  import org.andromda.metafacades.uml.GeneralizationFacade;
23  import org.andromda.metafacades.uml.ModelElementFacade;
24  import org.andromda.metafacades.uml.ModelFacade;
25  import org.andromda.metafacades.uml.OperationFacade;
26  import org.andromda.metafacades.uml.PackageFacade;
27  import org.andromda.metafacades.uml.StateMachineFacade;
28  import org.andromda.metafacades.uml.StereotypeFacade;
29  import org.andromda.metafacades.uml.TaggedValueFacade;
30  import org.andromda.metafacades.uml.TemplateParameterFacade;
31  import org.andromda.metafacades.uml.TypeMappings;
32  
33  /**
34   * Represents an entity EJB.
35   * MetafacadeLogic for EJBEntityFacade
36   *
37   * @see EJBEntityFacade
38   */
39  public abstract class EJBEntityFacadeLogic
40      extends MetafacadeBase
41      implements EJBEntityFacade
42  {
43      /**
44       * The underlying UML object
45       * @see Object
46       */
47      protected Object metaObject;
48  
49      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
50       * @param metaObjectIn
51       * @param context
52       */
53      protected EJBEntityFacadeLogic(Object metaObjectIn, String context)
54      {
55          super(metaObjectIn, getContext(context));
56          this.superEntity =
57             (Entity)
58              MetafacadeFactory.getInstance().createFacadeImpl(
59                      "org.andromda.metafacades.uml.Entity",
60                      metaObjectIn,
61                      getContext(context));
62          this.metaObject = metaObjectIn;
63      }
64  
65      /**
66       * Gets the context for this metafacade logic instance.
67       * @param context String. Set to EJBEntityFacade if null
68       * @return context String
69       */
70      private static String getContext(String context)
71      {
72          if (context == null)
73          {
74              context = "org.andromda.cartridges.ejb.metafacades.EJBEntityFacade";
75          }
76          return context;
77      }
78  
79      private Entity superEntity;
80      private boolean superEntityInitialized = false;
81  
82      /**
83       * Gets the Entity parent instance.
84       * @return this.superEntity Entity
85       */
86      private Entity getSuperEntity()
87      {
88          if (!this.superEntityInitialized)
89          {
90              ((MetafacadeBase)this.superEntity).setMetafacadeContext(this.getMetafacadeContext());
91              this.superEntityInitialized = true;
92          }
93          return this.superEntity;
94      }
95  
96      /** Reset context only for non-root metafacades
97       * @param context
98       * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
99       */
100     @Override
101     public void resetMetafacadeContext(String context)
102     {
103         if (!this.contextRoot) // reset context only for non-root metafacades
104         {
105             context = getContext(context);  // to have same value as in original constructor call
106             setMetafacadeContext (context);
107             if (this.superEntityInitialized)
108             {
109                 ((MetafacadeBase)this.superEntity).resetMetafacadeContext(context);
110             }
111         }
112     }
113 
114     /**
115      * @return boolean true always
116      * @see EJBEntityFacade
117      */
118     public boolean isEJBEntityFacadeMetaType()
119     {
120         return true;
121     }
122 
123     // --------------- attributes ---------------------
124 
125    /**
126     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#isSyntheticCreateMethodAllowed()
127     * @return boolean
128     */
129     protected abstract boolean handleIsSyntheticCreateMethodAllowed();
130 
131     private boolean __syntheticCreateMethodAllowed1a;
132     private boolean __syntheticCreateMethodAllowed1aSet = false;
133 
134     /**
135      * Whether or not to allow a synthetic (auto generated) create method.
136      * @return (boolean)handleIsSyntheticCreateMethodAllowed()
137      */
138     public final boolean isSyntheticCreateMethodAllowed()
139     {
140         boolean syntheticCreateMethodAllowed1a = this.__syntheticCreateMethodAllowed1a;
141         if (!this.__syntheticCreateMethodAllowed1aSet)
142         {
143             // syntheticCreateMethodAllowed has no pre constraints
144             syntheticCreateMethodAllowed1a = handleIsSyntheticCreateMethodAllowed();
145             // syntheticCreateMethodAllowed has no post constraints
146             this.__syntheticCreateMethodAllowed1a = syntheticCreateMethodAllowed1a;
147             if (isMetafacadePropertyCachingEnabled())
148             {
149                 this.__syntheticCreateMethodAllowed1aSet = true;
150             }
151         }
152         return syntheticCreateMethodAllowed1a;
153     }
154 
155    /**
156     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getAllEntityRelations()
157     * @return Collection
158     */
159     protected abstract Collection handleGetAllEntityRelations();
160 
161     private Collection __allEntityRelations2a;
162     private boolean __allEntityRelations2aSet = false;
163 
164     /**
165      * Find all associations that define relations to other entities.
166      * This method returns the source association ends for all associations that define
167      * a container managed relation.  The returned collection includes both
168      * direct relations and inherited relations. A direct relation is an association with some other
169      * class matching the following criteria: 1) The class at the other side of the association is
170      * stereotyped <<Entity>> 2) The association is navigable from to the other side.
171      * An inherited relation is an association from an abstract super type matching the following
172      * criteria: 1) The inheritance path to this abstract super type, including this super type
173      * itself, consists only of abstract classes with stereotype <<Entity>> 2)  The class at the
174      * other side of the association is stereotyped <<Entity>>. 3) The association is navigable from
175      * this abstract super type to the other side.
176      * Relations must match the following integrity constraint:
177      * - The <<Entity>> at the target end is not abstract.
178      * The integrity constraint is necessary because the target of a container managed relation in
179      * the EJB framework must be a concrete entity bean; there is no such thing as an
180      * "abstract entity bean" in the EJB specification. It is possible, however, to generate and
181      * compile code for this case, an error will only show up at deploy time. In order to catch
182      * this kind of error at the earliest possible stage, this method checks the integrity
183      * constraint and throws an exception if it is violated.
184      * @return (Collection)handleGetAllEntityRelations()
185      */
186     public final Collection getAllEntityRelations()
187     {
188         Collection allEntityRelations2a = this.__allEntityRelations2a;
189         if (!this.__allEntityRelations2aSet)
190         {
191             // allEntityRelations has no pre constraints
192             allEntityRelations2a = handleGetAllEntityRelations();
193             // allEntityRelations has no post constraints
194             this.__allEntityRelations2a = allEntityRelations2a;
195             if (isMetafacadePropertyCachingEnabled())
196             {
197                 this.__allEntityRelations2aSet = true;
198             }
199         }
200         return allEntityRelations2a;
201     }
202 
203    /**
204     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getJndiName()
205     * @return String
206     */
207     protected abstract String handleGetJndiName();
208 
209     private String __jndiName3a;
210     private boolean __jndiName3aSet = false;
211 
212     /**
213      * TODO: Model Documentation for
214      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.jndiName
215      * @return (String)handleGetJndiName()
216      */
217     public final String getJndiName()
218     {
219         String jndiName3a = this.__jndiName3a;
220         if (!this.__jndiName3aSet)
221         {
222             // jndiName has no pre constraints
223             jndiName3a = handleGetJndiName();
224             // jndiName has no post constraints
225             this.__jndiName3a = jndiName3a;
226             if (isMetafacadePropertyCachingEnabled())
227             {
228                 this.__jndiName3aSet = true;
229             }
230         }
231         return jndiName3a;
232     }
233 
234    /**
235     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getViewType()
236     * @return String
237     */
238     protected abstract String handleGetViewType();
239 
240     private String __viewType4a;
241     private boolean __viewType4aSet = false;
242 
243     /**
244      * A string indicating whether the Bean is a local or remotely accessable bean.
245      * @return (String)handleGetViewType()
246      */
247     public final String getViewType()
248     {
249         String viewType4a = this.__viewType4a;
250         if (!this.__viewType4aSet)
251         {
252             // viewType has no pre constraints
253             viewType4a = handleGetViewType();
254             // viewType has no post constraints
255             this.__viewType4a = viewType4a;
256             if (isMetafacadePropertyCachingEnabled())
257             {
258                 this.__viewType4aSet = true;
259             }
260         }
261         return viewType4a;
262     }
263 
264    /**
265     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getAllInstanceAttributes()
266     * @return List
267     */
268     protected abstract List handleGetAllInstanceAttributes();
269 
270     private List __allInstanceAttributes5a;
271     private boolean __allInstanceAttributes5aSet = false;
272 
273     /**
274      * All instanceAttributes for this entity. The list includes the instanceAttributes that are
275      * inherited from super classes. The list contains the inherited instanceAttributes first,
276      * followed by the instanceAttributes defined in this class.
277      * @return (List)handleGetAllInstanceAttributes()
278      */
279     public final List getAllInstanceAttributes()
280     {
281         List allInstanceAttributes5a = this.__allInstanceAttributes5a;
282         if (!this.__allInstanceAttributes5aSet)
283         {
284             // allInstanceAttributes has no pre constraints
285             allInstanceAttributes5a = handleGetAllInstanceAttributes();
286             // allInstanceAttributes has no post constraints
287             this.__allInstanceAttributes5a = allInstanceAttributes5a;
288             if (isMetafacadePropertyCachingEnabled())
289             {
290                 this.__allInstanceAttributes5aSet = true;
291             }
292         }
293         return allInstanceAttributes5a;
294     }
295 
296    /**
297     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getInheritedInstanceAttributes()
298     * @return List
299     */
300     protected abstract List handleGetInheritedInstanceAttributes();
301 
302     private List __inheritedInstanceAttributes6a;
303     private boolean __inheritedInstanceAttributes6aSet = false;
304 
305     /**
306      * All inherited instanceAttributes this class.  The instanceAttributes are grouped by the class
307      * that defines the instanceAttributes, with instanceAttributes from the most removed super
308      * class first.
309      * @return (List)handleGetInheritedInstanceAttributes()
310      */
311     public final List getInheritedInstanceAttributes()
312     {
313         List inheritedInstanceAttributes6a = this.__inheritedInstanceAttributes6a;
314         if (!this.__inheritedInstanceAttributes6aSet)
315         {
316             // inheritedInstanceAttributes has no pre constraints
317             inheritedInstanceAttributes6a = handleGetInheritedInstanceAttributes();
318             // inheritedInstanceAttributes has no post constraints
319             this.__inheritedInstanceAttributes6a = inheritedInstanceAttributes6a;
320             if (isMetafacadePropertyCachingEnabled())
321             {
322                 this.__inheritedInstanceAttributes6aSet = true;
323             }
324         }
325         return inheritedInstanceAttributes6a;
326     }
327 
328    /**
329     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getHomeInterfaceName()
330     * @return String
331     */
332     protected abstract String handleGetHomeInterfaceName();
333 
334     private String __homeInterfaceName7a;
335     private boolean __homeInterfaceName7aSet = false;
336 
337     /**
338      * A String representing the name of a home interface for this entity EJB.
339      * @return (String)handleGetHomeInterfaceName()
340      */
341     public final String getHomeInterfaceName()
342     {
343         String homeInterfaceName7a = this.__homeInterfaceName7a;
344         if (!this.__homeInterfaceName7aSet)
345         {
346             // homeInterfaceName has no pre constraints
347             homeInterfaceName7a = handleGetHomeInterfaceName();
348             // homeInterfaceName has no post constraints
349             this.__homeInterfaceName7a = homeInterfaceName7a;
350             if (isMetafacadePropertyCachingEnabled())
351             {
352                 this.__homeInterfaceName7aSet = true;
353             }
354         }
355         return homeInterfaceName7a;
356     }
357 
358    /**
359     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getValueDependencies()
360     * @return Collection
361     */
362     protected abstract Collection handleGetValueDependencies();
363 
364     private Collection __valueDependencies8a;
365     private boolean __valueDependencies8aSet = false;
366 
367     /**
368      * TODO: Model Documentation for
369      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.valueDependencies
370      * @return (Collection)handleGetValueDependencies()
371      */
372     public final Collection getValueDependencies()
373     {
374         Collection valueDependencies8a = this.__valueDependencies8a;
375         if (!this.__valueDependencies8aSet)
376         {
377             // valueDependencies has no pre constraints
378             valueDependencies8a = handleGetValueDependencies();
379             // valueDependencies has no post constraints
380             this.__valueDependencies8a = valueDependencies8a;
381             if (isMetafacadePropertyCachingEnabled())
382             {
383                 this.__valueDependencies8aSet = true;
384             }
385         }
386         return valueDependencies8a;
387     }
388 
389    /**
390     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getEntityRelations()
391     * @return Collection
392     */
393     protected abstract Collection handleGetEntityRelations();
394 
395     private Collection __entityRelations9a;
396     private boolean __entityRelations9aSet = false;
397 
398     /**
399      * TODO: Model Documentation for
400      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.entityRelations
401      * @return (Collection)handleGetEntityRelations()
402      */
403     public final Collection getEntityRelations()
404     {
405         Collection entityRelations9a = this.__entityRelations9a;
406         if (!this.__entityRelations9aSet)
407         {
408             // entityRelations has no pre constraints
409             entityRelations9a = handleGetEntityRelations();
410             // entityRelations has no post constraints
411             this.__entityRelations9a = entityRelations9a;
412             if (isMetafacadePropertyCachingEnabled())
413             {
414                 this.__entityRelations9aSet = true;
415             }
416         }
417         return entityRelations9a;
418     }
419 
420    /**
421     * @see org.andromda.cartridges.ejb.metafacades.EJBEntityFacade#getTransactionType()
422     * @return String
423     */
424     protected abstract String handleGetTransactionType();
425 
426     private String __transactionType10a;
427     private boolean __transactionType10aSet = false;
428 
429     /**
430      * Gets the transaction type for this entity (i.e. REQUIRED, etc)
431      * @return (String)handleGetTransactionType()
432      */
433     public final String getTransactionType()
434     {
435         String transactionType10a = this.__transactionType10a;
436         if (!this.__transactionType10aSet)
437         {
438             // transactionType has no pre constraints
439             transactionType10a = handleGetTransactionType();
440             // transactionType has no post constraints
441             this.__transactionType10a = transactionType10a;
442             if (isMetafacadePropertyCachingEnabled())
443             {
444                 this.__transactionType10aSet = true;
445             }
446         }
447         return transactionType10a;
448     }
449 
450     // ---------------- business methods ----------------------
451 
452     /**
453      * Method to be implemented in descendants
454      * Gets create methods for the entity.  If 'follow'l is set to true, create methods from any
455      * super types will also be retrieved by following up the inheritance chain.
456      * @param follow
457      * @return Collection
458      */
459     protected abstract Collection handleGetCreateMethods(boolean follow);
460 
461     /**
462      * Gets create methods for the entity.  If 'follow'l is set to true, create methods from any
463      * super types will also be retrieved by following up the inheritance chain.
464      * @param follow boolean
465      * If true, all create methods will be returned from the inheritance hierarchy, false otherwise.
466      * @return handleGetCreateMethods(follow)
467      */
468     public Collection getCreateMethods(boolean follow)
469     {
470         // getCreateMethods has no pre constraints
471         Collection returnValue = handleGetCreateMethods(follow);
472         // getCreateMethods has no post constraints
473         return returnValue;
474     }
475 
476     /**
477      * Method to be implemented in descendants
478      * Gets select methods for the entity, if all is set to 'true' then ALL select methods will be
479      * retrieved (including those inherited from any superclasses).
480      * @param follow
481      * @return Collection
482      */
483     protected abstract Collection handleGetSelectMethods(boolean follow);
484 
485     /**
486      * Gets select methods for the entity, if all is set to 'true' then ALL select methods will be
487      * retrieved (including those inherited from any superclasses).
488      * @param follow boolean
489      * If set to true, then all select methods including those in its superclass will be retrieved.
490      * @return handleGetSelectMethods(follow)
491      */
492     public Collection getSelectMethods(boolean follow)
493     {
494         // getSelectMethods has no pre constraints
495         Collection returnValue = handleGetSelectMethods(follow);
496         // getSelectMethods has no post constraints
497         return returnValue;
498     }
499 
500     /**
501      * Method to be implemented in descendants
502      * Gets all env-entries for the specified entity EJB. Env-entries are stored as static
503      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
504      * inheritance hierachy will be followed and we'll retrieve all env-entries from any super types
505      * as well.
506      * @param follow
507      * @return Collection
508      */
509     protected abstract Collection handleGetEnvironmentEntries(boolean follow);
510 
511     /**
512      * Gets all env-entries for the specified entity EJB. Env-entries are stored as static
513      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
514      * inheritance hierachy will be followed and we'll retrieve all env-entries from any super types
515      * as well.
516      * @param follow boolean
517      * If true, then the inheritance hierachy will be followed and we'll retrieve all env-entries
518      * from any super types as well.
519      * @return handleGetEnvironmentEntries(follow)
520      */
521     public Collection getEnvironmentEntries(boolean follow)
522     {
523         // getEnvironmentEntries has no pre constraints
524         Collection returnValue = handleGetEnvironmentEntries(follow);
525         // getEnvironmentEntries has no post constraints
526         return returnValue;
527     }
528 
529     /**
530      * Method to be implemented in descendants
531      * Gets all constants for this entity. Constants are defined as static read-only attributes
532      * which do NOT have the <<EnvEntry>> stereotype.   If 'follow' is true, then the inheritance
533      * hierachy will be followed and we'll retrieve all constants from any super types as well.
534      * @param follow
535      * @return Collection
536      */
537     protected abstract Collection handleGetConstants(boolean follow);
538 
539     /**
540      * Gets all constants for this entity. Constants are defined as static read-only attributes
541      * which do NOT have the <<EnvEntry>> stereotype.   If 'follow' is true, then the inheritance
542      * hierachy will be followed and we'll retrieve all constants from any super types as well.
543      * @param follow boolean
544      * If true, then the inheritance hierachy will be followed and we'll retrieve all constants from
545      * any super types as well.
546      * @return handleGetConstants(follow)
547      */
548     public Collection getConstants(boolean follow)
549     {
550         // getConstants has no pre constraints
551         Collection returnValue = handleGetConstants(follow);
552         // getConstants has no post constraints
553         return returnValue;
554     }
555 
556     /**
557      * Method to be implemented in descendants
558      * TODO: Model Documentation for
559      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isOperationPresent
560      * @param op
561      * @return boolean
562      */
563     protected abstract boolean handleIsOperationPresent(String op);
564 
565     /**
566      * TODO: Model Documentation for
567      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isOperationPresent
568      * @param op String
569      * TODO: Model Documentation for
570      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isOperationPresent(op)
571      * @return handleIsOperationPresent(op)
572      */
573     public boolean isOperationPresent(String op)
574     {
575         // isOperationPresent has no pre constraints
576         boolean returnValue = handleIsOperationPresent(op);
577         // isOperationPresent has no post constraints
578         return returnValue;
579     }
580 
581     /**
582      * Method to be implemented in descendants
583      * TODO: Model Documentation for
584      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isAttributePresent
585      * @param att
586      * @return boolean
587      */
588     protected abstract boolean handleIsAttributePresent(String att);
589 
590     /**
591      * TODO: Model Documentation for
592      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isAttributePresent
593      * @param att String
594      * TODO: Model Documentation for
595      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isAttributePresent(att)
596      * @return handleIsAttributePresent(att)
597      */
598     public boolean isAttributePresent(String att)
599     {
600         // isAttributePresent has no pre constraints
601         boolean returnValue = handleIsAttributePresent(att);
602         // isAttributePresent has no post constraints
603         return returnValue;
604     }
605 
606     /**
607      * Method to be implemented in descendants
608      * TODO: Model Documentation for
609      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isIdentifierPresent
610      * @param id
611      * @return boolean
612      */
613     protected abstract boolean handleIsIdentifierPresent(String id);
614 
615     /**
616      * TODO: Model Documentation for
617      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isIdentifierPresent
618      * @param id String
619      * TODO: Model Documentation for
620      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.isIdentifierPresent(id)
621      * @return handleIsIdentifierPresent(id)
622      */
623     public boolean isIdentifierPresent(String id)
624     {
625         // isIdentifierPresent has no pre constraints
626         boolean returnValue = handleIsIdentifierPresent(id);
627         // isIdentifierPresent has no post constraints
628         return returnValue;
629     }
630 
631     /**
632      * Method to be implemented in descendants
633      * TODO: Model Documentation for
634      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.getSqlType
635      * @return String
636      */
637     protected abstract String handleGetSqlType();
638 
639     /**
640      * TODO: Model Documentation for
641      * org.andromda.cartridges.ejb.metafacades.EJBEntityFacade.getSqlType
642      * @return handleGetSqlType()
643      */
644     public String getSqlType()
645     {
646         // getSqlType has no pre constraints
647         String returnValue = handleGetSqlType();
648         // getSqlType has no post constraints
649         return returnValue;
650     }
651 
652     /**
653      * @return true
654      * @see Entity
655      */
656     public boolean isEntityMetaType()
657     {
658         return true;
659     }
660 
661     /**
662      * @return true
663      * @see ClassifierFacade
664      */
665     public boolean isClassifierFacadeMetaType()
666     {
667         return true;
668     }
669 
670     /**
671      * @return true
672      * @see GeneralizableElementFacade
673      */
674     public boolean isGeneralizableElementFacadeMetaType()
675     {
676         return true;
677     }
678 
679     /**
680      * @return true
681      * @see ModelElementFacade
682      */
683     public boolean isModelElementFacadeMetaType()
684     {
685         return true;
686     }
687 
688     // ----------- delegates to Entity ------------
689     /**
690      * Return the attribute which name matches the parameter
691      * @see ClassifierFacade#findAttribute(String name)
692      */
693     public AttributeFacade findAttribute(String name)
694     {
695         return this.getSuperEntity().findAttribute(name);
696     }
697 
698     /**
699      * Those abstraction dependencies for which this classifier is the client.
700      * @see ClassifierFacade#getAbstractions()
701      */
702     public Collection<ClassifierFacade> getAbstractions()
703     {
704         return this.getSuperEntity().getAbstractions();
705     }
706 
707     /**
708      * Lists all classes associated to this one and any ancestor classes (through generalization).
709      * There will be no duplicates. The order of the elements is predictable.
710      * @see ClassifierFacade#getAllAssociatedClasses()
711      */
712     public Collection<ClassifierFacade> getAllAssociatedClasses()
713     {
714         return this.getSuperEntity().getAllAssociatedClasses();
715     }
716 
717     /**
718      * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
719      * any attributes and navigable connecting association ends.
720      * @see ClassifierFacade#getAllProperties()
721      */
722     public Collection<ModelElementFacade> getAllProperties()
723     {
724         return this.getSuperEntity().getAllProperties();
725     }
726 
727     /**
728      * A collection containing all required and/or read-only 'properties' of the classifier and its
729      * ancestors. Properties are any attributes and navigable connecting association ends.
730      * @see ClassifierFacade#getAllRequiredConstructorParameters()
731      */
732     public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
733     {
734         return this.getSuperEntity().getAllRequiredConstructorParameters();
735     }
736 
737     /**
738      * Gets the array type for this classifier.  If this classifier already represents an array, it
739      * just returns itself.
740      * @see ClassifierFacade#getArray()
741      */
742     public ClassifierFacade getArray()
743     {
744         return this.getSuperEntity().getArray();
745     }
746 
747     /**
748      * The name of the classifier as an array.
749      * @see ClassifierFacade#getArrayName()
750      */
751     public String getArrayName()
752     {
753         return this.getSuperEntity().getArrayName();
754     }
755 
756     /**
757      * Lists the classes associated to this one, there is no repitition of classes. The order of the
758      * elements is predictable.
759      * @see ClassifierFacade#getAssociatedClasses()
760      */
761     public Collection<ClassifierFacade> getAssociatedClasses()
762     {
763         return this.getSuperEntity().getAssociatedClasses();
764     }
765 
766     /**
767      * Gets the association ends belonging to a classifier.
768      * @see ClassifierFacade#getAssociationEnds()
769      */
770     public List<AssociationEndFacade> getAssociationEnds()
771     {
772         return this.getSuperEntity().getAssociationEnds();
773     }
774 
775     /**
776      * Gets the attributes that belong to the classifier.
777      * @see ClassifierFacade#getAttributes()
778      */
779     public List<AttributeFacade> getAttributes()
780     {
781         return this.getSuperEntity().getAttributes();
782     }
783 
784     /**
785      * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
786      * hierarchy and gets the attributes from the super classes as well.
787      * @see ClassifierFacade#getAttributes(boolean follow)
788      */
789     public List<AttributeFacade> getAttributes(boolean follow)
790     {
791         return this.getSuperEntity().getAttributes(follow);
792     }
793 
794     /**
795      * The fully qualified name of the classifier as an array.
796      * @see ClassifierFacade#getFullyQualifiedArrayName()
797      */
798     public String getFullyQualifiedArrayName()
799     {
800         return this.getSuperEntity().getFullyQualifiedArrayName();
801     }
802 
803     /**
804      * Returns all those operations that could be implemented at this classifier's level. This means
805      * the operations owned by this classifier as well as any realized interface's operations
806      * (recursively) in case this classifier itself is not already an interface, or generalized when
807      * this classifier is an interface.
808      * @see ClassifierFacade#getImplementationOperations()
809      */
810     public Collection<OperationFacade> getImplementationOperations()
811     {
812         return this.getSuperEntity().getImplementationOperations();
813     }
814 
815     /**
816      * A comma separated list of the fully qualified names of all implemented interfaces.
817      * @see ClassifierFacade#getImplementedInterfaceList()
818      */
819     public String getImplementedInterfaceList()
820     {
821         return this.getSuperEntity().getImplementedInterfaceList();
822     }
823 
824     /**
825      * Those attributes that are scoped to an instance of this class.
826      * @see ClassifierFacade#getInstanceAttributes()
827      */
828     public Collection<AttributeFacade> getInstanceAttributes()
829     {
830         return this.getSuperEntity().getInstanceAttributes();
831     }
832 
833     /**
834      * Those operations that are scoped to an instance of this class.
835      * @see ClassifierFacade#getInstanceOperations()
836      */
837     public List<OperationFacade> getInstanceOperations()
838     {
839         return this.getSuperEntity().getInstanceOperations();
840     }
841 
842     /**
843      * Those interfaces that are abstractions of this classifier, this basically means this
844      * classifier realizes them.
845      * @see ClassifierFacade#getInterfaceAbstractions()
846      */
847     public Collection<ClassifierFacade> getInterfaceAbstractions()
848     {
849         return this.getSuperEntity().getInterfaceAbstractions();
850     }
851 
852     /**
853      * A String representing a new Constructor declaration for this classifier type to be used in a
854      * Java environment.
855      * @see ClassifierFacade#getJavaNewString()
856      */
857     public String getJavaNewString()
858     {
859         return this.getSuperEntity().getJavaNewString();
860     }
861 
862     /**
863      * A String representing the null-value for this classifier type to be used in a Java
864      * environment.
865      * @see ClassifierFacade#getJavaNullString()
866      */
867     public String getJavaNullString()
868     {
869         return this.getSuperEntity().getJavaNullString();
870     }
871 
872     /**
873      * The other ends of this classifier's association ends which are navigable.
874      * @see ClassifierFacade#getNavigableConnectingEnds()
875      */
876     public Collection<AssociationEndFacade> getNavigableConnectingEnds()
877     {
878         return this.getSuperEntity().getNavigableConnectingEnds();
879     }
880 
881     /**
882      * Get the other ends of this classifier's association ends which are navigable and if 'follow'
883      * is true goes up the inheritance hierarchy and gets the super association ends as well.
884      * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
885      */
886     public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
887     {
888         return this.getSuperEntity().getNavigableConnectingEnds(follow);
889     }
890 
891     /**
892      * Assuming that the classifier is an array, this will return the non array type of the
893      * classifier from
894      * the model.  If the classifier is NOT an array, it will just return itself.
895      * @see ClassifierFacade#getNonArray()
896      */
897     public ClassifierFacade getNonArray()
898     {
899         return this.getSuperEntity().getNonArray();
900     }
901 
902     /**
903      * The attributes from this classifier in the form of an operation call (this example would be
904      * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
905      * classifier, the result would be an empty '()'.
906      * @see ClassifierFacade#getOperationCallFromAttributes()
907      */
908     public String getOperationCallFromAttributes()
909     {
910         return this.getSuperEntity().getOperationCallFromAttributes();
911     }
912 
913     /**
914      * The operations owned by this classifier.
915      * @see ClassifierFacade#getOperations()
916      */
917     public List<OperationFacade> getOperations()
918     {
919         return this.getSuperEntity().getOperations();
920     }
921 
922     /**
923      * A collection containing all 'properties' of the classifier.  Properties are any attributes
924      * and navigable connecting association ends.
925      * @see ClassifierFacade#getProperties()
926      */
927     public List<ModelElementFacade> getProperties()
928     {
929         return this.getSuperEntity().getProperties();
930     }
931 
932     /**
933      * Gets all properties (attributes and navigable association ends) for the classifier and if
934      * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
935      * classes as well.
936      * @see ClassifierFacade#getProperties(boolean follow)
937      */
938     public List getProperties(boolean follow)
939     {
940         return this.getSuperEntity().getProperties(follow);
941     }
942 
943     /**
944      * A collection containing all required and/or read-only 'properties' of the classifier. 
945      * Properties are any attributes and navigable connecting association ends.
946      * @see ClassifierFacade#getRequiredConstructorParameters()
947      */
948     public Collection<ModelElementFacade> getRequiredConstructorParameters()
949     {
950         return this.getSuperEntity().getRequiredConstructorParameters();
951     }
952 
953     /**
954      * Returns the serial version UID of the underlying model element.
955      * @see ClassifierFacade#getSerialVersionUID()
956      */
957     public long getSerialVersionUID()
958     {
959         return this.getSuperEntity().getSerialVersionUID();
960     }
961 
962     /**
963      * Those attributes that are scoped to the definition of this class.
964      * @see ClassifierFacade#getStaticAttributes()
965      */
966     public Collection<AttributeFacade> getStaticAttributes()
967     {
968         return this.getSuperEntity().getStaticAttributes();
969     }
970 
971     /**
972      * Those operations that are scoped to the definition of this class.
973      * @see ClassifierFacade#getStaticOperations()
974      */
975     public List<OperationFacade> getStaticOperations()
976     {
977         return this.getSuperEntity().getStaticOperations();
978     }
979 
980     /**
981      * This class' superclass, returns the generalization if it is a ClassifierFacade, null
982      * otherwise.
983      * @see ClassifierFacade#getSuperClass()
984      */
985     public ClassifierFacade getSuperClass()
986     {
987         return this.getSuperEntity().getSuperClass();
988     }
989 
990     /**
991      * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
992      * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
993      * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
994      * 'wrapperMappingsUri', this property must point to the location of the mappings file which
995      * maps the primitives to wrapper types.
996      * @see ClassifierFacade#getWrapperName()
997      */
998     public String getWrapperName()
999     {
1000         return this.getSuperEntity().getWrapperName();
1001     }
1002 
1003     /**
1004      * Indicates if this classifier is 'abstract'.
1005      * @see ClassifierFacade#isAbstract()
1006      */
1007     public boolean isAbstract()
1008     {
1009         return this.getSuperEntity().isAbstract();
1010     }
1011 
1012     /**
1013      * True if this classifier represents an array type. False otherwise.
1014      * @see ClassifierFacade#isArrayType()
1015      */
1016     public boolean isArrayType()
1017     {
1018         return this.getSuperEntity().isArrayType();
1019     }
1020 
1021     /**
1022      * True if the ClassifierFacade is an AssociationClass.
1023      * @see ClassifierFacade#isAssociationClass()
1024      */
1025     public boolean isAssociationClass()
1026     {
1027         return this.getSuperEntity().isAssociationClass();
1028     }
1029 
1030     /**
1031      * Returns true if this type represents a Blob type.
1032      * @see ClassifierFacade#isBlobType()
1033      */
1034     public boolean isBlobType()
1035     {
1036         return this.getSuperEntity().isBlobType();
1037     }
1038 
1039     /**
1040      * Indicates if this type represents a boolean type or not.
1041      * @see ClassifierFacade#isBooleanType()
1042      */
1043     public boolean isBooleanType()
1044     {
1045         return this.getSuperEntity().isBooleanType();
1046     }
1047 
1048     /**
1049      * Indicates if this type represents a char, Character, or java.lang.Character type or not.
1050      * @see ClassifierFacade#isCharacterType()
1051      */
1052     public boolean isCharacterType()
1053     {
1054         return this.getSuperEntity().isCharacterType();
1055     }
1056 
1057     /**
1058      * Returns true if this type represents a Clob type.
1059      * @see ClassifierFacade#isClobType()
1060      */
1061     public boolean isClobType()
1062     {
1063         return this.getSuperEntity().isClobType();
1064     }
1065 
1066     /**
1067      * True if this classifier represents a collection type. False otherwise.
1068      * @see ClassifierFacade#isCollectionType()
1069      */
1070     public boolean isCollectionType()
1071     {
1072         return this.getSuperEntity().isCollectionType();
1073     }
1074 
1075     /**
1076      * True/false depending on whether or not this classifier represents a datatype. A data type is
1077      * a type whose instances are identified only by their value. A data type may contain attributes
1078      * to support the modeling of structured data types.
1079      * @see ClassifierFacade#isDataType()
1080      */
1081     public boolean isDataType()
1082     {
1083         return this.getSuperEntity().isDataType();
1084     }
1085 
1086     /**
1087      * True when this classifier is a date type.
1088      * @see ClassifierFacade#isDateType()
1089      */
1090     public boolean isDateType()
1091     {
1092         return this.getSuperEntity().isDateType();
1093     }
1094 
1095     /**
1096      * Indicates if this type represents a Double type or not.
1097      * @see ClassifierFacade#isDoubleType()
1098      */
1099     public boolean isDoubleType()
1100     {
1101         return this.getSuperEntity().isDoubleType();
1102     }
1103 
1104     /**
1105      * Indicates whether or not this classifier represents an "EmbeddedValue'.
1106      * @see ClassifierFacade#isEmbeddedValue()
1107      */
1108     public boolean isEmbeddedValue()
1109     {
1110         return this.getSuperEntity().isEmbeddedValue();
1111     }
1112 
1113     /**
1114      * True if this classifier is in fact marked as an enumeration.
1115      * @see ClassifierFacade#isEnumeration()
1116      */
1117     public boolean isEnumeration()
1118     {
1119         return this.getSuperEntity().isEnumeration();
1120     }
1121 
1122     /**
1123      * Returns true if this type represents a 'file' type.
1124      * @see ClassifierFacade#isFileType()
1125      */
1126     public boolean isFileType()
1127     {
1128         return this.getSuperEntity().isFileType();
1129     }
1130 
1131     /**
1132      * Indicates if this type represents a Float type or not.
1133      * @see ClassifierFacade#isFloatType()
1134      */
1135     public boolean isFloatType()
1136     {
1137         return this.getSuperEntity().isFloatType();
1138     }
1139 
1140     /**
1141      * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
1142      * @see ClassifierFacade#isIntegerType()
1143      */
1144     public boolean isIntegerType()
1145     {
1146         return this.getSuperEntity().isIntegerType();
1147     }
1148 
1149     /**
1150      * True/false depending on whether or not this Classifier represents an interface.
1151      * @see ClassifierFacade#isInterface()
1152      */
1153     public boolean isInterface()
1154     {
1155         return this.getSuperEntity().isInterface();
1156     }
1157 
1158     /**
1159      * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
1160      * @see ClassifierFacade#isLeaf()
1161      */
1162     public boolean isLeaf()
1163     {
1164         return this.getSuperEntity().isLeaf();
1165     }
1166 
1167     /**
1168      * True if this classifier represents a list type. False otherwise.
1169      * @see ClassifierFacade#isListType()
1170      */
1171     public boolean isListType()
1172     {
1173         return this.getSuperEntity().isListType();
1174     }
1175 
1176     /**
1177      * Indicates if this type represents a Long type or not.
1178      * @see ClassifierFacade#isLongType()
1179      */
1180     public boolean isLongType()
1181     {
1182         return this.getSuperEntity().isLongType();
1183     }
1184 
1185     /**
1186      * Indicates whether or not this classifier represents a Map type.
1187      * @see ClassifierFacade#isMapType()
1188      */
1189     public boolean isMapType()
1190     {
1191         return this.getSuperEntity().isMapType();
1192     }
1193 
1194     /**
1195      * Indicates whether or not this classifier represents a primitive type.
1196      * @see ClassifierFacade#isPrimitive()
1197      */
1198     public boolean isPrimitive()
1199     {
1200         return this.getSuperEntity().isPrimitive();
1201     }
1202 
1203     /**
1204      * True if this classifier represents a set type. False otherwise.
1205      * @see ClassifierFacade#isSetType()
1206      */
1207     public boolean isSetType()
1208     {
1209         return this.getSuperEntity().isSetType();
1210     }
1211 
1212     /**
1213      * Indicates whether or not this classifier represents a string type.
1214      * @see ClassifierFacade#isStringType()
1215      */
1216     public boolean isStringType()
1217     {
1218         return this.getSuperEntity().isStringType();
1219     }
1220 
1221     /**
1222      * Indicates whether or not this classifier represents a time type.
1223      * @see ClassifierFacade#isTimeType()
1224      */
1225     public boolean isTimeType()
1226     {
1227         return this.getSuperEntity().isTimeType();
1228     }
1229 
1230     /**
1231      * Returns true if this type is a wrapped primitive type.
1232      * @see ClassifierFacade#isWrappedPrimitive()
1233      */
1234     public boolean isWrappedPrimitive()
1235     {
1236         return this.getSuperEntity().isWrappedPrimitive();
1237     }
1238 
1239     /**
1240      * Returns a collection of all entities this entity and its ancestors have a relation to.
1241      * @see Entity#getAllEntityReferences()
1242      */
1243     public Collection<DependencyFacade> getAllEntityReferences()
1244     {
1245         return this.getSuperEntity().getAllEntityReferences();
1246     }
1247 
1248     /**
1249      * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
1250      * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
1251      * is true, will include identifiers.
1252      * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers)
1253      */
1254     public String getAttributeNameList(boolean follow, boolean withIdentifiers)
1255     {
1256         return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers);
1257     }
1258 
1259     /**
1260      * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
1261      * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
1262      * is true, will include identifiers  and  if 'withDerived' is set to true, will include derived
1263      * attributes.
1264      * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
1265      */
1266     public String getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
1267     {
1268         return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers, withDerived);
1269     }
1270 
1271     /**
1272      * Gets a comma separated list of attribute types.  If 'follow' is true, will travel up the
1273      * inheritance hierarchy to include attributes in parent entities as well.  If 'withIdentifiers'
1274      * is true, will include identifiers.
1275      * @see Entity#getAttributeTypeList(boolean follow, boolean withIdentifiers)
1276      */
1277     public String getAttributeTypeList(boolean follow, boolean withIdentifiers)
1278     {
1279         return this.getSuperEntity().getAttributeTypeList(follow, withIdentifiers);
1280     }
1281 
1282     /**
1283      * Gets all attributes of the entity, and optionally retieves the super entities attributes as
1284      * well as excludes the entity's identifiers if 'withIdentifiers' is set to false.
1285      * @see Entity#getAttributes(boolean follow, boolean withIdentifiers)
1286      */
1287     public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers)
1288     {
1289         return this.getSuperEntity().getAttributes(follow, withIdentifiers);
1290     }
1291 
1292     /**
1293      * Gets all attributes of the entity, and optionally retieves the super entities attributes as
1294      * well as excludes the entity's identifiers if 'withIdentifiers' is set to false and exclude
1295      * derived attributes if 'withDerived' is set to false.
1296      * @see Entity#getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
1297      */
1298     public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
1299     {
1300         return this.getSuperEntity().getAttributes(follow, withIdentifiers, withDerived);
1301     }
1302 
1303     /**
1304      * All business operations of the entity, these include any operations that aren't queries.
1305      * @see Entity#getBusinessOperations()
1306      */
1307     public Collection<OperationFacade> getBusinessOperations()
1308     {
1309         return this.getSuperEntity().getBusinessOperations();
1310     }
1311 
1312     /**
1313      * Gets any children association ends (i.e. entity association ends that are participants in an
1314      * association with this entity and this entity has composite aggregation defined for those
1315      * associations).
1316      * @see Entity#getChildEnds()
1317      */
1318     public Collection<EntityAssociationEnd> getChildEnds()
1319     {
1320         return this.getSuperEntity().getChildEnds();
1321     }
1322 
1323     /**
1324      * The embedded values belonging to this entity.
1325      * @see Entity#getEmbeddedValues()
1326      */
1327     public Collection<AttributeFacade> getEmbeddedValues()
1328     {
1329         return this.getSuperEntity().getEmbeddedValues();
1330     }
1331 
1332     /**
1333      * All entities referenced by this entity.
1334      * @see Entity#getEntityReferences()
1335      */
1336     public Collection<DependencyFacade> getEntityReferences()
1337     {
1338         return this.getSuperEntity().getEntityReferences();
1339     }
1340 
1341     /**
1342      * The full name of the type of the identifier. If composite identifier add the PK sufix to the
1343      * class name. If not, retorns the fully qualified name of the identifier.
1344      * @see Entity#getFullyQualifiedIdentifierTypeName()
1345      */
1346     public String getFullyQualifiedIdentifierTypeName()
1347     {
1348         return this.getSuperEntity().getFullyQualifiedIdentifierTypeName();
1349     }
1350 
1351     /**
1352      * Gets all the associationEnds of this entity marked with the identifiers stereotype.
1353      * @see Entity#getIdentifierAssociationEnds()
1354      */
1355     public Collection<AssociationEndFacade> getIdentifierAssociationEnds()
1356     {
1357         return this.getSuperEntity().getIdentifierAssociationEnds();
1358     }
1359 
1360     /**
1361      * The getter name of the identifier.
1362      * @see Entity#getIdentifierGetterName()
1363      */
1364     public String getIdentifierGetterName()
1365     {
1366         return this.getSuperEntity().getIdentifierGetterName();
1367     }
1368 
1369     /**
1370      * The name of the identifier. If composite identifier add the Pk suffix. If not composite
1371      * returns the attribute name of the identifier.
1372      * @see Entity#getIdentifierName()
1373      */
1374     public String getIdentifierName()
1375     {
1376         return this.getSuperEntity().getIdentifierName();
1377     }
1378 
1379     /**
1380      * The setter name of the identifier.
1381      * @see Entity#getIdentifierSetterName()
1382      */
1383     public String getIdentifierSetterName()
1384     {
1385         return this.getSuperEntity().getIdentifierSetterName();
1386     }
1387 
1388     /**
1389      * The name of the type of the identifier. If composite identifier add the PK suffix to the
1390      * class name. If not, returns the name of the identifier.
1391      * @see Entity#getIdentifierTypeName()
1392      */
1393     public String getIdentifierTypeName()
1394     {
1395         return this.getSuperEntity().getIdentifierTypeName();
1396     }
1397 
1398     /**
1399      * All the attributes of the entity which make up its identifier (primary key).  Will search any
1400      * super classes as well.  If no identifiers exist, a default identifier will be created if the
1401      * allowDefaultIdentifiers property is set to true.
1402      * @see Entity#getIdentifiers()
1403      */
1404     public Collection<ModelElementFacade> getIdentifiers()
1405     {
1406         return this.getSuperEntity().getIdentifiers();
1407     }
1408 
1409     /**
1410      * Gets all identifiers for an entity. If 'follow' is true, and if no identifiers can be found
1411      * on the entity, a search up the inheritance chain will be performed, and the identifiers from
1412      * the first super class having them will be used.   If no identifiers exist, a default
1413      * identifier will be created if the allowDefaultIdentifiers property is set to true.
1414      * Identifiers can be on attributes or associations (composite primary key).
1415      * @see Entity#getIdentifiers(boolean follow)
1416      */
1417     public Collection<ModelElementFacade> getIdentifiers(boolean follow)
1418     {
1419         return this.getSuperEntity().getIdentifiers(follow);
1420     }
1421 
1422     /**
1423      * The maximum length a SQL name may be.
1424      * @see Entity#getMaxSqlNameLength()
1425      */
1426     public short getMaxSqlNameLength()
1427     {
1428         return this.getSuperEntity().getMaxSqlNameLength();
1429     }
1430 
1431     /**
1432      * Gets the attributes as a list within an operation call, optionally including the type names
1433      * and the identifier attributes.
1434      * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers)
1435      */
1436     public String getOperationCallFromAttributes(boolean withIdentifiers)
1437     {
1438         return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers);
1439     }
1440 
1441     /**
1442      * Gets the attributes as a list within an operation call.  If 'withTypeNames' is true, it will
1443      * include the type names, if 'withIdentifiers' is true it will include the identifiers.  If
1444      * 'follow' is true it will follow the inheritance hierarchy and get the attributes of the super
1445      * class as well.
1446      * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
1447      */
1448     public String getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
1449     {
1450         return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers, follow);
1451     }
1452 
1453     /**
1454      * Returns the parent association end of this entity if its a child entity.  The parent is the
1455      * entity that is the participant the association that has composite aggregation defined.  Will
1456      * return null if the entity has no parent.
1457      * @see Entity#getParentEnd()
1458      */
1459     public EntityAssociationEnd getParentEnd()
1460     {
1461         return this.getSuperEntity().getParentEnd();
1462     }
1463 
1464     /**
1465      * Gets all properties of this entity, this includes the attributes and navigable association
1466      * ends of the entity.  The 'follow' flag indcates whether or not the inheritance hierarchy
1467      * should be followed when getting all the properties.  The 'withIdentifiers' flag indicates
1468      * whether or not identifiers should be included in the collection of properties.
1469      * @see Entity#getProperties(boolean follow, boolean withIdentifiers)
1470      */
1471     public Collection<ModelElementFacade> getProperties(boolean follow, boolean withIdentifiers)
1472     {
1473         return this.getSuperEntity().getProperties(follow, withIdentifiers);
1474     }
1475 
1476     /**
1477      * Returns all the operations that can perform queries on the entity.
1478      * @see Entity#getQueryOperations()
1479      */
1480     public Collection<EntityQueryOperation> getQueryOperations()
1481     {
1482         return this.getSuperEntity().getQueryOperations();
1483     }
1484 
1485     /**
1486      * Gets all query operations for an entity. If 'follow' is true, and if no query operations can
1487      * be found on the entity, a search up the inheritance chain will be performed, and the
1488      * identifiers from the first super class having them will be used.   If no identifiers exist, a
1489      * default identifier will be created if the allowDefaultIdentifiers property is set to true.
1490      * @see Entity#getQueryOperations(boolean follow)
1491      */
1492     public Collection<OperationFacade> getQueryOperations(boolean follow)
1493     {
1494         return this.getSuperEntity().getQueryOperations(follow);
1495     }
1496 
1497     /**
1498      * Gets a comma separated list of required attribute names.  If 'follow' is true, will travel up
1499      * the inheritance hierarchy to include attributes in parent entities as well.  If
1500      * 'withIdentifiers' is true, will include identifiers.
1501      * @see Entity#getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
1502      */
1503     public String getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
1504     {
1505         return this.getSuperEntity().getRequiredAttributeNameList(follow, withIdentifiers);
1506     }
1507 
1508     /**
1509      * Gets a comma separated list of attribute types with are required.  If 'follow' is true, will
1510      * travel up the inheritance hierarchy to include attributes in parent entities as well.  If
1511      * 'withIdentifiers' is true, will include identifiers.
1512      * @see Entity#getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
1513      */
1514     public String getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
1515     {
1516         return this.getSuperEntity().getRequiredAttributeTypeList(follow, withIdentifiers);
1517     }
1518 
1519     /**
1520      * Returns all attributes that are specified as 'required' in the model.  If 'follow' is true,
1521      * then required attributes in super classes will also be returned, if false, just the ones
1522      * directly on the entity will be returned.  If 'withIdentifiers' is true, the identifiers will
1523      * be include, if false, no identifiers will be included.
1524      * @see Entity#getRequiredAttributes(boolean follow, boolean withIdentifiers)
1525      */
1526     public Collection<AttributeFacade> getRequiredAttributes(boolean follow, boolean withIdentifiers)
1527     {
1528         return this.getSuperEntity().getRequiredAttributes(follow, withIdentifiers);
1529     }
1530 
1531     /**
1532      * Gets all required properties for this entity.  These consist of any required attributes as
1533      * well as navigable associations that are marked as 'required'.  If 'follow' is true, then the
1534      * inheritance hierchy will be followed and all required properties from super classes will be
1535      * included as well.
1536      * If 'withIdentifiers' is true, the identifiers will be include, if false, no identifiers will
1537      * be included.
1538      * @see Entity#getRequiredProperties(boolean follow, boolean withIdentifiers)
1539      */
1540     public Collection<ModelElementFacade> getRequiredProperties(boolean follow, boolean withIdentifiers)
1541     {
1542         return this.getSuperEntity().getRequiredProperties(follow, withIdentifiers);
1543     }
1544 
1545     /**
1546      * Creates a comma separated list of the required property names.
1547      * @see Entity#getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
1548      */
1549     public String getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
1550     {
1551         return this.getSuperEntity().getRequiredPropertyNameList(follow, withIdentifiers);
1552     }
1553 
1554     /**
1555      * A comma separated list of the required property types.
1556      * @see Entity#getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
1557      */
1558     public String getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
1559     {
1560         return this.getSuperEntity().getRequiredPropertyTypeList(follow, withIdentifiers);
1561     }
1562 
1563     /**
1564      * The name of the schema that contains the database table
1565      * @see Entity#getSchema()
1566      */
1567     public String getSchema()
1568     {
1569         return this.getSuperEntity().getSchema();
1570     }
1571 
1572     /**
1573      * The name of the database table to which this entity is persisted.
1574      * @see Entity#getTableName()
1575      */
1576     public String getTableName()
1577     {
1578         return this.getSuperEntity().getTableName();
1579     }
1580 
1581     /**
1582      * Returns true/false depending on whether or not this entity represetns a child in an
1583      * association (this occurs when this entity is on the opposite end of an assocation end defined
1584      * as composite).
1585      * @see Entity#isChild()
1586      */
1587     public boolean isChild()
1588     {
1589         return this.getSuperEntity().isChild();
1590     }
1591 
1592     /**
1593      * True if this entity identifier is a composite (consists of multiple key columns, typically
1594      * abstracted into an external composite identifier class)
1595      * @see Entity#isCompositeIdentifier()
1596      */
1597     public boolean isCompositeIdentifier()
1598     {
1599         return this.getSuperEntity().isCompositeIdentifier();
1600     }
1601 
1602     /**
1603      * True if the entity has its identifiers dynamically added, false otherwise.
1604      * @see Entity#isDynamicIdentifiersPresent()
1605      */
1606     public boolean isDynamicIdentifiersPresent()
1607     {
1608         return this.getSuperEntity().isDynamicIdentifiersPresent();
1609     }
1610 
1611     /**
1612      * True if the entity has any identifiers defined, false otherwise.
1613      * @see Entity#isIdentifiersPresent()
1614      */
1615     public boolean isIdentifiersPresent()
1616     {
1617         return this.getSuperEntity().isIdentifiersPresent();
1618     }
1619 
1620     /**
1621      * Indiciates if this entity is using an assigned identifier or not.
1622      * @see Entity#isUsingAssignedIdentifier()
1623      */
1624     public boolean isUsingAssignedIdentifier()
1625     {
1626         return this.getSuperEntity().isUsingAssignedIdentifier();
1627     }
1628 
1629     /**
1630      * Indicates whether or not this entity is using a foreign identifier as its identifiers.  That
1631      * is: the foreignIdentifier flag was set on an incoming association end and the entity is
1632      * therefore using the related foreign parent entity's identifier.
1633      * @see Entity#isUsingForeignIdentifier()
1634      */
1635     public boolean isUsingForeignIdentifier()
1636     {
1637         return this.getSuperEntity().isUsingForeignIdentifier();
1638     }
1639 
1640     /**
1641      * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
1642      * to true.
1643      * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
1644      */
1645     public Object findTaggedValue(String tagName, boolean follow)
1646     {
1647         return this.getSuperEntity().findTaggedValue(tagName, follow);
1648     }
1649 
1650     /**
1651      * All generalizations for this generalizable element, goes up the inheritance tree.
1652      * @see GeneralizableElementFacade#getAllGeneralizations()
1653      */
1654     public Collection<GeneralizableElementFacade> getAllGeneralizations()
1655     {
1656         return this.getSuperEntity().getAllGeneralizations();
1657     }
1658 
1659     /**
1660      * All specializations (travels down the inheritance hierarchy).
1661      * @see GeneralizableElementFacade#getAllSpecializations()
1662      */
1663     public Collection<GeneralizableElementFacade> getAllSpecializations()
1664     {
1665         return this.getSuperEntity().getAllSpecializations();
1666     }
1667 
1668     /**
1669      * Gets the direct generalization for this generalizable element.
1670      * @see GeneralizableElementFacade#getGeneralization()
1671      */
1672     public GeneralizableElementFacade getGeneralization()
1673     {
1674         return this.getSuperEntity().getGeneralization();
1675     }
1676 
1677     /**
1678      * Gets the actual links that this generalization element is part of (it plays either the
1679      * specialization or generalization).
1680      * @see GeneralizableElementFacade#getGeneralizationLinks()
1681      */
1682     public Collection<GeneralizationFacade> getGeneralizationLinks()
1683     {
1684         return this.getSuperEntity().getGeneralizationLinks();
1685     }
1686 
1687     /**
1688      * A comma separated list of the fully qualified names of all generalizations.
1689      * @see GeneralizableElementFacade#getGeneralizationList()
1690      */
1691     public String getGeneralizationList()
1692     {
1693         return this.getSuperEntity().getGeneralizationList();
1694     }
1695 
1696     /**
1697      * The element found when you recursively follow the generalization path up to the root. If an
1698      * element has no generalization itself will be considered the root.
1699      * @see GeneralizableElementFacade#getGeneralizationRoot()
1700      */
1701     public GeneralizableElementFacade getGeneralizationRoot()
1702     {
1703         return this.getSuperEntity().getGeneralizationRoot();
1704     }
1705 
1706     /**
1707      * Return all generalizations (ancestors) from this generalizable element.
1708      * @see GeneralizableElementFacade#getGeneralizations()
1709      */
1710     public Collection<GeneralizableElementFacade> getGeneralizations()
1711     {
1712         return this.getSuperEntity().getGeneralizations();
1713     }
1714 
1715     /**
1716      * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
1717      * @see GeneralizableElementFacade#getSpecializations()
1718      */
1719     public Collection<GeneralizableElementFacade> getSpecializations()
1720     {
1721         return this.getSuperEntity().getSpecializations();
1722     }
1723 
1724     /**
1725      * Copies all tagged values from the given ModelElementFacade to this model element facade.
1726      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
1727      */
1728     public void copyTaggedValues(ModelElementFacade element)
1729     {
1730         this.getSuperEntity().copyTaggedValues(element);
1731     }
1732 
1733     /**
1734      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
1735      * one found will be returned.
1736      * @see ModelElementFacade#findTaggedValue(String tagName)
1737      */
1738     public Object findTaggedValue(String tagName)
1739     {
1740         return this.getSuperEntity().findTaggedValue(tagName);
1741     }
1742 
1743     /**
1744      * Returns all the values for the tagged value with the specified name. The returned collection
1745      * will contains only String instances, or will be empty. Never null.
1746      * @see ModelElementFacade#findTaggedValues(String tagName)
1747      */
1748     public Collection<Object> findTaggedValues(String tagName)
1749     {
1750         return this.getSuperEntity().findTaggedValues(tagName);
1751     }
1752 
1753     /**
1754      * Returns the fully qualified name of the model element. The fully qualified name includes
1755      * complete package qualified name of the underlying model element. The templates parameter will
1756      * be replaced by the correct one given the binding relation of the parameter to this element.
1757      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1758      */
1759     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1760     {
1761         return this.getSuperEntity().getBindedFullyQualifiedName(bindedElement);
1762     }
1763 
1764     /**
1765      * Gets all constraints belonging to the model element.
1766      * @see ModelElementFacade#getConstraints()
1767      */
1768     public Collection<ConstraintFacade> getConstraints()
1769     {
1770         return this.getSuperEntity().getConstraints();
1771     }
1772 
1773     /**
1774      * Returns the constraints of the argument kind that have been placed onto this model. Typical
1775      * kinds are "inv", "pre" and "post". Other kinds are possible.
1776      * @see ModelElementFacade#getConstraints(String kind)
1777      */
1778     public Collection<ConstraintFacade> getConstraints(String kind)
1779     {
1780         return this.getSuperEntity().getConstraints(kind);
1781     }
1782 
1783     /**
1784      * Gets the documentation for the model element, The indent argument is prefixed to each line.
1785      * By default this method wraps lines after 64 characters.
1786      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
1787      * @see ModelElementFacade#getDocumentation(String indent)
1788      */
1789     public String getDocumentation(String indent)
1790     {
1791         return this.getSuperEntity().getDocumentation(indent);
1792     }
1793 
1794     /**
1795      * This method returns the documentation for this model element, with the lines wrapped after
1796      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1797      * required. By default paragraphs are returned as HTML.
1798      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
1799      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
1800      */
1801     public String getDocumentation(String indent, int lineLength)
1802     {
1803         return this.getSuperEntity().getDocumentation(indent, lineLength);
1804     }
1805 
1806     /**
1807      * This method returns the documentation for this model element, with the lines wrapped after
1808      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1809      * required. HTML style determines if HTML Escaping is applied.
1810      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1811      */
1812     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1813     {
1814         return this.getSuperEntity().getDocumentation(indent, lineLength, htmlStyle);
1815     }
1816 
1817     /**
1818      * The fully qualified name of this model element.
1819      * @see ModelElementFacade#getFullyQualifiedName()
1820      */
1821     public String getFullyQualifiedName()
1822     {
1823         return this.getSuperEntity().getFullyQualifiedName();
1824     }
1825 
1826     /**
1827      * Returns the fully qualified name of the model element. The fully qualified name includes
1828      * complete package qualified name of the underlying model element.  If modelName is true, then
1829      * the original name of the model element (the name contained within the model) will be the name
1830      * returned, otherwise a name from a language mapping will be returned.
1831      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1832      */
1833     public String getFullyQualifiedName(boolean modelName)
1834     {
1835         return this.getSuperEntity().getFullyQualifiedName(modelName);
1836     }
1837 
1838     /**
1839      * Returns the fully qualified name as a path, the returned value always starts with out a slash
1840      * '/'.
1841      * @see ModelElementFacade#getFullyQualifiedNamePath()
1842      */
1843     public String getFullyQualifiedNamePath()
1844     {
1845         return this.getSuperEntity().getFullyQualifiedNamePath();
1846     }
1847 
1848     /**
1849      * Gets the unique identifier of the underlying model element.
1850      * @see ModelElementFacade#getId()
1851      */
1852     public String getId()
1853     {
1854         return this.getSuperEntity().getId();
1855     }
1856 
1857     /**
1858      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1859      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1860      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1861      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1862      * JDK5 compiler level.
1863      * @see ModelElementFacade#getKeywords()
1864      */
1865     public Collection<String> getKeywords()
1866     {
1867         return this.getSuperEntity().getKeywords();
1868     }
1869 
1870     /**
1871      * UML2: Retrieves a localized label for this named element.
1872      * @see ModelElementFacade#getLabel()
1873      */
1874     public String getLabel()
1875     {
1876         return this.getSuperEntity().getLabel();
1877     }
1878 
1879     /**
1880      * The language mappings that have been set for this model element.
1881      * @see ModelElementFacade#getLanguageMappings()
1882      */
1883     public TypeMappings getLanguageMappings()
1884     {
1885         return this.getSuperEntity().getLanguageMappings();
1886     }
1887 
1888     /**
1889      * Return the model containing this model element (multiple models may be loaded and processed
1890      * at the same time).
1891      * @see ModelElementFacade#getModel()
1892      */
1893     public ModelFacade getModel()
1894     {
1895         return this.getSuperEntity().getModel();
1896     }
1897 
1898     /**
1899      * The name of the model element.
1900      * @see ModelElementFacade#getName()
1901      */
1902     public String getName()
1903     {
1904         return this.getSuperEntity().getName();
1905     }
1906 
1907     /**
1908      * Gets the package to which this model element belongs.
1909      * @see ModelElementFacade#getPackage()
1910      */
1911     public ModelElementFacade getPackage()
1912     {
1913         return this.getSuperEntity().getPackage();
1914     }
1915 
1916     /**
1917      * The name of this model element's package.
1918      * @see ModelElementFacade#getPackageName()
1919      */
1920     public String getPackageName()
1921     {
1922         return this.getSuperEntity().getPackageName();
1923     }
1924 
1925     /**
1926      * Gets the package name (optionally providing the ability to retrieve the model name and not
1927      * the mapped name).
1928      * @see ModelElementFacade#getPackageName(boolean modelName)
1929      */
1930     public String getPackageName(boolean modelName)
1931     {
1932         return this.getSuperEntity().getPackageName(modelName);
1933     }
1934 
1935     /**
1936      * Returns the package as a path, the returned value always starts with out a slash '/'.
1937      * @see ModelElementFacade#getPackagePath()
1938      */
1939     public String getPackagePath()
1940     {
1941         return this.getSuperEntity().getPackagePath();
1942     }
1943 
1944     /**
1945      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1946      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1947      * the names of the containing namespaces starting at the root of the hierarchy and ending with
1948      * the name of the NamedElement itself.
1949      * @see ModelElementFacade#getQualifiedName()
1950      */
1951     public String getQualifiedName()
1952     {
1953         return this.getSuperEntity().getQualifiedName();
1954     }
1955 
1956     /**
1957      * Gets the root package for the model element.
1958      * @see ModelElementFacade#getRootPackage()
1959      */
1960     public PackageFacade getRootPackage()
1961     {
1962         return this.getSuperEntity().getRootPackage();
1963     }
1964 
1965     /**
1966      * Gets the dependencies for which this model element is the source.
1967      * @see ModelElementFacade#getSourceDependencies()
1968      */
1969     public Collection<DependencyFacade> getSourceDependencies()
1970     {
1971         return this.getSuperEntity().getSourceDependencies();
1972     }
1973 
1974     /**
1975      * If this model element is the context of an activity graph, this represents that activity
1976      * graph.
1977      * @see ModelElementFacade#getStateMachineContext()
1978      */
1979     public StateMachineFacade getStateMachineContext()
1980     {
1981         return this.getSuperEntity().getStateMachineContext();
1982     }
1983 
1984     /**
1985      * The collection of ALL stereotype names for this model element.
1986      * @see ModelElementFacade#getStereotypeNames()
1987      */
1988     public Collection<String> getStereotypeNames()
1989     {
1990         return this.getSuperEntity().getStereotypeNames();
1991     }
1992 
1993     /**
1994      * Gets all stereotypes for this model element.
1995      * @see ModelElementFacade#getStereotypes()
1996      */
1997     public Collection<StereotypeFacade> getStereotypes()
1998     {
1999         return this.getSuperEntity().getStereotypes();
2000     }
2001 
2002     /**
2003      * Return the TaggedValues associated with this model element, under all stereotypes.
2004      * @see ModelElementFacade#getTaggedValues()
2005      */
2006     public Collection<TaggedValueFacade> getTaggedValues()
2007     {
2008         return this.getSuperEntity().getTaggedValues();
2009     }
2010 
2011     /**
2012      * Gets the dependencies for which this model element is the target.
2013      * @see ModelElementFacade#getTargetDependencies()
2014      */
2015     public Collection<DependencyFacade> getTargetDependencies()
2016     {
2017         return this.getSuperEntity().getTargetDependencies();
2018     }
2019 
2020     /**
2021      * Get the template parameter for this model element having the parameterName
2022      * @see ModelElementFacade#getTemplateParameter(String parameterName)
2023      */
2024     public Object getTemplateParameter(String parameterName)
2025     {
2026         return this.getSuperEntity().getTemplateParameter(parameterName);
2027     }
2028 
2029     /**
2030      * Get the template parameters for this model element
2031      * @see ModelElementFacade#getTemplateParameters()
2032      */
2033     public Collection<TemplateParameterFacade> getTemplateParameters()
2034     {
2035         return this.getSuperEntity().getTemplateParameters();
2036     }
2037 
2038     /**
2039      * The visibility (i.e. public, private, protected or package) of the model element, will
2040      * attempt a lookup for these values in the language mappings (if any).
2041      * @see ModelElementFacade#getVisibility()
2042      */
2043     public String getVisibility()
2044     {
2045         return this.getSuperEntity().getVisibility();
2046     }
2047 
2048     /**
2049      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
2050      * is taken into account when searching for the stereotype), false otherwise.
2051      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
2052      */
2053     public boolean hasExactStereotype(String stereotypeName)
2054     {
2055         return this.getSuperEntity().hasExactStereotype(stereotypeName);
2056     }
2057 
2058     /**
2059      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
2060      * pipe, semicolon, or << >>
2061      * @see ModelElementFacade#hasKeyword(String keywordName)
2062      */
2063     public boolean hasKeyword(String keywordName)
2064     {
2065         return this.getSuperEntity().hasKeyword(keywordName);
2066     }
2067 
2068     /**
2069      * Returns true if the model element has the specified stereotype.  If the stereotype itself
2070      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
2071      * one of the stereotype's ancestors has a matching name this method will return true, false
2072      * otherwise.
2073      * For example, if we have a certain stereotype called <<exception>> and a model element has a
2074      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
2075      * method with 'stereotypeName' defined as 'exception' the method would return true since
2076      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
2077      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
2078      * @see ModelElementFacade#hasStereotype(String stereotypeName)
2079      */
2080     public boolean hasStereotype(String stereotypeName)
2081     {
2082         return this.getSuperEntity().hasStereotype(stereotypeName);
2083     }
2084 
2085     /**
2086      * True if there are target dependencies from this element that are instances of BindingFacade.
2087      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
2088      * @see ModelElementFacade#isBindingDependenciesPresent()
2089      */
2090     public boolean isBindingDependenciesPresent()
2091     {
2092         return this.getSuperEntity().isBindingDependenciesPresent();
2093     }
2094 
2095     /**
2096      * Indicates if any constraints are present on this model element.
2097      * @see ModelElementFacade#isConstraintsPresent()
2098      */
2099     public boolean isConstraintsPresent()
2100     {
2101         return this.getSuperEntity().isConstraintsPresent();
2102     }
2103 
2104     /**
2105      * Indicates if any documentation is present on this model element.
2106      * @see ModelElementFacade#isDocumentationPresent()
2107      */
2108     public boolean isDocumentationPresent()
2109     {
2110         return this.getSuperEntity().isDocumentationPresent();
2111     }
2112 
2113     /**
2114      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
2115      * @see ModelElementFacade#isReservedWord()
2116      */
2117     public boolean isReservedWord()
2118     {
2119         return this.getSuperEntity().isReservedWord();
2120     }
2121 
2122     /**
2123      * True is there are template parameters on this model element. For UML2, applies to Class,
2124      * Operation, Property, and Parameter.
2125      * @see ModelElementFacade#isTemplateParametersPresent()
2126      */
2127     public boolean isTemplateParametersPresent()
2128     {
2129         return this.getSuperEntity().isTemplateParametersPresent();
2130     }
2131 
2132     /**
2133      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
2134      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
2135      * Enumerations and Interfaces, optionally applies on other model elements.
2136      * @see ModelElementFacade#isValidIdentifierName()
2137      */
2138     public boolean isValidIdentifierName()
2139     {
2140         return this.getSuperEntity().isValidIdentifierName();
2141     }
2142 
2143     /**
2144      * Searches for the constraint with the specified 'name' on this model element, and if found
2145      * translates it using the specified 'translation' from a translation library discovered by the
2146      * framework.
2147      * @see ModelElementFacade#translateConstraint(String name, String translation)
2148      */
2149     public String translateConstraint(String name, String translation)
2150     {
2151         return this.getSuperEntity().translateConstraint(name, translation);
2152     }
2153 
2154     /**
2155      * Translates all constraints belonging to this model element with the given 'translation'.
2156      * @see ModelElementFacade#translateConstraints(String translation)
2157      */
2158     public String[] translateConstraints(String translation)
2159     {
2160         return this.getSuperEntity().translateConstraints(translation);
2161     }
2162 
2163     /**
2164      * Translates the constraints of the specified 'kind' belonging to this model element.
2165      * @see ModelElementFacade#translateConstraints(String kind, String translation)
2166      */
2167     public String[] translateConstraints(String kind, String translation)
2168     {
2169         return this.getSuperEntity().translateConstraints(kind, translation);
2170     }
2171 
2172     /**
2173      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
2174      */
2175     @Override
2176     public void initialize()
2177     {
2178         this.getSuperEntity().initialize();
2179     }
2180 
2181     /**
2182      * @return Object getSuperEntity().getValidationOwner()
2183      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
2184      */
2185     @Override
2186     public Object getValidationOwner()
2187     {
2188         Object owner = this.getSuperEntity().getValidationOwner();
2189         return owner;
2190     }
2191 
2192     /**
2193      * @return String getSuperEntity().getValidationName()
2194      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
2195      */
2196     @Override
2197     public String getValidationName()
2198     {
2199         String name = this.getSuperEntity().getValidationName();
2200         return name;
2201     }
2202 
2203     /**
2204      * @param validationMessages Collection<ModelValidationMessage>
2205      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
2206      */
2207     @Override
2208     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
2209     {
2210         this.getSuperEntity().validateInvariants(validationMessages);
2211     }
2212 
2213     /**
2214      * The property that stores the name of the metafacade.
2215      */
2216     private static final String NAME_PROPERTY = "name";
2217     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
2218 
2219     /**
2220      * @see Object#toString()
2221      */
2222     @Override
2223     public String toString()
2224     {
2225         final StringBuilder toString = new StringBuilder(this.getClass().getName());
2226         toString.append("[");
2227         try
2228         {
2229             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
2230         }
2231         catch (final Throwable tryAgain)
2232         {
2233             try
2234             {
2235                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
2236             }
2237             catch (final Throwable ignore)
2238             {
2239                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
2240             }
2241         }
2242         toString.append("]");
2243         return toString.toString();
2244     }
2245 }