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.ejb3.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.Role;
28  import org.andromda.metafacades.uml.StateMachineFacade;
29  import org.andromda.metafacades.uml.StereotypeFacade;
30  import org.andromda.metafacades.uml.TaggedValueFacade;
31  import org.andromda.metafacades.uml.TemplateParameterFacade;
32  import org.andromda.metafacades.uml.TypeMappings;
33  import org.andromda.translation.ocl.validation.OCLCollections;
34  import org.andromda.translation.ocl.validation.OCLIntrospector;
35  import org.andromda.translation.ocl.validation.OCLResultEnsurer;
36  import org.apache.log4j.Logger;
37  
38  /**
39   * Represents an entity EJB.
40   * MetafacadeLogic for EJB3EntityFacade
41   *
42   * @see EJB3EntityFacade
43   */
44  public abstract class EJB3EntityFacadeLogic
45      extends MetafacadeBase
46      implements EJB3EntityFacade
47  {
48      /**
49       * The underlying UML object
50       * @see Object
51       */
52      protected Object metaObject;
53  
54      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
55       * @param metaObjectIn
56       * @param context
57       */
58      protected EJB3EntityFacadeLogic(Object metaObjectIn, String context)
59      {
60          super(metaObjectIn, getContext(context));
61          this.superEntity =
62             (Entity)
63              MetafacadeFactory.getInstance().createFacadeImpl(
64                      "org.andromda.metafacades.uml.Entity",
65                      metaObjectIn,
66                      getContext(context));
67          this.metaObject = metaObjectIn;
68      }
69  
70      /**
71       * The logger instance.
72       */
73      private static final Logger logger = Logger.getLogger(EJB3EntityFacadeLogic.class);
74  
75      /**
76       * Gets the context for this metafacade logic instance.
77       * @param context String. Set to EJB3EntityFacade if null
78       * @return context String
79       */
80      private static String getContext(String context)
81      {
82          if (context == null)
83          {
84              context = "org.andromda.cartridges.ejb3.metafacades.EJB3EntityFacade";
85          }
86          return context;
87      }
88  
89      private Entity superEntity;
90      private boolean superEntityInitialized = false;
91  
92      /**
93       * Gets the Entity parent instance.
94       * @return this.superEntity Entity
95       */
96      private Entity getSuperEntity()
97      {
98          if (!this.superEntityInitialized)
99          {
100             ((MetafacadeBase)this.superEntity).setMetafacadeContext(this.getMetafacadeContext());
101             this.superEntityInitialized = true;
102         }
103         return this.superEntity;
104     }
105 
106     /** Reset context only for non-root metafacades
107      * @param context
108      * @see MetafacadeBase#resetMetafacadeContext(String context)
109      */
110     @Override
111     public void resetMetafacadeContext(String context)
112     {
113         if (!this.contextRoot) // reset context only for non-root metafacades
114         {
115             context = getContext(context);  // to have same value as in original constructor call
116             setMetafacadeContext (context);
117             if (this.superEntityInitialized)
118             {
119                 ((MetafacadeBase)this.superEntity).resetMetafacadeContext(context);
120             }
121         }
122     }
123 
124     /**
125      * @return boolean true always
126      * @see EJB3EntityFacade
127      */
128     public boolean isEJB3EntityFacadeMetaType()
129     {
130         return true;
131     }
132 
133     // --------------- attributes ---------------------
134 
135    /**
136     * @see EJB3EntityFacade#isSyntheticCreateMethodAllowed()
137     * @return boolean
138     */
139     protected abstract boolean handleIsSyntheticCreateMethodAllowed();
140 
141     private boolean __syntheticCreateMethodAllowed1a;
142     private boolean __syntheticCreateMethodAllowed1aSet = false;
143 
144     /**
145      * Whether or not to allow a synthetic (auto generated) create method.
146      * @return (boolean)handleIsSyntheticCreateMethodAllowed()
147      */
148     public final boolean isSyntheticCreateMethodAllowed()
149     {
150         boolean syntheticCreateMethodAllowed1a = this.__syntheticCreateMethodAllowed1a;
151         if (!this.__syntheticCreateMethodAllowed1aSet)
152         {
153             // syntheticCreateMethodAllowed has no pre constraints
154             syntheticCreateMethodAllowed1a = handleIsSyntheticCreateMethodAllowed();
155             // syntheticCreateMethodAllowed has no post constraints
156             this.__syntheticCreateMethodAllowed1a = syntheticCreateMethodAllowed1a;
157             if (isMetafacadePropertyCachingEnabled())
158             {
159                 this.__syntheticCreateMethodAllowed1aSet = true;
160             }
161         }
162         return syntheticCreateMethodAllowed1a;
163     }
164 
165    /**
166     * @see EJB3EntityFacade#getAllEntityRelations()
167     * @return Collection
168     */
169     protected abstract Collection handleGetAllEntityRelations();
170 
171     private Collection __allEntityRelations2a;
172     private boolean __allEntityRelations2aSet = false;
173 
174     /**
175      * Find all associations that define relations to other entities.
176      * This method returns the source association ends for all associations that define
177      * a container managed relation.  The returned collection includes both
178      * direct relations and inherited relations. A direct relation is an association with some other
179      * class matching the following criteria: 1) The class at the other side of the association is
180      * stereotyped <<Entity>> 2) The association is navigable from to the other side.
181      * An inherited relation is an association from an abstract super type matching the following
182      * criteria: 1) The inheritance path to this abstract super type, including this super type
183      * itself, consists only of abstract classes with stereotype <<Entity>> 2)  The class at the
184      * other side of the association is stereotyped <<Entity>>. 3) The association is navigable from
185      * this abstract super type to the other side.
186      * Relations must match the following integrity constraint:
187      * - The <<Entity>> at the target end is not abstract.
188      * The integrity constraint is necessary because the target of a container managed relation in
189      * the EJB framework must be a concrete entity bean; there is no such thing as an
190      * "abstract entity bean" in the EJB specification. It is possible, however, to generate and
191      * compile code for this case, an error will only show up at deploy time. In order to catch
192      * this kind of error at the earliest possible stage, this method checks the integrity
193      * constraint and throws an exception if it is violated.
194      * @return (Collection)handleGetAllEntityRelations()
195      */
196     public final Collection getAllEntityRelations()
197     {
198         Collection allEntityRelations2a = this.__allEntityRelations2a;
199         if (!this.__allEntityRelations2aSet)
200         {
201             // allEntityRelations has no pre constraints
202             allEntityRelations2a = handleGetAllEntityRelations();
203             // allEntityRelations has no post constraints
204             this.__allEntityRelations2a = allEntityRelations2a;
205             if (isMetafacadePropertyCachingEnabled())
206             {
207                 this.__allEntityRelations2aSet = true;
208             }
209         }
210         return allEntityRelations2a;
211     }
212 
213    /**
214     * @see EJB3EntityFacade#getJndiName()
215     * @return String
216     */
217     protected abstract String handleGetJndiName();
218 
219     private String __jndiName3a;
220     private boolean __jndiName3aSet = false;
221 
222     /**
223      * jndiNamePrefix/ejb/this.getFullyQualifiedName()
224      * @return (String)handleGetJndiName()
225      */
226     public final String getJndiName()
227     {
228         String jndiName3a = this.__jndiName3a;
229         if (!this.__jndiName3aSet)
230         {
231             // jndiName has no pre constraints
232             jndiName3a = handleGetJndiName();
233             // jndiName has no post constraints
234             this.__jndiName3a = jndiName3a;
235             if (isMetafacadePropertyCachingEnabled())
236             {
237                 this.__jndiName3aSet = true;
238             }
239         }
240         return jndiName3a;
241     }
242 
243    /**
244     * @see EJB3EntityFacade#getViewType()
245     * @return String
246     */
247     protected abstract String handleGetViewType();
248 
249     private String __viewType4a;
250     private boolean __viewType4aSet = false;
251 
252     /**
253      * A string indicating whether the Bean is a local or remotely accessable bean.
254      * @return (String)handleGetViewType()
255      */
256     public final String getViewType()
257     {
258         String viewType4a = this.__viewType4a;
259         if (!this.__viewType4aSet)
260         {
261             // viewType has no pre constraints
262             viewType4a = handleGetViewType();
263             // viewType has no post constraints
264             this.__viewType4a = viewType4a;
265             if (isMetafacadePropertyCachingEnabled())
266             {
267                 this.__viewType4aSet = true;
268             }
269         }
270         return viewType4a;
271     }
272 
273    /**
274     * @see EJB3EntityFacade#getAllInstanceAttributes()
275     * @return List
276     */
277     protected abstract List handleGetAllInstanceAttributes();
278 
279     private List __allInstanceAttributes5a;
280     private boolean __allInstanceAttributes5aSet = false;
281 
282     /**
283      * All instanceAttributes for this entity. The list includes the instanceAttributes that are
284      * inherited from super classes. The list contains the inherited instanceAttributes first,
285      * followed by the instanceAttributes defined in this class.
286      * @return (List)handleGetAllInstanceAttributes()
287      */
288     public final List getAllInstanceAttributes()
289     {
290         List allInstanceAttributes5a = this.__allInstanceAttributes5a;
291         if (!this.__allInstanceAttributes5aSet)
292         {
293             // allInstanceAttributes has no pre constraints
294             allInstanceAttributes5a = handleGetAllInstanceAttributes();
295             // allInstanceAttributes has no post constraints
296             this.__allInstanceAttributes5a = allInstanceAttributes5a;
297             if (isMetafacadePropertyCachingEnabled())
298             {
299                 this.__allInstanceAttributes5aSet = true;
300             }
301         }
302         return allInstanceAttributes5a;
303     }
304 
305    /**
306     * @see EJB3EntityFacade#getInheritedInstanceAttributes()
307     * @return List
308     */
309     protected abstract List handleGetInheritedInstanceAttributes();
310 
311     private List __inheritedInstanceAttributes6a;
312     private boolean __inheritedInstanceAttributes6aSet = false;
313 
314     /**
315      * All inherited instanceAttributes this class.  The instanceAttributes are grouped by the class
316      * that defines the instanceAttributes, with instanceAttributes from the most removed super
317      * class first.
318      * @return (List)handleGetInheritedInstanceAttributes()
319      */
320     public final List getInheritedInstanceAttributes()
321     {
322         List inheritedInstanceAttributes6a = this.__inheritedInstanceAttributes6a;
323         if (!this.__inheritedInstanceAttributes6aSet)
324         {
325             // inheritedInstanceAttributes has no pre constraints
326             inheritedInstanceAttributes6a = handleGetInheritedInstanceAttributes();
327             // inheritedInstanceAttributes has no post constraints
328             this.__inheritedInstanceAttributes6a = inheritedInstanceAttributes6a;
329             if (isMetafacadePropertyCachingEnabled())
330             {
331                 this.__inheritedInstanceAttributes6aSet = true;
332             }
333         }
334         return inheritedInstanceAttributes6a;
335     }
336 
337    /**
338     * @see EJB3EntityFacade#getHomeInterfaceName()
339     * @return String
340     */
341     protected abstract String handleGetHomeInterfaceName();
342 
343     private String __homeInterfaceName7a;
344     private boolean __homeInterfaceName7aSet = false;
345 
346     /**
347      * A String representing the name of a home interface for this entity EJB.
348      * @return (String)handleGetHomeInterfaceName()
349      */
350     public final String getHomeInterfaceName()
351     {
352         String homeInterfaceName7a = this.__homeInterfaceName7a;
353         if (!this.__homeInterfaceName7aSet)
354         {
355             // homeInterfaceName has no pre constraints
356             homeInterfaceName7a = handleGetHomeInterfaceName();
357             // homeInterfaceName has no post constraints
358             this.__homeInterfaceName7a = homeInterfaceName7a;
359             if (isMetafacadePropertyCachingEnabled())
360             {
361                 this.__homeInterfaceName7aSet = true;
362             }
363         }
364         return homeInterfaceName7a;
365     }
366 
367    /**
368     * @see EJB3EntityFacade#getValueDependencies()
369     * @return Collection
370     */
371     protected abstract Collection handleGetValueDependencies();
372 
373     private Collection __valueDependencies8a;
374     private boolean __valueDependencies8aSet = false;
375 
376     /**
377      * ValueObject dependency references from this Entity
378      * @return (Collection)handleGetValueDependencies()
379      */
380     public final Collection getValueDependencies()
381     {
382         Collection valueDependencies8a = this.__valueDependencies8a;
383         if (!this.__valueDependencies8aSet)
384         {
385             // valueDependencies has no pre constraints
386             valueDependencies8a = handleGetValueDependencies();
387             // valueDependencies has no post constraints
388             this.__valueDependencies8a = valueDependencies8a;
389             if (isMetafacadePropertyCachingEnabled())
390             {
391                 this.__valueDependencies8aSet = true;
392             }
393         }
394         return valueDependencies8a;
395     }
396 
397    /**
398     * @see EJB3EntityFacade#getEntityRelations()
399     * @return Collection
400     */
401     protected abstract Collection handleGetEntityRelations();
402 
403     private Collection __entityRelations9a;
404     private boolean __entityRelations9aSet = false;
405 
406     /**
407      * Entity classes that are association relationships from this entity.
408      * @return (Collection)handleGetEntityRelations()
409      */
410     public final Collection getEntityRelations()
411     {
412         Collection entityRelations9a = this.__entityRelations9a;
413         if (!this.__entityRelations9aSet)
414         {
415             // entityRelations has no pre constraints
416             entityRelations9a = handleGetEntityRelations();
417             // entityRelations has no post constraints
418             this.__entityRelations9a = entityRelations9a;
419             if (isMetafacadePropertyCachingEnabled())
420             {
421                 this.__entityRelations9aSet = true;
422             }
423         }
424         return entityRelations9a;
425     }
426 
427    /**
428     * @see EJB3EntityFacade#getEntityListenerName()
429     * @return String
430     */
431     protected abstract String handleGetEntityListenerName();
432 
433     private String __entityListenerName10a;
434     private boolean __entityListenerName10aSet = false;
435 
436     /**
437      * Entity listener class name for callback methods.
438      * @return (String)handleGetEntityListenerName()
439      */
440     public final String getEntityListenerName()
441     {
442         String entityListenerName10a = this.__entityListenerName10a;
443         if (!this.__entityListenerName10aSet)
444         {
445             // entityListenerName has no pre constraints
446             entityListenerName10a = handleGetEntityListenerName();
447             // entityListenerName has no post constraints
448             this.__entityListenerName10a = entityListenerName10a;
449             if (isMetafacadePropertyCachingEnabled())
450             {
451                 this.__entityListenerName10aSet = true;
452             }
453         }
454         return entityListenerName10a;
455     }
456 
457    /**
458     * @see EJB3EntityFacade#getEntityEmbeddableName()
459     * @return String
460     */
461     protected abstract String handleGetEntityEmbeddableName();
462 
463     private String __entityEmbeddableName11a;
464     private boolean __entityEmbeddableName11aSet = false;
465 
466     /**
467      * Entity embeddable super class name this entity inherits from.
468      * @return (String)handleGetEntityEmbeddableName()
469      */
470     public final String getEntityEmbeddableName()
471     {
472         String entityEmbeddableName11a = this.__entityEmbeddableName11a;
473         if (!this.__entityEmbeddableName11aSet)
474         {
475             // entityEmbeddableName has no pre constraints
476             entityEmbeddableName11a = handleGetEntityEmbeddableName();
477             // entityEmbeddableName has no post constraints
478             this.__entityEmbeddableName11a = entityEmbeddableName11a;
479             if (isMetafacadePropertyCachingEnabled())
480             {
481                 this.__entityEmbeddableName11aSet = true;
482             }
483         }
484         return entityEmbeddableName11a;
485     }
486 
487    /**
488     * @see EJB3EntityFacade#getFullyQualifiedEntityListenerName()
489     * @return String
490     */
491     protected abstract String handleGetFullyQualifiedEntityListenerName();
492 
493     private String __fullyQualifiedEntityListenerName12a;
494     private boolean __fullyQualifiedEntityListenerName12aSet = false;
495 
496     /**
497      * Fully qualified name of the Entity listner class holding entity callback methods.
498      * @return (String)handleGetFullyQualifiedEntityListenerName()
499      */
500     public final String getFullyQualifiedEntityListenerName()
501     {
502         String fullyQualifiedEntityListenerName12a = this.__fullyQualifiedEntityListenerName12a;
503         if (!this.__fullyQualifiedEntityListenerName12aSet)
504         {
505             // fullyQualifiedEntityListenerName has no pre constraints
506             fullyQualifiedEntityListenerName12a = handleGetFullyQualifiedEntityListenerName();
507             // fullyQualifiedEntityListenerName has no post constraints
508             this.__fullyQualifiedEntityListenerName12a = fullyQualifiedEntityListenerName12a;
509             if (isMetafacadePropertyCachingEnabled())
510             {
511                 this.__fullyQualifiedEntityListenerName12aSet = true;
512             }
513         }
514         return fullyQualifiedEntityListenerName12a;
515     }
516 
517    /**
518     * @see EJB3EntityFacade#getFullyQualifiedEntityEmbeddableName()
519     * @return String
520     */
521     protected abstract String handleGetFullyQualifiedEntityEmbeddableName();
522 
523     private String __fullyQualifiedEntityEmbeddableName13a;
524     private boolean __fullyQualifiedEntityEmbeddableName13aSet = false;
525 
526     /**
527      * The fully qualified name of the embeddable super class of this entity.
528      * @return (String)handleGetFullyQualifiedEntityEmbeddableName()
529      */
530     public final String getFullyQualifiedEntityEmbeddableName()
531     {
532         String fullyQualifiedEntityEmbeddableName13a = this.__fullyQualifiedEntityEmbeddableName13a;
533         if (!this.__fullyQualifiedEntityEmbeddableName13aSet)
534         {
535             // fullyQualifiedEntityEmbeddableName has no pre constraints
536             fullyQualifiedEntityEmbeddableName13a = handleGetFullyQualifiedEntityEmbeddableName();
537             // fullyQualifiedEntityEmbeddableName has no post constraints
538             this.__fullyQualifiedEntityEmbeddableName13a = fullyQualifiedEntityEmbeddableName13a;
539             if (isMetafacadePropertyCachingEnabled())
540             {
541                 this.__fullyQualifiedEntityEmbeddableName13aSet = true;
542             }
543         }
544         return fullyQualifiedEntityEmbeddableName13a;
545     }
546 
547    /**
548     * @see EJB3EntityFacade#getDefaultCascadeType()
549     * @return String
550     */
551     protected abstract String handleGetDefaultCascadeType();
552 
553     private String __defaultCascadeType14a;
554     private boolean __defaultCascadeType14aSet = false;
555 
556     /**
557      * Returns the default entity cascadable property attribute looked up in the namespace
558      * descriptor.
559      * @return (String)handleGetDefaultCascadeType()
560      */
561     public final String getDefaultCascadeType()
562     {
563         String defaultCascadeType14a = this.__defaultCascadeType14a;
564         if (!this.__defaultCascadeType14aSet)
565         {
566             // defaultCascadeType has no pre constraints
567             defaultCascadeType14a = handleGetDefaultCascadeType();
568             // defaultCascadeType has no post constraints
569             this.__defaultCascadeType14a = defaultCascadeType14a;
570             if (isMetafacadePropertyCachingEnabled())
571             {
572                 this.__defaultCascadeType14aSet = true;
573             }
574         }
575         return defaultCascadeType14a;
576     }
577 
578    /**
579     * @see EJB3EntityFacade#getDiscriminatorColumn()
580     * @return String
581     */
582     protected abstract String handleGetDiscriminatorColumn();
583 
584     private String __discriminatorColumn15a;
585     private boolean __discriminatorColumn15aSet = false;
586 
587     /**
588      * The name of the discriminator column.  Default is TYPE if this is missing.
589      * @return (String)handleGetDiscriminatorColumn()
590      */
591     public final String getDiscriminatorColumn()
592     {
593         String discriminatorColumn15a = this.__discriminatorColumn15a;
594         if (!this.__discriminatorColumn15aSet)
595         {
596             // discriminatorColumn has no pre constraints
597             discriminatorColumn15a = handleGetDiscriminatorColumn();
598             // discriminatorColumn has no post constraints
599             this.__discriminatorColumn15a = discriminatorColumn15a;
600             if (isMetafacadePropertyCachingEnabled())
601             {
602                 this.__discriminatorColumn15aSet = true;
603             }
604         }
605         return discriminatorColumn15a;
606     }
607 
608    /**
609     * @see EJB3EntityFacade#getDiscriminatorColumnDefinition()
610     * @return String
611     */
612     protected abstract String handleGetDiscriminatorColumnDefinition();
613 
614     private String __discriminatorColumnDefinition16a;
615     private boolean __discriminatorColumnDefinition16aSet = false;
616 
617     /**
618      * The SQL used when generating the DDL for the discriminator column.
619      * @return (String)handleGetDiscriminatorColumnDefinition()
620      */
621     public final String getDiscriminatorColumnDefinition()
622     {
623         String discriminatorColumnDefinition16a = this.__discriminatorColumnDefinition16a;
624         if (!this.__discriminatorColumnDefinition16aSet)
625         {
626             // discriminatorColumnDefinition has no pre constraints
627             discriminatorColumnDefinition16a = handleGetDiscriminatorColumnDefinition();
628             // discriminatorColumnDefinition has no post constraints
629             this.__discriminatorColumnDefinition16a = discriminatorColumnDefinition16a;
630             if (isMetafacadePropertyCachingEnabled())
631             {
632                 this.__discriminatorColumnDefinition16aSet = true;
633             }
634         }
635         return discriminatorColumnDefinition16a;
636     }
637 
638    /**
639     * @see EJB3EntityFacade#getDiscriminatorLength()
640     * @return int
641     */
642     protected abstract int handleGetDiscriminatorLength();
643 
644     private int __discriminatorLength17a;
645     private boolean __discriminatorLength17aSet = false;
646 
647     /**
648      * The standard length of a discriminator value.  Default is 10.
649      * @return (int)handleGetDiscriminatorLength()
650      */
651     public final int getDiscriminatorLength()
652     {
653         int discriminatorLength17a = this.__discriminatorLength17a;
654         if (!this.__discriminatorLength17aSet)
655         {
656             // discriminatorLength has no pre constraints
657             discriminatorLength17a = handleGetDiscriminatorLength();
658             // discriminatorLength has no post constraints
659             this.__discriminatorLength17a = discriminatorLength17a;
660             if (isMetafacadePropertyCachingEnabled())
661             {
662                 this.__discriminatorLength17aSet = true;
663             }
664         }
665         return discriminatorLength17a;
666     }
667 
668    /**
669     * @see EJB3EntityFacade#getDiscriminatorType()
670     * @return String
671     */
672     protected abstract String handleGetDiscriminatorType();
673 
674     private String __discriminatorType18a;
675     private boolean __discriminatorType18aSet = false;
676 
677     /**
678      * The type of the entity discriminator column.  Default is STRING.
679      * @return (String)handleGetDiscriminatorType()
680      */
681     public final String getDiscriminatorType()
682     {
683         String discriminatorType18a = this.__discriminatorType18a;
684         if (!this.__discriminatorType18aSet)
685         {
686             // discriminatorType has no pre constraints
687             discriminatorType18a = handleGetDiscriminatorType();
688             // discriminatorType has no post constraints
689             this.__discriminatorType18a = discriminatorType18a;
690             if (isMetafacadePropertyCachingEnabled())
691             {
692                 this.__discriminatorType18aSet = true;
693             }
694         }
695         return discriminatorType18a;
696     }
697 
698    /**
699     * @see EJB3EntityFacade#getDiscriminatorValue()
700     * @return String
701     */
702     protected abstract String handleGetDiscriminatorValue();
703 
704     private String __discriminatorValue19a;
705     private boolean __discriminatorValue19aSet = false;
706 
707     /**
708      * The value indicating the row in an entity of the annotated entity type.
709      * @return (String)handleGetDiscriminatorValue()
710      */
711     public final String getDiscriminatorValue()
712     {
713         String discriminatorValue19a = this.__discriminatorValue19a;
714         if (!this.__discriminatorValue19aSet)
715         {
716             // discriminatorValue has no pre constraints
717             discriminatorValue19a = handleGetDiscriminatorValue();
718             // discriminatorValue has no post constraints
719             this.__discriminatorValue19a = discriminatorValue19a;
720             if (isMetafacadePropertyCachingEnabled())
721             {
722                 this.__discriminatorValue19aSet = true;
723             }
724         }
725         return discriminatorValue19a;
726     }
727 
728    /**
729     * @see EJB3EntityFacade#isInheritanceSingleTable()
730     * @return boolean
731     */
732     protected abstract boolean handleIsInheritanceSingleTable();
733 
734     private boolean __inheritanceSingleTable20a;
735     private boolean __inheritanceSingleTable20aSet = false;
736 
737     /**
738      * Return true if the entity inheritance strategy as specified by the tagged value
739      * andromda_persistence_inheritance is defined as SINGLE_TABLE.
740      * @return (boolean)handleIsInheritanceSingleTable()
741      */
742     public final boolean isInheritanceSingleTable()
743     {
744         boolean inheritanceSingleTable20a = this.__inheritanceSingleTable20a;
745         if (!this.__inheritanceSingleTable20aSet)
746         {
747             // inheritanceSingleTable has no pre constraints
748             inheritanceSingleTable20a = handleIsInheritanceSingleTable();
749             // inheritanceSingleTable has no post constraints
750             this.__inheritanceSingleTable20a = inheritanceSingleTable20a;
751             if (isMetafacadePropertyCachingEnabled())
752             {
753                 this.__inheritanceSingleTable20aSet = true;
754             }
755         }
756         return inheritanceSingleTable20a;
757     }
758 
759    /**
760     * @see EJB3EntityFacade#getInheritanceStrategy()
761     * @return String
762     */
763     protected abstract String handleGetInheritanceStrategy();
764 
765     private String __inheritanceStrategy21a;
766     private boolean __inheritanceStrategy21aSet = false;
767 
768     /**
769      * Return the value of the andromda_persistence_inheritance tagged value which is an enumeration
770      * containing SINGLE_TABLE, TABLE_PER_CLASS or JOINED.
771      * @return (String)handleGetInheritanceStrategy()
772      */
773     public final String getInheritanceStrategy()
774     {
775         String inheritanceStrategy21a = this.__inheritanceStrategy21a;
776         if (!this.__inheritanceStrategy21aSet)
777         {
778             // inheritanceStrategy has no pre constraints
779             inheritanceStrategy21a = handleGetInheritanceStrategy();
780             // inheritanceStrategy has no post constraints
781             this.__inheritanceStrategy21a = inheritanceStrategy21a;
782             if (isMetafacadePropertyCachingEnabled())
783             {
784                 this.__inheritanceStrategy21aSet = true;
785             }
786         }
787         return inheritanceStrategy21a;
788     }
789 
790    /**
791     * @see EJB3EntityFacade#isInheritanceTablePerClass()
792     * @return boolean
793     */
794     protected abstract boolean handleIsInheritanceTablePerClass();
795 
796     private boolean __inheritanceTablePerClass22a;
797     private boolean __inheritanceTablePerClass22aSet = false;
798 
799     /**
800      * Return true if the entity inheritance strategy as specified by the tagged value
801      * andromda_persistence_inheritance is defined as TABLE_PER_CLASS.
802      * @return (boolean)handleIsInheritanceTablePerClass()
803      */
804     public final boolean isInheritanceTablePerClass()
805     {
806         boolean inheritanceTablePerClass22a = this.__inheritanceTablePerClass22a;
807         if (!this.__inheritanceTablePerClass22aSet)
808         {
809             // inheritanceTablePerClass has no pre constraints
810             inheritanceTablePerClass22a = handleIsInheritanceTablePerClass();
811             // inheritanceTablePerClass has no post constraints
812             this.__inheritanceTablePerClass22a = inheritanceTablePerClass22a;
813             if (isMetafacadePropertyCachingEnabled())
814             {
815                 this.__inheritanceTablePerClass22aSet = true;
816             }
817         }
818         return inheritanceTablePerClass22a;
819     }
820 
821    /**
822     * @see EJB3EntityFacade#isInheritanceJoined()
823     * @return boolean
824     */
825     protected abstract boolean handleIsInheritanceJoined();
826 
827     private boolean __inheritanceJoined23a;
828     private boolean __inheritanceJoined23aSet = false;
829 
830     /**
831      * Return true if the entity inheritance strategy as specified by the tagged value
832      * andromda_persistence_inheritance is defined as JOINED.
833      * @return (boolean)handleIsInheritanceJoined()
834      */
835     public final boolean isInheritanceJoined()
836     {
837         boolean inheritanceJoined23a = this.__inheritanceJoined23a;
838         if (!this.__inheritanceJoined23aSet)
839         {
840             // inheritanceJoined has no pre constraints
841             inheritanceJoined23a = handleIsInheritanceJoined();
842             // inheritanceJoined has no post constraints
843             this.__inheritanceJoined23a = inheritanceJoined23a;
844             if (isMetafacadePropertyCachingEnabled())
845             {
846                 this.__inheritanceJoined23aSet = true;
847             }
848         }
849         return inheritanceJoined23a;
850     }
851 
852    /**
853     * @see EJB3EntityFacade#isRequiresSpecializationMapping()
854     * @return boolean
855     */
856     protected abstract boolean handleIsRequiresSpecializationMapping();
857 
858     private boolean __requiresSpecializationMapping24a;
859     private boolean __requiresSpecializationMapping24aSet = false;
860 
861     /**
862      * Returns true if the entity requires specialization mapping.  The Inheritance annotation is
863      * required for parent entities for all inheritance strategies.
864      * @return (boolean)handleIsRequiresSpecializationMapping()
865      */
866     public final boolean isRequiresSpecializationMapping()
867     {
868         boolean requiresSpecializationMapping24a = this.__requiresSpecializationMapping24a;
869         if (!this.__requiresSpecializationMapping24aSet)
870         {
871             // requiresSpecializationMapping has no pre constraints
872             requiresSpecializationMapping24a = handleIsRequiresSpecializationMapping();
873             // requiresSpecializationMapping has no post constraints
874             this.__requiresSpecializationMapping24a = requiresSpecializationMapping24a;
875             if (isMetafacadePropertyCachingEnabled())
876             {
877                 this.__requiresSpecializationMapping24aSet = true;
878             }
879         }
880         return requiresSpecializationMapping24a;
881     }
882 
883    /**
884     * @see EJB3EntityFacade#isRequiresGeneralizationMapping()
885     * @return boolean
886     */
887     protected abstract boolean handleIsRequiresGeneralizationMapping();
888 
889     private boolean __requiresGeneralizationMapping25a;
890     private boolean __requiresGeneralizationMapping25aSet = false;
891 
892     /**
893      * Returns true if the entity requires generalization mapping.  The Inheritance annotation is
894      * required for child entities for all inheritance strategies.
895      * @return (boolean)handleIsRequiresGeneralizationMapping()
896      */
897     public final boolean isRequiresGeneralizationMapping()
898     {
899         boolean requiresGeneralizationMapping25a = this.__requiresGeneralizationMapping25a;
900         if (!this.__requiresGeneralizationMapping25aSet)
901         {
902             // requiresGeneralizationMapping has no pre constraints
903             requiresGeneralizationMapping25a = handleIsRequiresGeneralizationMapping();
904             // requiresGeneralizationMapping has no post constraints
905             this.__requiresGeneralizationMapping25a = requiresGeneralizationMapping25a;
906             if (isMetafacadePropertyCachingEnabled())
907             {
908                 this.__requiresGeneralizationMapping25aSet = true;
909             }
910         }
911         return requiresGeneralizationMapping25a;
912     }
913 
914    /**
915     * @see EJB3EntityFacade#getEntityImplementationName()
916     * @return String
917     */
918     protected abstract String handleGetEntityImplementationName();
919 
920     private String __entityImplementationName26a;
921     private boolean __entityImplementationName26aSet = false;
922 
923     /**
924      * The name of the implementation class.
925      * @return (String)handleGetEntityImplementationName()
926      */
927     public final String getEntityImplementationName()
928     {
929         String entityImplementationName26a = this.__entityImplementationName26a;
930         if (!this.__entityImplementationName26aSet)
931         {
932             // entityImplementationName has no pre constraints
933             entityImplementationName26a = handleGetEntityImplementationName();
934             // entityImplementationName has no post constraints
935             this.__entityImplementationName26a = entityImplementationName26a;
936             if (isMetafacadePropertyCachingEnabled())
937             {
938                 this.__entityImplementationName26aSet = true;
939             }
940         }
941         return entityImplementationName26a;
942     }
943 
944    /**
945     * @see EJB3EntityFacade#getFullyQualifiedEntityImplementationName()
946     * @return String
947     */
948     protected abstract String handleGetFullyQualifiedEntityImplementationName();
949 
950     private String __fullyQualifiedEntityImplementationName27a;
951     private boolean __fullyQualifiedEntityImplementationName27aSet = false;
952 
953     /**
954      * Fully qualified name of the Entity implementation class.
955      * @return (String)handleGetFullyQualifiedEntityImplementationName()
956      */
957     public final String getFullyQualifiedEntityImplementationName()
958     {
959         String fullyQualifiedEntityImplementationName27a = this.__fullyQualifiedEntityImplementationName27a;
960         if (!this.__fullyQualifiedEntityImplementationName27aSet)
961         {
962             // fullyQualifiedEntityImplementationName has no pre constraints
963             fullyQualifiedEntityImplementationName27a = handleGetFullyQualifiedEntityImplementationName();
964             // fullyQualifiedEntityImplementationName has no post constraints
965             this.__fullyQualifiedEntityImplementationName27a = fullyQualifiedEntityImplementationName27a;
966             if (isMetafacadePropertyCachingEnabled())
967             {
968                 this.__fullyQualifiedEntityImplementationName27aSet = true;
969             }
970         }
971         return fullyQualifiedEntityImplementationName27a;
972     }
973 
974    /**
975     * @see EJB3EntityFacade#getEntityName()
976     * @return String
977     */
978     protected abstract String handleGetEntityName();
979 
980     private String __entityName28a;
981     private boolean __entityName28aSet = false;
982 
983     /**
984      * The named used for the EJB3 entity.
985      * @return (String)handleGetEntityName()
986      */
987     public final String getEntityName()
988     {
989         String entityName28a = this.__entityName28a;
990         if (!this.__entityName28aSet)
991         {
992             // entityName has no pre constraints
993             entityName28a = handleGetEntityName();
994             // entityName has no post constraints
995             this.__entityName28a = entityName28a;
996             if (isMetafacadePropertyCachingEnabled())
997             {
998                 this.__entityName28aSet = true;
999             }
1000         }
1001         return entityName28a;
1002     }
1003 
1004    /**
1005     * @see EJB3EntityFacade#getFullyQualifiedEntityName()
1006     * @return String
1007     */
1008     protected abstract String handleGetFullyQualifiedEntityName();
1009 
1010     private String __fullyQualifiedEntityName29a;
1011     private boolean __fullyQualifiedEntityName29aSet = false;
1012 
1013     /**
1014      * The fully qualified name of the EJB3 entity.
1015      * @return (String)handleGetFullyQualifiedEntityName()
1016      */
1017     public final String getFullyQualifiedEntityName()
1018     {
1019         String fullyQualifiedEntityName29a = this.__fullyQualifiedEntityName29a;
1020         if (!this.__fullyQualifiedEntityName29aSet)
1021         {
1022             // fullyQualifiedEntityName has no pre constraints
1023             fullyQualifiedEntityName29a = handleGetFullyQualifiedEntityName();
1024             // fullyQualifiedEntityName has no post constraints
1025             this.__fullyQualifiedEntityName29a = fullyQualifiedEntityName29a;
1026             if (isMetafacadePropertyCachingEnabled())
1027             {
1028                 this.__fullyQualifiedEntityName29aSet = true;
1029             }
1030         }
1031         return fullyQualifiedEntityName29a;
1032     }
1033 
1034    /**
1035     * @see EJB3EntityFacade#isEmbeddableSuperclass()
1036     * @return boolean
1037     */
1038     protected abstract boolean handleIsEmbeddableSuperclass();
1039 
1040     private boolean __embeddableSuperclass30a;
1041     private boolean __embeddableSuperclass30aSet = false;
1042 
1043     /**
1044      * Determines if this entity is an mapped/embeddable super class.
1045      * @return (boolean)handleIsEmbeddableSuperclass()
1046      */
1047     public final boolean isEmbeddableSuperclass()
1048     {
1049         boolean embeddableSuperclass30a = this.__embeddableSuperclass30a;
1050         if (!this.__embeddableSuperclass30aSet)
1051         {
1052             // embeddableSuperclass has no pre constraints
1053             embeddableSuperclass30a = handleIsEmbeddableSuperclass();
1054             // embeddableSuperclass has no post constraints
1055             this.__embeddableSuperclass30a = embeddableSuperclass30a;
1056             if (isMetafacadePropertyCachingEnabled())
1057             {
1058                 this.__embeddableSuperclass30aSet = true;
1059             }
1060         }
1061         return embeddableSuperclass30a;
1062     }
1063 
1064    /**
1065     * @see EJB3EntityFacade#isGenericFinders()
1066     * @return boolean
1067     */
1068     protected abstract boolean handleIsGenericFinders();
1069 
1070     private boolean __genericFinders31a;
1071     private boolean __genericFinders31aSet = false;
1072 
1073     /**
1074      * Returns true if the generic finder property is true.  This will create generic finder static
1075      * methods in the entity POJO like findByPrimaryKey and findAll.
1076      * @return (boolean)handleIsGenericFinders()
1077      */
1078     public final boolean isGenericFinders()
1079     {
1080         boolean genericFinders31a = this.__genericFinders31a;
1081         if (!this.__genericFinders31aSet)
1082         {
1083             // genericFinders has no pre constraints
1084             genericFinders31a = handleIsGenericFinders();
1085             // genericFinders has no post constraints
1086             this.__genericFinders31a = genericFinders31a;
1087             if (isMetafacadePropertyCachingEnabled())
1088             {
1089                 this.__genericFinders31aSet = true;
1090             }
1091         }
1092         return genericFinders31a;
1093     }
1094 
1095    /**
1096     * @see EJB3EntityFacade#isCompositePrimaryKeyPresent()
1097     * @return boolean
1098     */
1099     protected abstract boolean handleIsCompositePrimaryKeyPresent();
1100 
1101     private boolean __compositePrimaryKeyPresent32a;
1102     private boolean __compositePrimaryKeyPresent32aSet = false;
1103 
1104     /**
1105      * Returns true if a composite primary key exists for this entity bean.  A composite primary key
1106      * consists of 2 or more entity identifiers.
1107      * @return (boolean)handleIsCompositePrimaryKeyPresent()
1108      */
1109     public final boolean isCompositePrimaryKeyPresent()
1110     {
1111         boolean compositePrimaryKeyPresent32a = this.__compositePrimaryKeyPresent32a;
1112         if (!this.__compositePrimaryKeyPresent32aSet)
1113         {
1114             // compositePrimaryKeyPresent has no pre constraints
1115             compositePrimaryKeyPresent32a = handleIsCompositePrimaryKeyPresent();
1116             // compositePrimaryKeyPresent has no post constraints
1117             this.__compositePrimaryKeyPresent32a = compositePrimaryKeyPresent32a;
1118             if (isMetafacadePropertyCachingEnabled())
1119             {
1120                 this.__compositePrimaryKeyPresent32aSet = true;
1121             }
1122         }
1123         return compositePrimaryKeyPresent32a;
1124     }
1125 
1126    /**
1127     * @see EJB3EntityFacade#getFullyQualifiedEntityCompositePrimaryKeyName()
1128     * @return String
1129     */
1130     protected abstract String handleGetFullyQualifiedEntityCompositePrimaryKeyName();
1131 
1132     private String __fullyQualifiedEntityCompositePrimaryKeyName33a;
1133     private boolean __fullyQualifiedEntityCompositePrimaryKeyName33aSet = false;
1134 
1135     /**
1136      * The fully qualified name of the composite primary key class of this entity.
1137      * @return (String)handleGetFullyQualifiedEntityCompositePrimaryKeyName()
1138      */
1139     public final String getFullyQualifiedEntityCompositePrimaryKeyName()
1140     {
1141         String fullyQualifiedEntityCompositePrimaryKeyName33a = this.__fullyQualifiedEntityCompositePrimaryKeyName33a;
1142         if (!this.__fullyQualifiedEntityCompositePrimaryKeyName33aSet)
1143         {
1144             // fullyQualifiedEntityCompositePrimaryKeyName has no pre constraints
1145             fullyQualifiedEntityCompositePrimaryKeyName33a = handleGetFullyQualifiedEntityCompositePrimaryKeyName();
1146             // fullyQualifiedEntityCompositePrimaryKeyName has no post constraints
1147             this.__fullyQualifiedEntityCompositePrimaryKeyName33a = fullyQualifiedEntityCompositePrimaryKeyName33a;
1148             if (isMetafacadePropertyCachingEnabled())
1149             {
1150                 this.__fullyQualifiedEntityCompositePrimaryKeyName33aSet = true;
1151             }
1152         }
1153         return fullyQualifiedEntityCompositePrimaryKeyName33a;
1154     }
1155 
1156    /**
1157     * @see EJB3EntityFacade#getEntityCompositePrimaryKeyName()
1158     * @return String
1159     */
1160     protected abstract String handleGetEntityCompositePrimaryKeyName();
1161 
1162     private String __entityCompositePrimaryKeyName34a;
1163     private boolean __entityCompositePrimaryKeyName34aSet = false;
1164 
1165     /**
1166      * Entity composite primary key class name for this entity.
1167      * @return (String)handleGetEntityCompositePrimaryKeyName()
1168      */
1169     public final String getEntityCompositePrimaryKeyName()
1170     {
1171         String entityCompositePrimaryKeyName34a = this.__entityCompositePrimaryKeyName34a;
1172         if (!this.__entityCompositePrimaryKeyName34aSet)
1173         {
1174             // entityCompositePrimaryKeyName has no pre constraints
1175             entityCompositePrimaryKeyName34a = handleGetEntityCompositePrimaryKeyName();
1176             // entityCompositePrimaryKeyName has no post constraints
1177             this.__entityCompositePrimaryKeyName34a = entityCompositePrimaryKeyName34a;
1178             if (isMetafacadePropertyCachingEnabled())
1179             {
1180                 this.__entityCompositePrimaryKeyName34aSet = true;
1181             }
1182         }
1183         return entityCompositePrimaryKeyName34a;
1184     }
1185 
1186    /**
1187     * @see EJB3EntityFacade#isEmbeddableSuperclassGeneralizationExists()
1188     * @return boolean
1189     */
1190     protected abstract boolean handleIsEmbeddableSuperclassGeneralizationExists();
1191 
1192     private boolean __embeddableSuperclassGeneralizationExists35a;
1193     private boolean __embeddableSuperclassGeneralizationExists35aSet = false;
1194 
1195     /**
1196      * Returns true if this entity is a subclass of an mapped/embeddable super class.  You cannot
1197      * have more than 1 level of inheritance using mapped/embeddable super class.  To achieve
1198      * multiple levels, use one of the inheritance mapping strategies like single table, table per
1199      * class or joined table strategies.
1200      * @return (boolean)handleIsEmbeddableSuperclassGeneralizationExists()
1201      */
1202     public final boolean isEmbeddableSuperclassGeneralizationExists()
1203     {
1204         boolean embeddableSuperclassGeneralizationExists35a = this.__embeddableSuperclassGeneralizationExists35a;
1205         if (!this.__embeddableSuperclassGeneralizationExists35aSet)
1206         {
1207             // embeddableSuperclassGeneralizationExists has no pre constraints
1208             embeddableSuperclassGeneralizationExists35a = handleIsEmbeddableSuperclassGeneralizationExists();
1209             // embeddableSuperclassGeneralizationExists has no post constraints
1210             this.__embeddableSuperclassGeneralizationExists35a = embeddableSuperclassGeneralizationExists35a;
1211             if (isMetafacadePropertyCachingEnabled())
1212             {
1213                 this.__embeddableSuperclassGeneralizationExists35aSet = true;
1214             }
1215         }
1216         return embeddableSuperclassGeneralizationExists35a;
1217     }
1218 
1219    /**
1220     * @see EJB3EntityFacade#isListenerEnabled()
1221     * @return boolean
1222     */
1223     protected abstract boolean handleIsListenerEnabled();
1224 
1225     private boolean __listenerEnabled36a;
1226     private boolean __listenerEnabled36aSet = false;
1227 
1228     /**
1229      * Returns true if this entity bean has the stereotype Listener.  False otherwise.
1230      * @return (boolean)handleIsListenerEnabled()
1231      */
1232     public final boolean isListenerEnabled()
1233     {
1234         boolean listenerEnabled36a = this.__listenerEnabled36a;
1235         if (!this.__listenerEnabled36aSet)
1236         {
1237             // listenerEnabled has no pre constraints
1238             listenerEnabled36a = handleIsListenerEnabled();
1239             // listenerEnabled has no post constraints
1240             this.__listenerEnabled36a = listenerEnabled36a;
1241             if (isMetafacadePropertyCachingEnabled())
1242             {
1243                 this.__listenerEnabled36aSet = true;
1244             }
1245         }
1246         return listenerEnabled36a;
1247     }
1248 
1249    /**
1250     * @see EJB3EntityFacade#isFinderFindAllExists()
1251     * @return boolean
1252     */
1253     protected abstract boolean handleIsFinderFindAllExists();
1254 
1255     private boolean __finderFindAllExists37a;
1256     private boolean __finderFindAllExists37aSet = false;
1257 
1258     /**
1259      * Returns true if the findAll finder method (specified as a query method) has been modelled.
1260      * @return (boolean)handleIsFinderFindAllExists()
1261      */
1262     public final boolean isFinderFindAllExists()
1263     {
1264         boolean finderFindAllExists37a = this.__finderFindAllExists37a;
1265         if (!this.__finderFindAllExists37aSet)
1266         {
1267             // finderFindAllExists has no pre constraints
1268             finderFindAllExists37a = handleIsFinderFindAllExists();
1269             // finderFindAllExists has no post constraints
1270             this.__finderFindAllExists37a = finderFindAllExists37a;
1271             if (isMetafacadePropertyCachingEnabled())
1272             {
1273                 this.__finderFindAllExists37aSet = true;
1274             }
1275         }
1276         return finderFindAllExists37a;
1277     }
1278 
1279    /**
1280     * @see EJB3EntityFacade#isFinderFindByPrimaryKeyExists()
1281     * @return boolean
1282     */
1283     protected abstract boolean handleIsFinderFindByPrimaryKeyExists();
1284 
1285     private boolean __finderFindByPrimaryKeyExists38a;
1286     private boolean __finderFindByPrimaryKeyExists38aSet = false;
1287 
1288     /**
1289      * Returns true if the finder findByPrimaryKey has been modelled.
1290      * @return (boolean)handleIsFinderFindByPrimaryKeyExists()
1291      */
1292     public final boolean isFinderFindByPrimaryKeyExists()
1293     {
1294         boolean finderFindByPrimaryKeyExists38a = this.__finderFindByPrimaryKeyExists38a;
1295         if (!this.__finderFindByPrimaryKeyExists38aSet)
1296         {
1297             // finderFindByPrimaryKeyExists has no pre constraints
1298             finderFindByPrimaryKeyExists38a = handleIsFinderFindByPrimaryKeyExists();
1299             // finderFindByPrimaryKeyExists has no post constraints
1300             this.__finderFindByPrimaryKeyExists38a = finderFindByPrimaryKeyExists38a;
1301             if (isMetafacadePropertyCachingEnabled())
1302             {
1303                 this.__finderFindByPrimaryKeyExists38aSet = true;
1304             }
1305         }
1306         return finderFindByPrimaryKeyExists38a;
1307     }
1308 
1309    /**
1310     * @see EJB3EntityFacade#isManageable()
1311     * @return boolean
1312     */
1313     protected abstract boolean handleIsManageable();
1314 
1315     private boolean __manageable39a;
1316     private boolean __manageable39aSet = false;
1317 
1318     /**
1319      * Returns true if this entity is assigned the Manageable stereotype.  False otherwise.
1320      * @return (boolean)handleIsManageable()
1321      */
1322     public final boolean isManageable()
1323     {
1324         boolean manageable39a = this.__manageable39a;
1325         if (!this.__manageable39aSet)
1326         {
1327             // manageable has no pre constraints
1328             manageable39a = handleIsManageable();
1329             // manageable has no post constraints
1330             this.__manageable39a = manageable39a;
1331             if (isMetafacadePropertyCachingEnabled())
1332             {
1333                 this.__manageable39aSet = true;
1334             }
1335         }
1336         return manageable39a;
1337     }
1338 
1339    /**
1340     * @see EJB3EntityFacade#getCacheType()
1341     * @return String
1342     */
1343     protected abstract String handleGetCacheType();
1344 
1345     private String __cacheType40a;
1346     private boolean __cacheType40aSet = false;
1347 
1348     /**
1349      * Provides the cache policy for the entity.
1350      * Posible values are NONE, READ_WRITE, NONSTRICT_READ_WRITE, READ_ONLY, TRANSACTIONAL.
1351      * @return (String)handleGetCacheType()
1352      */
1353     public final String getCacheType()
1354     {
1355         String cacheType40a = this.__cacheType40a;
1356         if (!this.__cacheType40aSet)
1357         {
1358             // cacheType has no pre constraints
1359             cacheType40a = handleGetCacheType();
1360             // cacheType has no post constraints
1361             this.__cacheType40a = cacheType40a;
1362             if (isMetafacadePropertyCachingEnabled())
1363             {
1364                 this.__cacheType40aSet = true;
1365             }
1366         }
1367         return cacheType40a;
1368     }
1369 
1370    /**
1371     * @see EJB3EntityFacade#isCacheEnabled()
1372     * @return boolean
1373     */
1374     protected abstract boolean handleIsCacheEnabled();
1375 
1376     private boolean __cacheEnabled41a;
1377     private boolean __cacheEnabled41aSet = false;
1378 
1379     /**
1380      * Returns true if caching has been enabled via namespace property hibernateEnableCache.
1381      * @return (boolean)handleIsCacheEnabled()
1382      */
1383     public final boolean isCacheEnabled()
1384     {
1385         boolean cacheEnabled41a = this.__cacheEnabled41a;
1386         if (!this.__cacheEnabled41aSet)
1387         {
1388             // cacheEnabled has no pre constraints
1389             cacheEnabled41a = handleIsCacheEnabled();
1390             // cacheEnabled has no post constraints
1391             this.__cacheEnabled41a = cacheEnabled41a;
1392             if (isMetafacadePropertyCachingEnabled())
1393             {
1394                 this.__cacheEnabled41aSet = true;
1395             }
1396         }
1397         return cacheEnabled41a;
1398     }
1399 
1400    /**
1401     * @see EJB3EntityFacade#isUseDefaultCacheRegion()
1402     * @return boolean
1403     */
1404     protected abstract boolean handleIsUseDefaultCacheRegion();
1405 
1406     private boolean __useDefaultCacheRegion42a;
1407     private boolean __useDefaultCacheRegion42aSet = false;
1408 
1409     /**
1410      * Return true if a unique cache region is NOT required for entities and queries.  This means we
1411      * use the default cache region specified by the container.  Specified via the
1412      * useDefaultCacheRegion namepsace property.
1413      * @return (boolean)handleIsUseDefaultCacheRegion()
1414      */
1415     public final boolean isUseDefaultCacheRegion()
1416     {
1417         boolean useDefaultCacheRegion42a = this.__useDefaultCacheRegion42a;
1418         if (!this.__useDefaultCacheRegion42aSet)
1419         {
1420             // useDefaultCacheRegion has no pre constraints
1421             useDefaultCacheRegion42a = handleIsUseDefaultCacheRegion();
1422             // useDefaultCacheRegion has no post constraints
1423             this.__useDefaultCacheRegion42a = useDefaultCacheRegion42a;
1424             if (isMetafacadePropertyCachingEnabled())
1425             {
1426                 this.__useDefaultCacheRegion42aSet = true;
1427             }
1428         }
1429         return useDefaultCacheRegion42a;
1430     }
1431 
1432    /**
1433     * @see EJB3EntityFacade#getDaoName()
1434     * @return String
1435     */
1436     protected abstract String handleGetDaoName();
1437 
1438     private String __daoName43a;
1439     private boolean __daoName43aSet = false;
1440 
1441     /**
1442      * The name of the DAO for the specified entity.
1443      * @return (String)handleGetDaoName()
1444      */
1445     public final String getDaoName()
1446     {
1447         String daoName43a = this.__daoName43a;
1448         if (!this.__daoName43aSet)
1449         {
1450             // daoName has no pre constraints
1451             daoName43a = handleGetDaoName();
1452             // daoName has no post constraints
1453             this.__daoName43a = daoName43a;
1454             if (isMetafacadePropertyCachingEnabled())
1455             {
1456                 this.__daoName43aSet = true;
1457             }
1458         }
1459         return daoName43a;
1460     }
1461 
1462    /**
1463     * @see EJB3EntityFacade#getFullyQualifiedDaoName()
1464     * @return String
1465     */
1466     protected abstract String handleGetFullyQualifiedDaoName();
1467 
1468     private String __fullyQualifiedDaoName44a;
1469     private boolean __fullyQualifiedDaoName44aSet = false;
1470 
1471     /**
1472      * The fully qualified name of the DAO.
1473      * @return (String)handleGetFullyQualifiedDaoName()
1474      */
1475     public final String getFullyQualifiedDaoName()
1476     {
1477         String fullyQualifiedDaoName44a = this.__fullyQualifiedDaoName44a;
1478         if (!this.__fullyQualifiedDaoName44aSet)
1479         {
1480             // fullyQualifiedDaoName has no pre constraints
1481             fullyQualifiedDaoName44a = handleGetFullyQualifiedDaoName();
1482             // fullyQualifiedDaoName has no post constraints
1483             this.__fullyQualifiedDaoName44a = fullyQualifiedDaoName44a;
1484             if (isMetafacadePropertyCachingEnabled())
1485             {
1486                 this.__fullyQualifiedDaoName44aSet = true;
1487             }
1488         }
1489         return fullyQualifiedDaoName44a;
1490     }
1491 
1492    /**
1493     * @see EJB3EntityFacade#getDaoImplementationName()
1494     * @return String
1495     */
1496     protected abstract String handleGetDaoImplementationName();
1497 
1498     private String __daoImplementationName45a;
1499     private boolean __daoImplementationName45aSet = false;
1500 
1501     /**
1502      * The DAO implementation class name.
1503      * @return (String)handleGetDaoImplementationName()
1504      */
1505     public final String getDaoImplementationName()
1506     {
1507         String daoImplementationName45a = this.__daoImplementationName45a;
1508         if (!this.__daoImplementationName45aSet)
1509         {
1510             // daoImplementationName has no pre constraints
1511             daoImplementationName45a = handleGetDaoImplementationName();
1512             // daoImplementationName has no post constraints
1513             this.__daoImplementationName45a = daoImplementationName45a;
1514             if (isMetafacadePropertyCachingEnabled())
1515             {
1516                 this.__daoImplementationName45aSet = true;
1517             }
1518         }
1519         return daoImplementationName45a;
1520     }
1521 
1522    /**
1523     * @see EJB3EntityFacade#getFullyQualifiedDaoImplementationName()
1524     * @return String
1525     */
1526     protected abstract String handleGetFullyQualifiedDaoImplementationName();
1527 
1528     private String __fullyQualifiedDaoImplementationName46a;
1529     private boolean __fullyQualifiedDaoImplementationName46aSet = false;
1530 
1531     /**
1532      * The fully qualified name of the DAO implemetation.
1533      * @return (String)handleGetFullyQualifiedDaoImplementationName()
1534      */
1535     public final String getFullyQualifiedDaoImplementationName()
1536     {
1537         String fullyQualifiedDaoImplementationName46a = this.__fullyQualifiedDaoImplementationName46a;
1538         if (!this.__fullyQualifiedDaoImplementationName46aSet)
1539         {
1540             // fullyQualifiedDaoImplementationName has no pre constraints
1541             fullyQualifiedDaoImplementationName46a = handleGetFullyQualifiedDaoImplementationName();
1542             // fullyQualifiedDaoImplementationName has no post constraints
1543             this.__fullyQualifiedDaoImplementationName46a = fullyQualifiedDaoImplementationName46a;
1544             if (isMetafacadePropertyCachingEnabled())
1545             {
1546                 this.__fullyQualifiedDaoImplementationName46aSet = true;
1547             }
1548         }
1549         return fullyQualifiedDaoImplementationName46a;
1550     }
1551 
1552    /**
1553     * @see EJB3EntityFacade#getDaoBaseName()
1554     * @return String
1555     */
1556     protected abstract String handleGetDaoBaseName();
1557 
1558     private String __daoBaseName47a;
1559     private boolean __daoBaseName47aSet = false;
1560 
1561     /**
1562      * The DAO base class name.  This is the abstract DAO that containsCRUD operations as well as
1563      * any generated finders defined on an entity.
1564      * @return (String)handleGetDaoBaseName()
1565      */
1566     public final String getDaoBaseName()
1567     {
1568         String daoBaseName47a = this.__daoBaseName47a;
1569         if (!this.__daoBaseName47aSet)
1570         {
1571             // daoBaseName has no pre constraints
1572             daoBaseName47a = handleGetDaoBaseName();
1573             // daoBaseName has no post constraints
1574             this.__daoBaseName47a = daoBaseName47a;
1575             if (isMetafacadePropertyCachingEnabled())
1576             {
1577                 this.__daoBaseName47aSet = true;
1578             }
1579         }
1580         return daoBaseName47a;
1581     }
1582 
1583    /**
1584     * @see EJB3EntityFacade#getFullyQualifiedDaoBaseName()
1585     * @return String
1586     */
1587     protected abstract String handleGetFullyQualifiedDaoBaseName();
1588 
1589     private String __fullyQualifiedDaoBaseName48a;
1590     private boolean __fullyQualifiedDaoBaseName48aSet = false;
1591 
1592     /**
1593      * The fully qualified name of the base DAO.
1594      * @return (String)handleGetFullyQualifiedDaoBaseName()
1595      */
1596     public final String getFullyQualifiedDaoBaseName()
1597     {
1598         String fullyQualifiedDaoBaseName48a = this.__fullyQualifiedDaoBaseName48a;
1599         if (!this.__fullyQualifiedDaoBaseName48aSet)
1600         {
1601             // fullyQualifiedDaoBaseName has no pre constraints
1602             fullyQualifiedDaoBaseName48a = handleGetFullyQualifiedDaoBaseName();
1603             // fullyQualifiedDaoBaseName has no post constraints
1604             this.__fullyQualifiedDaoBaseName48a = fullyQualifiedDaoBaseName48a;
1605             if (isMetafacadePropertyCachingEnabled())
1606             {
1607                 this.__fullyQualifiedDaoBaseName48aSet = true;
1608             }
1609         }
1610         return fullyQualifiedDaoBaseName48a;
1611     }
1612 
1613    /**
1614     * @see EJB3EntityFacade#isDaoBusinessOperationsPresent()
1615     * @return boolean
1616     */
1617     protected abstract boolean handleIsDaoBusinessOperationsPresent();
1618 
1619     private boolean __daoBusinessOperationsPresent49a;
1620     private boolean __daoBusinessOperationsPresent49aSet = false;
1621 
1622     /**
1623      * Indicates whether or not any business DAO operations are present.
1624      * @return (boolean)handleIsDaoBusinessOperationsPresent()
1625      */
1626     public final boolean isDaoBusinessOperationsPresent()
1627     {
1628         boolean daoBusinessOperationsPresent49a = this.__daoBusinessOperationsPresent49a;
1629         if (!this.__daoBusinessOperationsPresent49aSet)
1630         {
1631             // daoBusinessOperationsPresent has no pre constraints
1632             daoBusinessOperationsPresent49a = handleIsDaoBusinessOperationsPresent();
1633             // daoBusinessOperationsPresent has no post constraints
1634             this.__daoBusinessOperationsPresent49a = daoBusinessOperationsPresent49a;
1635             if (isMetafacadePropertyCachingEnabled())
1636             {
1637                 this.__daoBusinessOperationsPresent49aSet = true;
1638             }
1639         }
1640         return daoBusinessOperationsPresent49a;
1641     }
1642 
1643    /**
1644     * @see EJB3EntityFacade#isDaoImplementationRequired()
1645     * @return boolean
1646     */
1647     protected abstract boolean handleIsDaoImplementationRequired();
1648 
1649     private boolean __daoImplementationRequired50a;
1650     private boolean __daoImplementationRequired50aSet = false;
1651 
1652     /**
1653      * True if an implementation is required for the dao class, this is the case when there are
1654      * business operations or value-object transformation.
1655      * @return (boolean)handleIsDaoImplementationRequired()
1656      */
1657     public final boolean isDaoImplementationRequired()
1658     {
1659         boolean daoImplementationRequired50a = this.__daoImplementationRequired50a;
1660         if (!this.__daoImplementationRequired50aSet)
1661         {
1662             // daoImplementationRequired has no pre constraints
1663             daoImplementationRequired50a = handleIsDaoImplementationRequired();
1664             // daoImplementationRequired has no post constraints
1665             this.__daoImplementationRequired50a = daoImplementationRequired50a;
1666             if (isMetafacadePropertyCachingEnabled())
1667             {
1668                 this.__daoImplementationRequired50aSet = true;
1669             }
1670         }
1671         return daoImplementationRequired50a;
1672     }
1673 
1674    /**
1675     * @see EJB3EntityFacade#getDaoNoTransformationConstantName()
1676     * @return String
1677     */
1678     protected abstract String handleGetDaoNoTransformationConstantName();
1679 
1680     private String __daoNoTransformationConstantName51a;
1681     private boolean __daoNoTransformationConstantName51aSet = false;
1682 
1683     /**
1684      * The constant name denoting no transformation is to be applied.
1685      * @return (String)handleGetDaoNoTransformationConstantName()
1686      */
1687     public final String getDaoNoTransformationConstantName()
1688     {
1689         String daoNoTransformationConstantName51a = this.__daoNoTransformationConstantName51a;
1690         if (!this.__daoNoTransformationConstantName51aSet)
1691         {
1692             // daoNoTransformationConstantName has no pre constraints
1693             daoNoTransformationConstantName51a = handleGetDaoNoTransformationConstantName();
1694             // daoNoTransformationConstantName has no post constraints
1695             this.__daoNoTransformationConstantName51a = daoNoTransformationConstantName51a;
1696             if (isMetafacadePropertyCachingEnabled())
1697             {
1698                 this.__daoNoTransformationConstantName51aSet = true;
1699             }
1700         }
1701         return daoNoTransformationConstantName51a;
1702     }
1703 
1704    /**
1705     * @see EJB3EntityFacade#getDefaultPersistenceContextUnitName()
1706     * @return String
1707     */
1708     protected abstract String handleGetDefaultPersistenceContextUnitName();
1709 
1710     private String __defaultPersistenceContextUnitName52a;
1711     private boolean __defaultPersistenceContextUnitName52aSet = false;
1712 
1713     /**
1714      * Returns the default persistence context unit name for the injected EntityManger for the
1715      * DAO/Manageable service beans.  It is derived from the persistenceContextUnitName namespace
1716      * property.
1717      * @return (String)handleGetDefaultPersistenceContextUnitName()
1718      */
1719     public final String getDefaultPersistenceContextUnitName()
1720     {
1721         String defaultPersistenceContextUnitName52a = this.__defaultPersistenceContextUnitName52a;
1722         if (!this.__defaultPersistenceContextUnitName52aSet)
1723         {
1724             // defaultPersistenceContextUnitName has no pre constraints
1725             defaultPersistenceContextUnitName52a = handleGetDefaultPersistenceContextUnitName();
1726             // defaultPersistenceContextUnitName has no post constraints
1727             this.__defaultPersistenceContextUnitName52a = defaultPersistenceContextUnitName52a;
1728             if (isMetafacadePropertyCachingEnabled())
1729             {
1730                 this.__defaultPersistenceContextUnitName52aSet = true;
1731             }
1732         }
1733         return defaultPersistenceContextUnitName52a;
1734     }
1735 
1736    /**
1737     * @see EJB3EntityFacade#getDaoDefaultExceptionName()
1738     * @return String
1739     */
1740     protected abstract String handleGetDaoDefaultExceptionName();
1741 
1742     private String __daoDefaultExceptionName53a;
1743     private boolean __daoDefaultExceptionName53aSet = false;
1744 
1745     /**
1746      * Returns the default DAO exception name.
1747      * @return (String)handleGetDaoDefaultExceptionName()
1748      */
1749     public final String getDaoDefaultExceptionName()
1750     {
1751         String daoDefaultExceptionName53a = this.__daoDefaultExceptionName53a;
1752         if (!this.__daoDefaultExceptionName53aSet)
1753         {
1754             // daoDefaultExceptionName has no pre constraints
1755             daoDefaultExceptionName53a = handleGetDaoDefaultExceptionName();
1756             // daoDefaultExceptionName has no post constraints
1757             this.__daoDefaultExceptionName53a = daoDefaultExceptionName53a;
1758             if (isMetafacadePropertyCachingEnabled())
1759             {
1760                 this.__daoDefaultExceptionName53aSet = true;
1761             }
1762         }
1763         return daoDefaultExceptionName53a;
1764     }
1765 
1766    /**
1767     * @see EJB3EntityFacade#getFullyQualifiedDaoDefaultExceptionName()
1768     * @return String
1769     */
1770     protected abstract String handleGetFullyQualifiedDaoDefaultExceptionName();
1771 
1772     private String __fullyQualifiedDaoDefaultExceptionName54a;
1773     private boolean __fullyQualifiedDaoDefaultExceptionName54aSet = false;
1774 
1775     /**
1776      * Returns the fully qualified default DAO exception name.
1777      * @return (String)handleGetFullyQualifiedDaoDefaultExceptionName()
1778      */
1779     public final String getFullyQualifiedDaoDefaultExceptionName()
1780     {
1781         String fullyQualifiedDaoDefaultExceptionName54a = this.__fullyQualifiedDaoDefaultExceptionName54a;
1782         if (!this.__fullyQualifiedDaoDefaultExceptionName54aSet)
1783         {
1784             // fullyQualifiedDaoDefaultExceptionName has no pre constraints
1785             fullyQualifiedDaoDefaultExceptionName54a = handleGetFullyQualifiedDaoDefaultExceptionName();
1786             // fullyQualifiedDaoDefaultExceptionName has no post constraints
1787             this.__fullyQualifiedDaoDefaultExceptionName54a = fullyQualifiedDaoDefaultExceptionName54a;
1788             if (isMetafacadePropertyCachingEnabled())
1789             {
1790                 this.__fullyQualifiedDaoDefaultExceptionName54aSet = true;
1791             }
1792         }
1793         return fullyQualifiedDaoDefaultExceptionName54a;
1794     }
1795 
1796    /**
1797     * @see EJB3EntityFacade#isEntityImplementationRequired()
1798     * @return boolean
1799     */
1800     protected abstract boolean handleIsEntityImplementationRequired();
1801 
1802     private boolean __entityImplementationRequired55a;
1803     private boolean __entityImplementationRequired55aSet = false;
1804 
1805     /**
1806      * True if an entity implementation is required for the entity class, this is the case when
1807      * there are business operations.
1808      * @return (boolean)handleIsEntityImplementationRequired()
1809      */
1810     public final boolean isEntityImplementationRequired()
1811     {
1812         boolean entityImplementationRequired55a = this.__entityImplementationRequired55a;
1813         if (!this.__entityImplementationRequired55aSet)
1814         {
1815             // entityImplementationRequired has no pre constraints
1816             entityImplementationRequired55a = handleIsEntityImplementationRequired();
1817             // entityImplementationRequired has no post constraints
1818             this.__entityImplementationRequired55a = entityImplementationRequired55a;
1819             if (isMetafacadePropertyCachingEnabled())
1820             {
1821                 this.__entityImplementationRequired55aSet = true;
1822             }
1823         }
1824         return entityImplementationRequired55a;
1825     }
1826 
1827    /**
1828     * @see EJB3EntityFacade#isSecurityEnabled()
1829     * @return boolean
1830     */
1831     protected abstract boolean handleIsSecurityEnabled();
1832 
1833     private boolean __securityEnabled56a;
1834     private boolean __securityEnabled56aSet = false;
1835 
1836     /**
1837      * Returns true if the security realm is specified.  This will generate the security setting for
1838      * the DAO components.
1839      * @return (boolean)handleIsSecurityEnabled()
1840      */
1841     public final boolean isSecurityEnabled()
1842     {
1843         boolean securityEnabled56a = this.__securityEnabled56a;
1844         if (!this.__securityEnabled56aSet)
1845         {
1846             // securityEnabled has no pre constraints
1847             securityEnabled56a = handleIsSecurityEnabled();
1848             // securityEnabled has no post constraints
1849             this.__securityEnabled56a = securityEnabled56a;
1850             if (isMetafacadePropertyCachingEnabled())
1851             {
1852                 this.__securityEnabled56aSet = true;
1853             }
1854         }
1855         return securityEnabled56a;
1856     }
1857 
1858    /**
1859     * @see EJB3EntityFacade#getRolesAllowed()
1860     * @return String
1861     */
1862     protected abstract String handleGetRolesAllowed();
1863 
1864     private String __rolesAllowed57a;
1865     private boolean __rolesAllowed57aSet = false;
1866 
1867     /**
1868      * Returns the comma separated list of roles allowd to execute DAO operations.  This is defined
1869      * by actor dependencies on the entity.
1870      * @return (String)handleGetRolesAllowed()
1871      */
1872     public final String getRolesAllowed()
1873     {
1874         String rolesAllowed57a = this.__rolesAllowed57a;
1875         if (!this.__rolesAllowed57aSet)
1876         {
1877             // rolesAllowed has no pre constraints
1878             rolesAllowed57a = handleGetRolesAllowed();
1879             // rolesAllowed has no post constraints
1880             this.__rolesAllowed57a = rolesAllowed57a;
1881             if (isMetafacadePropertyCachingEnabled())
1882             {
1883                 this.__rolesAllowed57aSet = true;
1884             }
1885         }
1886         return rolesAllowed57a;
1887     }
1888 
1889    /**
1890     * @see EJB3EntityFacade#getSecurityRealm()
1891     * @return String
1892     */
1893     protected abstract String handleGetSecurityRealm();
1894 
1895     private String __securityRealm58a;
1896     private boolean __securityRealm58aSet = false;
1897 
1898     /**
1899      * Returns the security domain value.  Specified using the securityRealm namespace property or
1900      * overridden in the andromda.ejb.security.realm tagged value.
1901      * @return (String)handleGetSecurityRealm()
1902      */
1903     public final String getSecurityRealm()
1904     {
1905         String securityRealm58a = this.__securityRealm58a;
1906         if (!this.__securityRealm58aSet)
1907         {
1908             // securityRealm has no pre constraints
1909             securityRealm58a = handleGetSecurityRealm();
1910             // securityRealm has no post constraints
1911             this.__securityRealm58a = securityRealm58a;
1912             if (isMetafacadePropertyCachingEnabled())
1913             {
1914                 this.__securityRealm58aSet = true;
1915             }
1916         }
1917         return securityRealm58a;
1918     }
1919 
1920    /**
1921     * @see EJB3EntityFacade#isUseQueryCache()
1922     * @return boolean
1923     */
1924     protected abstract boolean handleIsUseQueryCache();
1925 
1926     private boolean __useQueryCache59a;
1927     private boolean __useQueryCache59aSet = false;
1928 
1929     /**
1930      * Returns true if the application wide namespace property hibernateUseQueryCache is enabled. 
1931      * This is used for generic finder methods i.e. findAll.
1932      * @return (boolean)handleIsUseQueryCache()
1933      */
1934     public final boolean isUseQueryCache()
1935     {
1936         boolean useQueryCache59a = this.__useQueryCache59a;
1937         if (!this.__useQueryCache59aSet)
1938         {
1939             // useQueryCache has no pre constraints
1940             useQueryCache59a = handleIsUseQueryCache();
1941             // useQueryCache has no post constraints
1942             this.__useQueryCache59a = useQueryCache59a;
1943             if (isMetafacadePropertyCachingEnabled())
1944             {
1945                 this.__useQueryCache59aSet = true;
1946             }
1947         }
1948         return useQueryCache59a;
1949     }
1950 
1951    /**
1952     * @see EJB3EntityFacade#isSeamComponent()
1953     * @return boolean
1954     */
1955     protected abstract boolean handleIsSeamComponent();
1956 
1957     private boolean __seamComponent60a;
1958     private boolean __seamComponent60aSet = false;
1959 
1960     /**
1961      * Returns true if this entity has the <<Seam>> stereotype modelled indicating it is a Seam
1962      * entity component.
1963      * @return (boolean)handleIsSeamComponent()
1964      */
1965     public final boolean isSeamComponent()
1966     {
1967         boolean seamComponent60a = this.__seamComponent60a;
1968         if (!this.__seamComponent60aSet)
1969         {
1970             // seamComponent has no pre constraints
1971             seamComponent60a = handleIsSeamComponent();
1972             // seamComponent has no post constraints
1973             this.__seamComponent60a = seamComponent60a;
1974             if (isMetafacadePropertyCachingEnabled())
1975             {
1976                 this.__seamComponent60aSet = true;
1977             }
1978         }
1979         return seamComponent60a;
1980     }
1981 
1982    /**
1983     * @see EJB3EntityFacade#getSeamComponentScopeType()
1984     * @return String
1985     */
1986     protected abstract String handleGetSeamComponentScopeType();
1987 
1988     private String __seamComponentScopeType61a;
1989     private boolean __seamComponentScopeType61aSet = false;
1990 
1991     /**
1992      * Returns the seam component scope type if one is specified.
1993      * @return (String)handleGetSeamComponentScopeType()
1994      */
1995     public final String getSeamComponentScopeType()
1996     {
1997         String seamComponentScopeType61a = this.__seamComponentScopeType61a;
1998         if (!this.__seamComponentScopeType61aSet)
1999         {
2000             // seamComponentScopeType has no pre constraints
2001             seamComponentScopeType61a = handleGetSeamComponentScopeType();
2002             // seamComponentScopeType has no post constraints
2003             this.__seamComponentScopeType61a = seamComponentScopeType61a;
2004             if (isMetafacadePropertyCachingEnabled())
2005             {
2006                 this.__seamComponentScopeType61aSet = true;
2007             }
2008         }
2009         return seamComponentScopeType61a;
2010     }
2011 
2012    /**
2013     * @see EJB3EntityFacade#getSeamComponentName()
2014     * @return String
2015     */
2016     protected abstract String handleGetSeamComponentName();
2017 
2018     private String __seamComponentName62a;
2019     private boolean __seamComponentName62aSet = false;
2020 
2021     /**
2022      * Returns the Seam component name for the class.
2023      * @return (String)handleGetSeamComponentName()
2024      */
2025     public final String getSeamComponentName()
2026     {
2027         String seamComponentName62a = this.__seamComponentName62a;
2028         if (!this.__seamComponentName62aSet)
2029         {
2030             // seamComponentName has no pre constraints
2031             seamComponentName62a = handleGetSeamComponentName();
2032             // seamComponentName has no post constraints
2033             this.__seamComponentName62a = seamComponentName62a;
2034             if (isMetafacadePropertyCachingEnabled())
2035             {
2036                 this.__seamComponentName62aSet = true;
2037             }
2038         }
2039         return seamComponentName62a;
2040     }
2041 
2042     // ---------------- business methods ----------------------
2043 
2044     /**
2045      * Method to be implemented in descendants
2046      * Gets create methods for the entity.  If 'follow'l is set to true, create methods from any
2047      * super types will also be retrieved by following up the inheritance chain.
2048      * @param follow
2049      * @return Collection
2050      */
2051     protected abstract Collection handleGetCreateMethods(boolean follow);
2052 
2053     /**
2054      * Gets create methods for the entity.  If 'follow'l is set to true, create methods from any
2055      * super types will also be retrieved by following up the inheritance chain.
2056      * @param follow boolean
2057      * If true, all create methods will be returned from the inheritance hierarchy, false otherwise.
2058      * @return handleGetCreateMethods(follow)
2059      */
2060     public Collection getCreateMethods(boolean follow)
2061     {
2062         // getCreateMethods has no pre constraints
2063         Collection returnValue = handleGetCreateMethods(follow);
2064         // getCreateMethods has no post constraints
2065         return returnValue;
2066     }
2067 
2068     /**
2069      * Method to be implemented in descendants
2070      * Gets select methods for the entity, if all is set to 'true' then ALL select methods will be
2071      * retrieved (including those inherited from any superclasses).
2072      * @param follow
2073      * @return Collection
2074      */
2075     protected abstract Collection handleGetSelectMethods(boolean follow);
2076 
2077     /**
2078      * Gets select methods for the entity, if all is set to 'true' then ALL select methods will be
2079      * retrieved (including those inherited from any superclasses).
2080      * @param follow boolean
2081      * If set to true, then all select methods including those in its superclass will be retrieved.
2082      * @return handleGetSelectMethods(follow)
2083      */
2084     public Collection getSelectMethods(boolean follow)
2085     {
2086         // getSelectMethods has no pre constraints
2087         Collection returnValue = handleGetSelectMethods(follow);
2088         // getSelectMethods has no post constraints
2089         return returnValue;
2090     }
2091 
2092     /**
2093      * Method to be implemented in descendants
2094      * Gets all env-entries for the specified entity EJB. Env-entries are stored as static
2095      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
2096      * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
2097      * types as well.
2098      * @param follow
2099      * @return Collection
2100      */
2101     protected abstract Collection handleGetEnvironmentEntries(boolean follow);
2102 
2103     /**
2104      * Gets all env-entries for the specified entity EJB. Env-entries are stored as static
2105      * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
2106      * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
2107      * types as well.
2108      * @param follow boolean
2109      * If true, then the inheritance hierarchy will be followed and we'll retrieve all env-entries
2110      * from any super types as well.
2111      * @return handleGetEnvironmentEntries(follow)
2112      */
2113     public Collection getEnvironmentEntries(boolean follow)
2114     {
2115         // getEnvironmentEntries has no pre constraints
2116         Collection returnValue = handleGetEnvironmentEntries(follow);
2117         // getEnvironmentEntries has no post constraints
2118         return returnValue;
2119     }
2120 
2121     /**
2122      * Method to be implemented in descendants
2123      * Gets all constants for this entity. Constants are defined as static read-only attributes
2124      * which do NOT have the <<EnvEntry>> stereotype.   If 'follow' is true, then the inheritance
2125      * hierarchy will be followed and we'll retrieve all constants from any super types as well.
2126      * @param follow
2127      * @return Collection
2128      */
2129     protected abstract Collection handleGetConstants(boolean follow);
2130 
2131     /**
2132      * Gets all constants for this entity. Constants are defined as static read-only attributes
2133      * which do NOT have the <<EnvEntry>> stereotype.   If 'follow' is true, then the inheritance
2134      * hierarchy will be followed and we'll retrieve all constants from any super types as well.
2135      * @param follow boolean
2136      * If true, then the inheritance hierarchy will be followed and we'll retrieve all constants
2137      * from any super types as well.
2138      * @return handleGetConstants(follow)
2139      */
2140     public Collection getConstants(boolean follow)
2141     {
2142         // getConstants has no pre constraints
2143         Collection returnValue = handleGetConstants(follow);
2144         // getConstants has no post constraints
2145         return returnValue;
2146     }
2147 
2148     /**
2149      * Method to be implemented in descendants
2150      * If the operation op is present
2151      * @param op
2152      * @return boolean
2153      */
2154     protected abstract boolean handleIsOperationPresent(String op);
2155 
2156     /**
2157      * If the operation op is present
2158      * @param op String
2159      * TODO: Model Documentation for
2160      * EJB3EntityFacade.isOperationPresent(op)
2161      * @return handleIsOperationPresent(op)
2162      */
2163     public boolean isOperationPresent(String op)
2164     {
2165         // isOperationPresent has no pre constraints
2166         boolean returnValue = handleIsOperationPresent(op);
2167         // isOperationPresent has no post constraints
2168         return returnValue;
2169     }
2170 
2171     /**
2172      * Method to be implemented in descendants
2173      * If the attribute att is present
2174      * @param att
2175      * @return boolean
2176      */
2177     protected abstract boolean handleIsAttributePresent(String att);
2178 
2179     /**
2180      * If the attribute att is present
2181      * @param att String
2182      * TODO: Model Documentation for
2183      * EJB3EntityFacade.isAttributePresent(att)
2184      * @return handleIsAttributePresent(att)
2185      */
2186     public boolean isAttributePresent(String att)
2187     {
2188         // isAttributePresent has no pre constraints
2189         boolean returnValue = handleIsAttributePresent(att);
2190         // isAttributePresent has no post constraints
2191         return returnValue;
2192     }
2193 
2194     /**
2195      * Method to be implemented in descendants
2196      * If the identifier id is present
2197      * @param id
2198      * @return boolean
2199      */
2200     protected abstract boolean handleIsIdentifierPresent(String id);
2201 
2202     /**
2203      * If the identifier id is present
2204      * @param id String
2205      * TODO: Model Documentation for
2206      * EJB3EntityFacade.isIdentifierPresent(id)
2207      * @return handleIsIdentifierPresent(id)
2208      */
2209     public boolean isIdentifierPresent(String id)
2210     {
2211         // isIdentifierPresent has no pre constraints
2212         boolean returnValue = handleIsIdentifierPresent(id);
2213         // isIdentifierPresent has no post constraints
2214         return returnValue;
2215     }
2216 
2217     /**
2218      * Method to be implemented in descendants
2219      * Gets the SQL Mappings from the SQLMappings URI
2220      * @return String
2221      */
2222     protected abstract String handleGetSqlType();
2223 
2224     /**
2225      * Gets the SQL Mappings from the SQLMappings URI
2226      * @return handleGetSqlType()
2227      */
2228     public String getSqlType()
2229     {
2230         // getSqlType has no pre constraints
2231         String returnValue = handleGetSqlType();
2232         // getSqlType has no post constraints
2233         return returnValue;
2234     }
2235 
2236     /**
2237      * Method to be implemented in descendants
2238      * Create a comma separated list of attributes. This method can be used to generate argument
2239      * lists for constructors, method calls etc. It will not return attributes tagged to be
2240      * optimistic lock values.  It will consider LOB attributes where the LOB type has been
2241      * overridden using the @androma.persistence.lob.type tagged value.
2242      * @param attributes
2243      * @param includeTypes
2244      * @param includeNames
2245      * @param includeAutoIdentifiers
2246      * @return String
2247      */
2248     protected abstract String handleGetAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames, boolean includeAutoIdentifiers);
2249 
2250     /**
2251      * Create a comma separated list of attributes. This method can be used to generate argument
2252      * lists for constructors, method calls etc. It will not return attributes tagged to be
2253      * optimistic lock values.  It will consider LOB attributes where the LOB type has been
2254      * overridden using the @androma.persistence.lob.type tagged value.
2255      * @param attributes Collection
2256      * a collection of {@link Attribute} objects
2257      * @param includeTypes boolean
2258      * if <code>true</code>, the type names of the attributes are included.
2259      * @param includeNames boolean
2260      * if <code>true</code>, the names of the attributes are included
2261      * @param includeAutoIdentifiers boolean
2262      * Whether to include identifier attributes.
2263      * @return handleGetAttributesAsList(attributes, includeTypes, includeNames, includeAutoIdentifiers)
2264      */
2265     public String getAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames, boolean includeAutoIdentifiers)
2266     {
2267         // getAttributesAsList has no pre constraints
2268         String returnValue = handleGetAttributesAsList(attributes, includeTypes, includeNames, includeAutoIdentifiers);
2269         // getAttributesAsList has no post constraints
2270         return returnValue;
2271     }
2272 
2273     /**
2274      * Method to be implemented in descendants
2275      * Retrieves the values object references for this entity.  If <code>follow</code> is true, then
2276      * all value object references (including those that were inherited) will be retrieved.
2277      * @param follow
2278      * @return Collection
2279      */
2280     protected abstract Collection handleGetValueObjectReferences(boolean follow);
2281 
2282     /**
2283      * Retrieves the values object references for this entity.  If <code>follow</code> is true, then
2284      * all value object references (including those that were inherited) will be retrieved.
2285      * @param follow boolean
2286      * TODO: Model Documentation for
2287      * EJB3EntityFacade.getValueObjectReferences(follow)
2288      * @return handleGetValueObjectReferences(follow)
2289      */
2290     public Collection getValueObjectReferences(boolean follow)
2291     {
2292         // getValueObjectReferences has no pre constraints
2293         Collection returnValue = handleGetValueObjectReferences(follow);
2294         // getValueObjectReferences has no post constraints
2295         return returnValue;
2296     }
2297 
2298     /**
2299      * Method to be implemented in descendants
2300      * Gets all instance attributes of the entity, and optionally retieves the super entities
2301      * instance attributes as well as excludes the entity's identifiers if 'withIdentifiers' is set
2302      * to false.
2303      * @param follow
2304      * @param withIdentifiers
2305      * @return Collection
2306      */
2307     protected abstract Collection handleGetInstanceAttributes(boolean follow, boolean withIdentifiers);
2308 
2309     /**
2310      * Gets all instance attributes of the entity, and optionally retieves the super entities
2311      * instance attributes as well as excludes the entity's identifiers if 'withIdentifiers' is set
2312      * to false.
2313      * @param follow boolean
2314      * Whether or not to follow the inheritance hierarchy when retrieving the attributes.
2315      * @param withIdentifiers boolean
2316      * Whether or not to include identifiers in the returned attributes.
2317      * @return handleGetInstanceAttributes(follow, withIdentifiers)
2318      */
2319     public Collection getInstanceAttributes(boolean follow, boolean withIdentifiers)
2320     {
2321         // getInstanceAttributes has no pre constraints
2322         Collection returnValue = handleGetInstanceAttributes(follow, withIdentifiers);
2323         // getInstanceAttributes has no post constraints
2324         return returnValue;
2325     }
2326 
2327     /**
2328      * Method to be implemented in descendants
2329      * Gets a comma separated list of instance attribute names.  If 'follow' is true, will travel up
2330      * the inheritance hierarchy to include instance attributes in parent entities as well.  If
2331      * 'withIdentifiers' is true, will include identifiers.
2332      * @param follow
2333      * @param withIdentifiers
2334      * @return String
2335      */
2336     protected abstract String handleGetInstanceAttributeNameList(boolean follow, boolean withIdentifiers);
2337 
2338     /**
2339      * Gets a comma separated list of instance attribute names.  If 'follow' is true, will travel up
2340      * the inheritance hierarchy to include instance attributes in parent entities as well.  If
2341      * 'withIdentifiers' is true, will include identifiers.
2342      * @param follow boolean
2343      * Whether or not to 'follow' the inheritance hierarchy.
2344      * @param withIdentifiers boolean
2345      * Whether or not to include identifiers in the returned attributes.
2346      * @return handleGetInstanceAttributeNameList(follow, withIdentifiers)
2347      */
2348     public String getInstanceAttributeNameList(boolean follow, boolean withIdentifiers)
2349     {
2350         // getInstanceAttributeNameList has no pre constraints
2351         String returnValue = handleGetInstanceAttributeNameList(follow, withIdentifiers);
2352         // getInstanceAttributeNameList has no post constraints
2353         return returnValue;
2354     }
2355 
2356     /**
2357      * Method to be implemented in descendants
2358      * Gets a comma separated list of instance attribute types.  If 'follow' is true, will travel up
2359      * the inheritance hierarchy to include instance attribute types in parent entities as well.  If
2360      * 'withIdentifiers' is true, will include identifiers.
2361      * @param follow
2362      * @param withIdentifiers
2363      * @return String
2364      */
2365     protected abstract String handleGetInstanceAttributeTypeList(boolean follow, boolean withIdentifiers);
2366 
2367     /**
2368      * Gets a comma separated list of instance attribute types.  If 'follow' is true, will travel up
2369      * the inheritance hierarchy to include instance attribute types in parent entities as well.  If
2370      * 'withIdentifiers' is true, will include identifiers.
2371      * @param follow boolean
2372      * Whether or not to 'follow' the inheritance hierarchy.
2373      * @param withIdentifiers boolean
2374      * Whether or not to include identifiers.
2375      * @return handleGetInstanceAttributeTypeList(follow, withIdentifiers)
2376      */
2377     public String getInstanceAttributeTypeList(boolean follow, boolean withIdentifiers)
2378     {
2379         // getInstanceAttributeTypeList has no pre constraints
2380         String returnValue = handleGetInstanceAttributeTypeList(follow, withIdentifiers);
2381         // getInstanceAttributeTypeList has no post constraints
2382         return returnValue;
2383     }
2384 
2385     // ------------- associations ------------------
2386 
2387     private EJB3EntityFacade __getRoot1r;
2388     private boolean __getRoot1rSet = false;
2389 
2390     /**
2391      * Represents an entity EJB.
2392      * @return (EJB3EntityFacade)handleGetRoot()
2393      */
2394     public final EJB3EntityFacade getRoot()
2395     {
2396         EJB3EntityFacade getRoot1r = this.__getRoot1r;
2397         if (!this.__getRoot1rSet)
2398         {
2399             // eJB3EntityFacade has no pre constraints
2400             Object result = handleGetRoot();
2401             MetafacadeBase shieldedResult = this.shieldedElement(result);
2402             try
2403             {
2404                 getRoot1r = (EJB3EntityFacade)shieldedResult;
2405             }
2406             catch (ClassCastException ex)
2407             {
2408                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2409                 EJB3EntityFacadeLogic.logger.warn("incorrect metafacade cast for EJB3EntityFacadeLogic.getRoot EJB3EntityFacade " + result + ": " + shieldedResult);
2410             }
2411             // eJB3EntityFacade has no post constraints
2412             this.__getRoot1r = getRoot1r;
2413             if (isMetafacadePropertyCachingEnabled())
2414             {
2415                 this.__getRoot1rSet = true;
2416             }
2417         }
2418         return getRoot1r;
2419     }
2420 
2421     /**
2422      * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type
2423      * @return Object
2424      */
2425     protected abstract Object handleGetRoot();
2426 
2427     /**
2428      * Represents an entity EJB.
2429      * @return (Collection<DependencyFacade>)handleGetValueObjectReferences()
2430      */
2431     public final Collection<DependencyFacade> getValueObjectReferences()
2432     {
2433         Collection<DependencyFacade> getValueObjectReferences2r = null;
2434         // eJB3EntityFacade has no pre constraints
2435         Collection result = handleGetValueObjectReferences();
2436         List shieldedResult = this.shieldedElements(result);
2437         try
2438         {
2439             getValueObjectReferences2r = (Collection<DependencyFacade>)shieldedResult;
2440         }
2441         catch (ClassCastException ex)
2442         {
2443             // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2444             EJB3EntityFacadeLogic.logger.warn("incorrect metafacade cast for EJB3EntityFacadeLogic.getValueObjectReferences Collection<DependencyFacade> " + result + ": " + shieldedResult);
2445         }
2446         // eJB3EntityFacade has no post constraints
2447         return getValueObjectReferences2r;
2448     }
2449 
2450     /**
2451      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
2452      * @return  Collection
2453      */
2454     protected abstract Collection handleGetValueObjectReferences();
2455 
2456     /**
2457      * Represents an entity EJB.
2458      * @return (AttributeFacade)handleGetManageableDisplayAttribute()
2459      */
2460     public final AttributeFacade getManageableDisplayAttribute()
2461     {
2462         AttributeFacade getManageableDisplayAttribute3r = null;
2463         // eJB3EntityFacade has no pre constraints
2464         Object result = handleGetManageableDisplayAttribute();
2465         MetafacadeBase shieldedResult = this.shieldedElement(result);
2466         try
2467         {
2468             getManageableDisplayAttribute3r = (AttributeFacade)shieldedResult;
2469         }
2470         catch (ClassCastException ex)
2471         {
2472             // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2473             EJB3EntityFacadeLogic.logger.warn("incorrect metafacade cast for EJB3EntityFacadeLogic.getManageableDisplayAttribute AttributeFacade " + result + ": " + shieldedResult);
2474         }
2475         // eJB3EntityFacade has no post constraints
2476         return getManageableDisplayAttribute3r;
2477     }
2478 
2479     /**
2480      * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type
2481      * @return Object
2482      */
2483     protected abstract Object handleGetManageableDisplayAttribute();
2484 
2485     /**
2486      * Represents an entity EJB.
2487      * @return (Collection<DependencyFacade>)handleGetAllValueObjectReferences()
2488      */
2489     public final Collection<DependencyFacade> getAllValueObjectReferences()
2490     {
2491         Collection<DependencyFacade> getAllValueObjectReferences4r = null;
2492         // eJB3EntityFacade has no pre constraints
2493         Collection result = handleGetAllValueObjectReferences();
2494         List shieldedResult = this.shieldedElements(result);
2495         try
2496         {
2497             getAllValueObjectReferences4r = (Collection<DependencyFacade>)shieldedResult;
2498         }
2499         catch (ClassCastException ex)
2500         {
2501             // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2502             EJB3EntityFacadeLogic.logger.warn("incorrect metafacade cast for EJB3EntityFacadeLogic.getAllValueObjectReferences Collection<DependencyFacade> " + result + ": " + shieldedResult);
2503         }
2504         // eJB3EntityFacade has no post constraints
2505         return getAllValueObjectReferences4r;
2506     }
2507 
2508     /**
2509      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
2510      * @return  Collection
2511      */
2512     protected abstract Collection handleGetAllValueObjectReferences();
2513 
2514     private Collection<EJB3OperationFacade> __getDaoBusinessOperations5r;
2515     private boolean __getDaoBusinessOperations5rSet = false;
2516 
2517     /**
2518      * Represents an entity EJB.
2519      * @return (Collection<EJB3OperationFacade>)handleGetDaoBusinessOperations()
2520      */
2521     public final Collection<EJB3OperationFacade> getDaoBusinessOperations()
2522     {
2523         Collection<EJB3OperationFacade> getDaoBusinessOperations5r = this.__getDaoBusinessOperations5r;
2524         if (!this.__getDaoBusinessOperations5rSet)
2525         {
2526             // eJB3EntityFacade has no pre constraints
2527             Collection result = handleGetDaoBusinessOperations();
2528             List shieldedResult = this.shieldedElements(result);
2529             try
2530             {
2531                 getDaoBusinessOperations5r = (Collection<EJB3OperationFacade>)shieldedResult;
2532             }
2533             catch (ClassCastException ex)
2534             {
2535                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2536                 EJB3EntityFacadeLogic.logger.warn("incorrect metafacade cast for EJB3EntityFacadeLogic.getDaoBusinessOperations Collection<EJB3OperationFacade> " + result + ": " + shieldedResult);
2537             }
2538             // eJB3EntityFacade has no post constraints
2539             this.__getDaoBusinessOperations5r = getDaoBusinessOperations5r;
2540             if (isMetafacadePropertyCachingEnabled())
2541             {
2542                 this.__getDaoBusinessOperations5rSet = true;
2543             }
2544         }
2545         return getDaoBusinessOperations5r;
2546     }
2547 
2548     /**
2549      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
2550      * @return  Collection
2551      */
2552     protected abstract Collection handleGetDaoBusinessOperations();
2553 
2554     /**
2555      * Represents an entity EJB.
2556      * @return (Collection<Role>)handleGetNonRunAsRoles()
2557      */
2558     public final Collection<Role> getNonRunAsRoles()
2559     {
2560         Collection<Role> getNonRunAsRoles6r = null;
2561         // eJB3EntityFacade has no pre constraints
2562         Collection result = handleGetNonRunAsRoles();
2563         List shieldedResult = this.shieldedElements(result);
2564         try
2565         {
2566             getNonRunAsRoles6r = (Collection<Role>)shieldedResult;
2567         }
2568         catch (ClassCastException ex)
2569         {
2570             // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2571             EJB3EntityFacadeLogic.logger.warn("incorrect metafacade cast for EJB3EntityFacadeLogic.getNonRunAsRoles Collection<Role> " + result + ": " + shieldedResult);
2572         }
2573         // eJB3EntityFacade has no post constraints
2574         return getNonRunAsRoles6r;
2575     }
2576 
2577     /**
2578      * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
2579      * @return  Collection
2580      */
2581     protected abstract Collection handleGetNonRunAsRoles();
2582 
2583     private ModelElementFacade __getIdentifier7r;
2584     private boolean __getIdentifier7rSet = false;
2585 
2586     /**
2587      * Represents an entity EJB.
2588      * @return (ModelElementFacade)handleGetIdentifier()
2589      */
2590     public final ModelElementFacade getIdentifier()
2591     {
2592         ModelElementFacade getIdentifier7r = this.__getIdentifier7r;
2593         if (!this.__getIdentifier7rSet)
2594         {
2595             // eJB3EntityFacade has no pre constraints
2596             Object result = handleGetIdentifier();
2597             MetafacadeBase shieldedResult = this.shieldedElement(result);
2598             try
2599             {
2600                 getIdentifier7r = (ModelElementFacade)shieldedResult;
2601             }
2602             catch (ClassCastException ex)
2603             {
2604                 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
2605                 EJB3EntityFacadeLogic.logger.warn("incorrect metafacade cast for EJB3EntityFacadeLogic.getIdentifier ModelElementFacade " + result + ": " + shieldedResult);
2606             }
2607             // eJB3EntityFacade has no post constraints
2608             this.__getIdentifier7r = getIdentifier7r;
2609             if (isMetafacadePropertyCachingEnabled())
2610             {
2611                 this.__getIdentifier7rSet = true;
2612             }
2613         }
2614         return getIdentifier7r;
2615     }
2616 
2617     /**
2618      * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type
2619      * @return Object
2620      */
2621     protected abstract Object handleGetIdentifier();
2622 
2623     /**
2624      * @return true
2625      * @see Entity
2626      */
2627     public boolean isEntityMetaType()
2628     {
2629         return true;
2630     }
2631 
2632     /**
2633      * @return true
2634      * @see ClassifierFacade
2635      */
2636     public boolean isClassifierFacadeMetaType()
2637     {
2638         return true;
2639     }
2640 
2641     /**
2642      * @return true
2643      * @see GeneralizableElementFacade
2644      */
2645     public boolean isGeneralizableElementFacadeMetaType()
2646     {
2647         return true;
2648     }
2649 
2650     /**
2651      * @return true
2652      * @see ModelElementFacade
2653      */
2654     public boolean isModelElementFacadeMetaType()
2655     {
2656         return true;
2657     }
2658 
2659     // ----------- delegates to Entity ------------
2660     /**
2661      * Return the attribute which name matches the parameter
2662      * @see ClassifierFacade#findAttribute(String name)
2663      */
2664     public AttributeFacade findAttribute(String name)
2665     {
2666         return this.getSuperEntity().findAttribute(name);
2667     }
2668 
2669     /**
2670      * Those abstraction dependencies for which this classifier is the client.
2671      * @see ClassifierFacade#getAbstractions()
2672      */
2673     public Collection<ClassifierFacade> getAbstractions()
2674     {
2675         return this.getSuperEntity().getAbstractions();
2676     }
2677 
2678     /**
2679      * Lists all classes associated to this one and any ancestor classes (through generalization).
2680      * There will be no duplicates. The order of the elements is predictable.
2681      * @see ClassifierFacade#getAllAssociatedClasses()
2682      */
2683     public Collection<ClassifierFacade> getAllAssociatedClasses()
2684     {
2685         return this.getSuperEntity().getAllAssociatedClasses();
2686     }
2687 
2688     /**
2689      * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
2690      * any attributes and navigable connecting association ends.
2691      * @see ClassifierFacade#getAllProperties()
2692      */
2693     public Collection<ModelElementFacade> getAllProperties()
2694     {
2695         return this.getSuperEntity().getAllProperties();
2696     }
2697 
2698     /**
2699      * A collection containing all required and/or read-only 'properties' of the classifier and its
2700      * ancestors. Properties are any attributes and navigable connecting association ends.
2701      * @see ClassifierFacade#getAllRequiredConstructorParameters()
2702      */
2703     public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
2704     {
2705         return this.getSuperEntity().getAllRequiredConstructorParameters();
2706     }
2707 
2708     /**
2709      * Gets the array type for this classifier.  If this classifier already represents an array, it
2710      * just returns itself.
2711      * @see ClassifierFacade#getArray()
2712      */
2713     public ClassifierFacade getArray()
2714     {
2715         return this.getSuperEntity().getArray();
2716     }
2717 
2718     /**
2719      * The name of the classifier as an array.
2720      * @see ClassifierFacade#getArrayName()
2721      */
2722     public String getArrayName()
2723     {
2724         return this.getSuperEntity().getArrayName();
2725     }
2726 
2727     /**
2728      * Lists the classes associated to this one, there is no repitition of classes. The order of the
2729      * elements is predictable.
2730      * @see ClassifierFacade#getAssociatedClasses()
2731      */
2732     public Collection<ClassifierFacade> getAssociatedClasses()
2733     {
2734         return this.getSuperEntity().getAssociatedClasses();
2735     }
2736 
2737     /**
2738      * Gets the association ends belonging to a classifier.
2739      * @see ClassifierFacade#getAssociationEnds()
2740      */
2741     public List<AssociationEndFacade> getAssociationEnds()
2742     {
2743         return this.getSuperEntity().getAssociationEnds();
2744     }
2745 
2746     /**
2747      * Gets the attributes that belong to the classifier.
2748      * @see ClassifierFacade#getAttributes()
2749      */
2750     public List<AttributeFacade> getAttributes()
2751     {
2752         return this.getSuperEntity().getAttributes();
2753     }
2754 
2755     /**
2756      * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
2757      * hierarchy and gets the attributes from the super classes as well.
2758      * @see ClassifierFacade#getAttributes(boolean follow)
2759      */
2760     public List<AttributeFacade> getAttributes(boolean follow)
2761     {
2762         return this.getSuperEntity().getAttributes(follow);
2763     }
2764 
2765     /**
2766      * The fully qualified name of the classifier as an array.
2767      * @see ClassifierFacade#getFullyQualifiedArrayName()
2768      */
2769     public String getFullyQualifiedArrayName()
2770     {
2771         return this.getSuperEntity().getFullyQualifiedArrayName();
2772     }
2773 
2774     /**
2775      * Returns all those operations that could be implemented at this classifier's level. This means
2776      * the operations owned by this classifier as well as any realized interface's operations
2777      * (recursively) in case this classifier itself is not already an interface, or generalized when
2778      * this classifier is an interface.
2779      * @see ClassifierFacade#getImplementationOperations()
2780      */
2781     public Collection<OperationFacade> getImplementationOperations()
2782     {
2783         return this.getSuperEntity().getImplementationOperations();
2784     }
2785 
2786     /**
2787      * A comma separated list of the fully qualified names of all implemented interfaces.
2788      * @see ClassifierFacade#getImplementedInterfaceList()
2789      */
2790     public String getImplementedInterfaceList()
2791     {
2792         return this.getSuperEntity().getImplementedInterfaceList();
2793     }
2794 
2795     /**
2796      * Those attributes that are scoped to an instance of this class.
2797      * @see ClassifierFacade#getInstanceAttributes()
2798      */
2799     public Collection<AttributeFacade> getInstanceAttributes()
2800     {
2801         return this.getSuperEntity().getInstanceAttributes();
2802     }
2803 
2804     /**
2805      * Those operations that are scoped to an instance of this class.
2806      * @see ClassifierFacade#getInstanceOperations()
2807      */
2808     public List<OperationFacade> getInstanceOperations()
2809     {
2810         return this.getSuperEntity().getInstanceOperations();
2811     }
2812 
2813     /**
2814      * Those interfaces that are abstractions of this classifier, this basically means this
2815      * classifier realizes them.
2816      * @see ClassifierFacade#getInterfaceAbstractions()
2817      */
2818     public Collection<ClassifierFacade> getInterfaceAbstractions()
2819     {
2820         return this.getSuperEntity().getInterfaceAbstractions();
2821     }
2822 
2823     /**
2824      * A String representing a new Constructor declaration for this classifier type to be used in a
2825      * Java environment.
2826      * @see ClassifierFacade#getJavaNewString()
2827      */
2828     public String getJavaNewString()
2829     {
2830         return this.getSuperEntity().getJavaNewString();
2831     }
2832 
2833     /**
2834      * A String representing the null-value for this classifier type to be used in a Java
2835      * environment.
2836      * @see ClassifierFacade#getJavaNullString()
2837      */
2838     public String getJavaNullString()
2839     {
2840         return this.getSuperEntity().getJavaNullString();
2841     }
2842 
2843     /**
2844      * The other ends of this classifier's association ends which are navigable.
2845      * @see ClassifierFacade#getNavigableConnectingEnds()
2846      */
2847     public Collection<AssociationEndFacade> getNavigableConnectingEnds()
2848     {
2849         return this.getSuperEntity().getNavigableConnectingEnds();
2850     }
2851 
2852     /**
2853      * Get the other ends of this classifier's association ends which are navigable and if 'follow'
2854      * is true goes up the inheritance hierarchy and gets the super association ends as well.
2855      * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
2856      */
2857     public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
2858     {
2859         return this.getSuperEntity().getNavigableConnectingEnds(follow);
2860     }
2861 
2862     /**
2863      * Assuming that the classifier is an array, this will return the non array type of the
2864      * classifier from
2865      * the model.  If the classifier is NOT an array, it will just return itself.
2866      * @see ClassifierFacade#getNonArray()
2867      */
2868     public ClassifierFacade getNonArray()
2869     {
2870         return this.getSuperEntity().getNonArray();
2871     }
2872 
2873     /**
2874      * The attributes from this classifier in the form of an operation call (this example would be
2875      * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
2876      * classifier, the result would be an empty '()'.
2877      * @see ClassifierFacade#getOperationCallFromAttributes()
2878      */
2879     public String getOperationCallFromAttributes()
2880     {
2881         return this.getSuperEntity().getOperationCallFromAttributes();
2882     }
2883 
2884     /**
2885      * The operations owned by this classifier.
2886      * @see ClassifierFacade#getOperations()
2887      */
2888     public List<OperationFacade> getOperations()
2889     {
2890         return this.getSuperEntity().getOperations();
2891     }
2892 
2893     /**
2894      * A collection containing all 'properties' of the classifier.  Properties are any attributes
2895      * and navigable connecting association ends.
2896      * @see ClassifierFacade#getProperties()
2897      */
2898     public List<ModelElementFacade> getProperties()
2899     {
2900         return this.getSuperEntity().getProperties();
2901     }
2902 
2903     /**
2904      * Gets all properties (attributes and navigable association ends) for the classifier and if
2905      * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
2906      * classes as well.
2907      * @see ClassifierFacade#getProperties(boolean follow)
2908      */
2909     public List getProperties(boolean follow)
2910     {
2911         return this.getSuperEntity().getProperties(follow);
2912     }
2913 
2914     /**
2915      * A collection containing all required and/or read-only 'properties' of the classifier. 
2916      * Properties are any attributes and navigable connecting association ends.
2917      * @see ClassifierFacade#getRequiredConstructorParameters()
2918      */
2919     public Collection<ModelElementFacade> getRequiredConstructorParameters()
2920     {
2921         return this.getSuperEntity().getRequiredConstructorParameters();
2922     }
2923 
2924     /**
2925      * Returns the serial version UID of the underlying model element.
2926      * @see ClassifierFacade#getSerialVersionUID()
2927      */
2928     public long getSerialVersionUID()
2929     {
2930         return this.getSuperEntity().getSerialVersionUID();
2931     }
2932 
2933     /**
2934      * Those attributes that are scoped to the definition of this class.
2935      * @see ClassifierFacade#getStaticAttributes()
2936      */
2937     public Collection<AttributeFacade> getStaticAttributes()
2938     {
2939         return this.getSuperEntity().getStaticAttributes();
2940     }
2941 
2942     /**
2943      * Those operations that are scoped to the definition of this class.
2944      * @see ClassifierFacade#getStaticOperations()
2945      */
2946     public List<OperationFacade> getStaticOperations()
2947     {
2948         return this.getSuperEntity().getStaticOperations();
2949     }
2950 
2951     /**
2952      * This class' superclass, returns the generalization if it is a ClassifierFacade, null
2953      * otherwise.
2954      * @see ClassifierFacade#getSuperClass()
2955      */
2956     public ClassifierFacade getSuperClass()
2957     {
2958         return this.getSuperEntity().getSuperClass();
2959     }
2960 
2961     /**
2962      * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
2963      * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
2964      * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
2965      * 'wrapperMappingsUri', this property must point to the location of the mappings file which
2966      * maps the primitives to wrapper types.
2967      * @see ClassifierFacade#getWrapperName()
2968      */
2969     public String getWrapperName()
2970     {
2971         return this.getSuperEntity().getWrapperName();
2972     }
2973 
2974     /**
2975      * Indicates if this classifier is 'abstract'.
2976      * @see ClassifierFacade#isAbstract()
2977      */
2978     public boolean isAbstract()
2979     {
2980         return this.getSuperEntity().isAbstract();
2981     }
2982 
2983     /**
2984      * True if this classifier represents an array type. False otherwise.
2985      * @see ClassifierFacade#isArrayType()
2986      */
2987     public boolean isArrayType()
2988     {
2989         return this.getSuperEntity().isArrayType();
2990     }
2991 
2992     /**
2993      * True if the ClassifierFacade is an AssociationClass.
2994      * @see ClassifierFacade#isAssociationClass()
2995      */
2996     public boolean isAssociationClass()
2997     {
2998         return this.getSuperEntity().isAssociationClass();
2999     }
3000 
3001     /**
3002      * Returns true if this type represents a Blob type.
3003      * @see ClassifierFacade#isBlobType()
3004      */
3005     public boolean isBlobType()
3006     {
3007         return this.getSuperEntity().isBlobType();
3008     }
3009 
3010     /**
3011      * Indicates if this type represents a boolean type or not.
3012      * @see ClassifierFacade#isBooleanType()
3013      */
3014     public boolean isBooleanType()
3015     {
3016         return this.getSuperEntity().isBooleanType();
3017     }
3018 
3019     /**
3020      * Indicates if this type represents a char, Character, or java.lang.Character type or not.
3021      * @see ClassifierFacade#isCharacterType()
3022      */
3023     public boolean isCharacterType()
3024     {
3025         return this.getSuperEntity().isCharacterType();
3026     }
3027 
3028     /**
3029      * Returns true if this type represents a Clob type.
3030      * @see ClassifierFacade#isClobType()
3031      */
3032     public boolean isClobType()
3033     {
3034         return this.getSuperEntity().isClobType();
3035     }
3036 
3037     /**
3038      * True if this classifier represents a collection type. False otherwise.
3039      * @see ClassifierFacade#isCollectionType()
3040      */
3041     public boolean isCollectionType()
3042     {
3043         return this.getSuperEntity().isCollectionType();
3044     }
3045 
3046     /**
3047      * True/false depending on whether or not this classifier represents a datatype. A data type is
3048      * a type whose instances are identified only by their value. A data type may contain attributes
3049      * to support the modeling of structured data types.
3050      * @see ClassifierFacade#isDataType()
3051      */
3052     public boolean isDataType()
3053     {
3054         return this.getSuperEntity().isDataType();
3055     }
3056 
3057     /**
3058      * True when this classifier is a date type.
3059      * @see ClassifierFacade#isDateType()
3060      */
3061     public boolean isDateType()
3062     {
3063         return this.getSuperEntity().isDateType();
3064     }
3065 
3066     /**
3067      * Indicates if this type represents a Double type or not.
3068      * @see ClassifierFacade#isDoubleType()
3069      */
3070     public boolean isDoubleType()
3071     {
3072         return this.getSuperEntity().isDoubleType();
3073     }
3074 
3075     /**
3076      * Indicates whether or not this classifier represents an "EmbeddedValue'.
3077      * @see ClassifierFacade#isEmbeddedValue()
3078      */
3079     public boolean isEmbeddedValue()
3080     {
3081         return this.getSuperEntity().isEmbeddedValue();
3082     }
3083 
3084     /**
3085      * True if this classifier is in fact marked as an enumeration.
3086      * @see ClassifierFacade#isEnumeration()
3087      */
3088     public boolean isEnumeration()
3089     {
3090         return this.getSuperEntity().isEnumeration();
3091     }
3092 
3093     /**
3094      * Returns true if this type represents a 'file' type.
3095      * @see ClassifierFacade#isFileType()
3096      */
3097     public boolean isFileType()
3098     {
3099         return this.getSuperEntity().isFileType();
3100     }
3101 
3102     /**
3103      * Indicates if this type represents a Float type or not.
3104      * @see ClassifierFacade#isFloatType()
3105      */
3106     public boolean isFloatType()
3107     {
3108         return this.getSuperEntity().isFloatType();
3109     }
3110 
3111     /**
3112      * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
3113      * @see ClassifierFacade#isIntegerType()
3114      */
3115     public boolean isIntegerType()
3116     {
3117         return this.getSuperEntity().isIntegerType();
3118     }
3119 
3120     /**
3121      * True/false depending on whether or not this Classifier represents an interface.
3122      * @see ClassifierFacade#isInterface()
3123      */
3124     public boolean isInterface()
3125     {
3126         return this.getSuperEntity().isInterface();
3127     }
3128 
3129     /**
3130      * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
3131      * @see ClassifierFacade#isLeaf()
3132      */
3133     public boolean isLeaf()
3134     {
3135         return this.getSuperEntity().isLeaf();
3136     }
3137 
3138     /**
3139      * True if this classifier represents a list type. False otherwise.
3140      * @see ClassifierFacade#isListType()
3141      */
3142     public boolean isListType()
3143     {
3144         return this.getSuperEntity().isListType();
3145     }
3146 
3147     /**
3148      * Indicates if this type represents a Long type or not.
3149      * @see ClassifierFacade#isLongType()
3150      */
3151     public boolean isLongType()
3152     {
3153         return this.getSuperEntity().isLongType();
3154     }
3155 
3156     /**
3157      * Indicates whether or not this classifier represents a Map type.
3158      * @see ClassifierFacade#isMapType()
3159      */
3160     public boolean isMapType()
3161     {
3162         return this.getSuperEntity().isMapType();
3163     }
3164 
3165     /**
3166      * Indicates whether or not this classifier represents a primitive type.
3167      * @see ClassifierFacade#isPrimitive()
3168      */
3169     public boolean isPrimitive()
3170     {
3171         return this.getSuperEntity().isPrimitive();
3172     }
3173 
3174     /**
3175      * True if this classifier represents a set type. False otherwise.
3176      * @see ClassifierFacade#isSetType()
3177      */
3178     public boolean isSetType()
3179     {
3180         return this.getSuperEntity().isSetType();
3181     }
3182 
3183     /**
3184      * Indicates whether or not this classifier represents a string type.
3185      * @see ClassifierFacade#isStringType()
3186      */
3187     public boolean isStringType()
3188     {
3189         return this.getSuperEntity().isStringType();
3190     }
3191 
3192     /**
3193      * Indicates whether or not this classifier represents a time type.
3194      * @see ClassifierFacade#isTimeType()
3195      */
3196     public boolean isTimeType()
3197     {
3198         return this.getSuperEntity().isTimeType();
3199     }
3200 
3201     /**
3202      * Returns true if this type is a wrapped primitive type.
3203      * @see ClassifierFacade#isWrappedPrimitive()
3204      */
3205     public boolean isWrappedPrimitive()
3206     {
3207         return this.getSuperEntity().isWrappedPrimitive();
3208     }
3209 
3210     /**
3211      * Returns a collection of all entities this entity and its ancestors have a relation to.
3212      * @see Entity#getAllEntityReferences()
3213      */
3214     public Collection<DependencyFacade> getAllEntityReferences()
3215     {
3216         return this.getSuperEntity().getAllEntityReferences();
3217     }
3218 
3219     /**
3220      * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
3221      * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
3222      * is true, will include identifiers.
3223      * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers)
3224      */
3225     public String getAttributeNameList(boolean follow, boolean withIdentifiers)
3226     {
3227         return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers);
3228     }
3229 
3230     /**
3231      * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
3232      * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
3233      * is true, will include identifiers  and  if 'withDerived' is set to true, will include derived
3234      * attributes.
3235      * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
3236      */
3237     public String getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
3238     {
3239         return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers, withDerived);
3240     }
3241 
3242     /**
3243      * Gets a comma separated list of attribute types.  If 'follow' is true, will travel up the
3244      * inheritance hierarchy to include attributes in parent entities as well.  If 'withIdentifiers'
3245      * is true, will include identifiers.
3246      * @see Entity#getAttributeTypeList(boolean follow, boolean withIdentifiers)
3247      */
3248     public String getAttributeTypeList(boolean follow, boolean withIdentifiers)
3249     {
3250         return this.getSuperEntity().getAttributeTypeList(follow, withIdentifiers);
3251     }
3252 
3253     /**
3254      * Gets all attributes of the entity, and optionally retieves the super entities attributes as
3255      * well as excludes the entity's identifiers if 'withIdentifiers' is set to false.
3256      * @see Entity#getAttributes(boolean follow, boolean withIdentifiers)
3257      */
3258     public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers)
3259     {
3260         return this.getSuperEntity().getAttributes(follow, withIdentifiers);
3261     }
3262 
3263     /**
3264      * Gets all attributes of the entity, and optionally retieves the super entities attributes as
3265      * well as excludes the entity's identifiers if 'withIdentifiers' is set to false and exclude
3266      * derived attributes if 'withDerived' is set to false.
3267      * @see Entity#getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
3268      */
3269     public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
3270     {
3271         return this.getSuperEntity().getAttributes(follow, withIdentifiers, withDerived);
3272     }
3273 
3274     /**
3275      * All business operations of the entity, these include any operations that aren't queries.
3276      * @see Entity#getBusinessOperations()
3277      */
3278     public Collection<OperationFacade> getBusinessOperations()
3279     {
3280         return this.getSuperEntity().getBusinessOperations();
3281     }
3282 
3283     /**
3284      * Gets any children association ends (i.e. entity association ends that are participants in an
3285      * association with this entity and this entity has composite aggregation defined for those
3286      * associations).
3287      * @see Entity#getChildEnds()
3288      */
3289     public Collection<EntityAssociationEnd> getChildEnds()
3290     {
3291         return this.getSuperEntity().getChildEnds();
3292     }
3293 
3294     /**
3295      * The embedded values belonging to this entity.
3296      * @see Entity#getEmbeddedValues()
3297      */
3298     public Collection<AttributeFacade> getEmbeddedValues()
3299     {
3300         return this.getSuperEntity().getEmbeddedValues();
3301     }
3302 
3303     /**
3304      * All entities referenced by this entity.
3305      * @see Entity#getEntityReferences()
3306      */
3307     public Collection<DependencyFacade> getEntityReferences()
3308     {
3309         return this.getSuperEntity().getEntityReferences();
3310     }
3311 
3312     /**
3313      * The full name of the type of the identifier. If composite identifier add the PK sufix to the
3314      * class name. If not, retorns the fully qualified name of the identifier.
3315      * @see Entity#getFullyQualifiedIdentifierTypeName()
3316      */
3317     public String getFullyQualifiedIdentifierTypeName()
3318     {
3319         return this.getSuperEntity().getFullyQualifiedIdentifierTypeName();
3320     }
3321 
3322     /**
3323      * Gets all the associationEnds of this entity marked with the identifiers stereotype.
3324      * @see Entity#getIdentifierAssociationEnds()
3325      */
3326     public Collection<AssociationEndFacade> getIdentifierAssociationEnds()
3327     {
3328         return this.getSuperEntity().getIdentifierAssociationEnds();
3329     }
3330 
3331     /**
3332      * The getter name of the identifier.
3333      * @see Entity#getIdentifierGetterName()
3334      */
3335     public String getIdentifierGetterName()
3336     {
3337         return this.getSuperEntity().getIdentifierGetterName();
3338     }
3339 
3340     /**
3341      * The name of the identifier. If composite identifier add the Pk suffix. If not composite
3342      * returns the attribute name of the identifier.
3343      * @see Entity#getIdentifierName()
3344      */
3345     public String getIdentifierName()
3346     {
3347         return this.getSuperEntity().getIdentifierName();
3348     }
3349 
3350     /**
3351      * The setter name of the identifier.
3352      * @see Entity#getIdentifierSetterName()
3353      */
3354     public String getIdentifierSetterName()
3355     {
3356         return this.getSuperEntity().getIdentifierSetterName();
3357     }
3358 
3359     /**
3360      * The name of the type of the identifier. If composite identifier add the PK suffix to the
3361      * class name. If not, returns the name of the identifier.
3362      * @see Entity#getIdentifierTypeName()
3363      */
3364     public String getIdentifierTypeName()
3365     {
3366         return this.getSuperEntity().getIdentifierTypeName();
3367     }
3368 
3369     /**
3370      * All the attributes of the entity which make up its identifier (primary key).  Will search any
3371      * super classes as well.  If no identifiers exist, a default identifier will be created if the
3372      * allowDefaultIdentifiers property is set to true.
3373      * @see Entity#getIdentifiers()
3374      */
3375     public Collection<ModelElementFacade> getIdentifiers()
3376     {
3377         return this.getSuperEntity().getIdentifiers();
3378     }
3379 
3380     /**
3381      * Gets all identifiers for an entity. If 'follow' is true, and if no identifiers can be found
3382      * on the entity, a search up the inheritance chain will be performed, and the identifiers from
3383      * the first super class having them will be used.   If no identifiers exist, a default
3384      * identifier will be created if the allowDefaultIdentifiers property is set to true.
3385      * Identifiers can be on attributes or associations (composite primary key).
3386      * @see Entity#getIdentifiers(boolean follow)
3387      */
3388     public Collection<ModelElementFacade> getIdentifiers(boolean follow)
3389     {
3390         return this.getSuperEntity().getIdentifiers(follow);
3391     }
3392 
3393     /**
3394      * The maximum length a SQL name may be.
3395      * @see Entity#getMaxSqlNameLength()
3396      */
3397     public short getMaxSqlNameLength()
3398     {
3399         return this.getSuperEntity().getMaxSqlNameLength();
3400     }
3401 
3402     /**
3403      * Gets the attributes as a list within an operation call, optionally including the type names
3404      * and the identifier attributes.
3405      * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers)
3406      */
3407     public String getOperationCallFromAttributes(boolean withIdentifiers)
3408     {
3409         return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers);
3410     }
3411 
3412     /**
3413      * Gets the attributes as a list within an operation call.  If 'withTypeNames' is true, it will
3414      * include the type names, if 'withIdentifiers' is true it will include the identifiers.  If
3415      * 'follow' is true it will follow the inheritance hierarchy and get the attributes of the super
3416      * class as well.
3417      * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
3418      */
3419     public String getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
3420     {
3421         return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers, follow);
3422     }
3423 
3424     /**
3425      * Returns the parent association end of this entity if its a child entity.  The parent is the
3426      * entity that is the participant the association that has composite aggregation defined.  Will
3427      * return null if the entity has no parent.
3428      * @see Entity#getParentEnd()
3429      */
3430     public EntityAssociationEnd getParentEnd()
3431     {
3432         return this.getSuperEntity().getParentEnd();
3433     }
3434 
3435     /**
3436      * Gets all properties of this entity, this includes the attributes and navigable association
3437      * ends of the entity.  The 'follow' flag indcates whether or not the inheritance hierarchy
3438      * should be followed when getting all the properties.  The 'withIdentifiers' flag indicates
3439      * whether or not identifiers should be included in the collection of properties.
3440      * @see Entity#getProperties(boolean follow, boolean withIdentifiers)
3441      */
3442     public Collection<ModelElementFacade> getProperties(boolean follow, boolean withIdentifiers)
3443     {
3444         return this.getSuperEntity().getProperties(follow, withIdentifiers);
3445     }
3446 
3447     /**
3448      * Returns all the operations that can perform queries on the entity.
3449      * @see Entity#getQueryOperations()
3450      */
3451     public Collection<EntityQueryOperation> getQueryOperations()
3452     {
3453         return this.getSuperEntity().getQueryOperations();
3454     }
3455 
3456     /**
3457      * Gets all query operations for an entity. If 'follow' is true, and if no query operations can
3458      * be found on the entity, a search up the inheritance chain will be performed, and the
3459      * identifiers from the first super class having them will be used.   If no identifiers exist, a
3460      * default identifier will be created if the allowDefaultIdentifiers property is set to true.
3461      * @see Entity#getQueryOperations(boolean follow)
3462      */
3463     public Collection<OperationFacade> getQueryOperations(boolean follow)
3464     {
3465         return this.getSuperEntity().getQueryOperations(follow);
3466     }
3467 
3468     /**
3469      * Gets a comma separated list of required attribute names.  If 'follow' is true, will travel up
3470      * the inheritance hierarchy to include attributes in parent entities as well.  If
3471      * 'withIdentifiers' is true, will include identifiers.
3472      * @see Entity#getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
3473      */
3474     public String getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
3475     {
3476         return this.getSuperEntity().getRequiredAttributeNameList(follow, withIdentifiers);
3477     }
3478 
3479     /**
3480      * Gets a comma separated list of attribute types with are required.  If 'follow' is true, will
3481      * travel up the inheritance hierarchy to include attributes in parent entities as well.  If
3482      * 'withIdentifiers' is true, will include identifiers.
3483      * @see Entity#getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
3484      */
3485     public String getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
3486     {
3487         return this.getSuperEntity().getRequiredAttributeTypeList(follow, withIdentifiers);
3488     }
3489 
3490     /**
3491      * Returns all attributes that are specified as 'required' in the model.  If 'follow' is true,
3492      * then required attributes in super classes will also be returned, if false, just the ones
3493      * directly on the entity will be returned.  If 'withIdentifiers' is true, the identifiers will
3494      * be include, if false, no identifiers will be included.
3495      * @see Entity#getRequiredAttributes(boolean follow, boolean withIdentifiers)
3496      */
3497     public Collection<AttributeFacade> getRequiredAttributes(boolean follow, boolean withIdentifiers)
3498     {
3499         return this.getSuperEntity().getRequiredAttributes(follow, withIdentifiers);
3500     }
3501 
3502     /**
3503      * Gets all required properties for this entity.  These consist of any required attributes as
3504      * well as navigable associations that are marked as 'required'.  If 'follow' is true, then the
3505      * inheritance hierchy will be followed and all required properties from super classes will be
3506      * included as well.
3507      * If 'withIdentifiers' is true, the identifiers will be include, if false, no identifiers will
3508      * be included.
3509      * @see Entity#getRequiredProperties(boolean follow, boolean withIdentifiers)
3510      */
3511     public Collection<ModelElementFacade> getRequiredProperties(boolean follow, boolean withIdentifiers)
3512     {
3513         return this.getSuperEntity().getRequiredProperties(follow, withIdentifiers);
3514     }
3515 
3516     /**
3517      * Creates a comma separated list of the required property names.
3518      * @see Entity#getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
3519      */
3520     public String getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
3521     {
3522         return this.getSuperEntity().getRequiredPropertyNameList(follow, withIdentifiers);
3523     }
3524 
3525     /**
3526      * A comma separated list of the required property types.
3527      * @see Entity#getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
3528      */
3529     public String getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
3530     {
3531         return this.getSuperEntity().getRequiredPropertyTypeList(follow, withIdentifiers);
3532     }
3533 
3534     /**
3535      * The name of the schema that contains the database table
3536      * @see Entity#getSchema()
3537      */
3538     public String getSchema()
3539     {
3540         return this.getSuperEntity().getSchema();
3541     }
3542 
3543     /**
3544      * The name of the database table to which this entity is persisted.
3545      * @see Entity#getTableName()
3546      */
3547     public String getTableName()
3548     {
3549         return this.getSuperEntity().getTableName();
3550     }
3551 
3552     /**
3553      * Returns true/false depending on whether or not this entity represetns a child in an
3554      * association (this occurs when this entity is on the opposite end of an assocation end defined
3555      * as composite).
3556      * @see Entity#isChild()
3557      */
3558     public boolean isChild()
3559     {
3560         return this.getSuperEntity().isChild();
3561     }
3562 
3563     /**
3564      * True if this entity identifier is a composite (consists of multiple key columns, typically
3565      * abstracted into an external composite identifier class)
3566      * @see Entity#isCompositeIdentifier()
3567      */
3568     public boolean isCompositeIdentifier()
3569     {
3570         return this.getSuperEntity().isCompositeIdentifier();
3571     }
3572 
3573     /**
3574      * True if the entity has its identifiers dynamically added, false otherwise.
3575      * @see Entity#isDynamicIdentifiersPresent()
3576      */
3577     public boolean isDynamicIdentifiersPresent()
3578     {
3579         return this.getSuperEntity().isDynamicIdentifiersPresent();
3580     }
3581 
3582     /**
3583      * True if the entity has any identifiers defined, false otherwise.
3584      * @see Entity#isIdentifiersPresent()
3585      */
3586     public boolean isIdentifiersPresent()
3587     {
3588         return this.getSuperEntity().isIdentifiersPresent();
3589     }
3590 
3591     /**
3592      * Indiciates if this entity is using an assigned identifier or not.
3593      * @see Entity#isUsingAssignedIdentifier()
3594      */
3595     public boolean isUsingAssignedIdentifier()
3596     {
3597         return this.getSuperEntity().isUsingAssignedIdentifier();
3598     }
3599 
3600     /**
3601      * Indicates whether or not this entity is using a foreign identifier as its identifiers.  That
3602      * is: the foreignIdentifier flag was set on an incoming association end and the entity is
3603      * therefore using the related foreign parent entity's identifier.
3604      * @see Entity#isUsingForeignIdentifier()
3605      */
3606     public boolean isUsingForeignIdentifier()
3607     {
3608         return this.getSuperEntity().isUsingForeignIdentifier();
3609     }
3610 
3611     /**
3612      * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
3613      * to true.
3614      * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
3615      */
3616     public Object findTaggedValue(String tagName, boolean follow)
3617     {
3618         return this.getSuperEntity().findTaggedValue(tagName, follow);
3619     }
3620 
3621     /**
3622      * All generalizations for this generalizable element, goes up the inheritance tree.
3623      * @see GeneralizableElementFacade#getAllGeneralizations()
3624      */
3625     public Collection<GeneralizableElementFacade> getAllGeneralizations()
3626     {
3627         return this.getSuperEntity().getAllGeneralizations();
3628     }
3629 
3630     /**
3631      * All specializations (travels down the inheritance hierarchy).
3632      * @see GeneralizableElementFacade#getAllSpecializations()
3633      */
3634     public Collection<GeneralizableElementFacade> getAllSpecializations()
3635     {
3636         return this.getSuperEntity().getAllSpecializations();
3637     }
3638 
3639     /**
3640      * Gets the direct generalization for this generalizable element.
3641      * @see GeneralizableElementFacade#getGeneralization()
3642      */
3643     public GeneralizableElementFacade getGeneralization()
3644     {
3645         return this.getSuperEntity().getGeneralization();
3646     }
3647 
3648     /**
3649      * Gets the actual links that this generalization element is part of (it plays either the
3650      * specialization or generalization).
3651      * @see GeneralizableElementFacade#getGeneralizationLinks()
3652      */
3653     public Collection<GeneralizationFacade> getGeneralizationLinks()
3654     {
3655         return this.getSuperEntity().getGeneralizationLinks();
3656     }
3657 
3658     /**
3659      * A comma separated list of the fully qualified names of all generalizations.
3660      * @see GeneralizableElementFacade#getGeneralizationList()
3661      */
3662     public String getGeneralizationList()
3663     {
3664         return this.getSuperEntity().getGeneralizationList();
3665     }
3666 
3667     /**
3668      * The element found when you recursively follow the generalization path up to the root. If an
3669      * element has no generalization itself will be considered the root.
3670      * @see GeneralizableElementFacade#getGeneralizationRoot()
3671      */
3672     public GeneralizableElementFacade getGeneralizationRoot()
3673     {
3674         return this.getSuperEntity().getGeneralizationRoot();
3675     }
3676 
3677     /**
3678      * Return all generalizations (ancestors) from this generalizable element.
3679      * @see GeneralizableElementFacade#getGeneralizations()
3680      */
3681     public Collection<GeneralizableElementFacade> getGeneralizations()
3682     {
3683         return this.getSuperEntity().getGeneralizations();
3684     }
3685 
3686     /**
3687      * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
3688      * @see GeneralizableElementFacade#getSpecializations()
3689      */
3690     public Collection<GeneralizableElementFacade> getSpecializations()
3691     {
3692         return this.getSuperEntity().getSpecializations();
3693     }
3694 
3695     /**
3696      * Copies all tagged values from the given ModelElementFacade to this model element facade.
3697      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
3698      */
3699     public void copyTaggedValues(ModelElementFacade element)
3700     {
3701         this.getSuperEntity().copyTaggedValues(element);
3702     }
3703 
3704     /**
3705      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
3706      * one found will be returned.
3707      * @see ModelElementFacade#findTaggedValue(String tagName)
3708      */
3709     public Object findTaggedValue(String tagName)
3710     {
3711         return this.getSuperEntity().findTaggedValue(tagName);
3712     }
3713 
3714     /**
3715      * Returns all the values for the tagged value with the specified name. The returned collection
3716      * will contains only String instances, or will be empty. Never null.
3717      * @see ModelElementFacade#findTaggedValues(String tagName)
3718      */
3719     public Collection<Object> findTaggedValues(String tagName)
3720     {
3721         return this.getSuperEntity().findTaggedValues(tagName);
3722     }
3723 
3724     /**
3725      * Returns the fully qualified name of the model element. The fully qualified name includes
3726      * complete package qualified name of the underlying model element. The templates parameter will
3727      * be replaced by the correct one given the binding relation of the parameter to this element.
3728      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
3729      */
3730     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
3731     {
3732         return this.getSuperEntity().getBindedFullyQualifiedName(bindedElement);
3733     }
3734 
3735     /**
3736      * Gets all constraints belonging to the model element.
3737      * @see ModelElementFacade#getConstraints()
3738      */
3739     public Collection<ConstraintFacade> getConstraints()
3740     {
3741         return this.getSuperEntity().getConstraints();
3742     }
3743 
3744     /**
3745      * Returns the constraints of the argument kind that have been placed onto this model. Typical
3746      * kinds are "inv", "pre" and "post". Other kinds are possible.
3747      * @see ModelElementFacade#getConstraints(String kind)
3748      */
3749     public Collection<ConstraintFacade> getConstraints(String kind)
3750     {
3751         return this.getSuperEntity().getConstraints(kind);
3752     }
3753 
3754     /**
3755      * Gets the documentation for the model element, The indent argument is prefixed to each line.
3756      * By default this method wraps lines after 64 characters.
3757      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
3758      * @see ModelElementFacade#getDocumentation(String indent)
3759      */
3760     public String getDocumentation(String indent)
3761     {
3762         return this.getSuperEntity().getDocumentation(indent);
3763     }
3764 
3765     /**
3766      * This method returns the documentation for this model element, with the lines wrapped after
3767      * the specified number of characters, values of less than 1 will indicate no line wrapping is
3768      * required. By default paragraphs are returned as HTML.
3769      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
3770      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
3771      */
3772     public String getDocumentation(String indent, int lineLength)
3773     {
3774         return this.getSuperEntity().getDocumentation(indent, lineLength);
3775     }
3776 
3777     /**
3778      * This method returns the documentation for this model element, with the lines wrapped after
3779      * the specified number of characters, values of less than 1 will indicate no line wrapping is
3780      * required. HTML style determines if HTML Escaping is applied.
3781      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
3782      */
3783     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
3784     {
3785         return this.getSuperEntity().getDocumentation(indent, lineLength, htmlStyle);
3786     }
3787 
3788     /**
3789      * The fully qualified name of this model element.
3790      * @see ModelElementFacade#getFullyQualifiedName()
3791      */
3792     public String getFullyQualifiedName()
3793     {
3794         return this.getSuperEntity().getFullyQualifiedName();
3795     }
3796 
3797     /**
3798      * Returns the fully qualified name of the model element. The fully qualified name includes
3799      * complete package qualified name of the underlying model element.  If modelName is true, then
3800      * the original name of the model element (the name contained within the model) will be the name
3801      * returned, otherwise a name from a language mapping will be returned.
3802      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
3803      */
3804     public String getFullyQualifiedName(boolean modelName)
3805     {
3806         return this.getSuperEntity().getFullyQualifiedName(modelName);
3807     }
3808 
3809     /**
3810      * Returns the fully qualified name as a path, the returned value always starts with out a slash
3811      * '/'.
3812      * @see ModelElementFacade#getFullyQualifiedNamePath()
3813      */
3814     public String getFullyQualifiedNamePath()
3815     {
3816         return this.getSuperEntity().getFullyQualifiedNamePath();
3817     }
3818 
3819     /**
3820      * Gets the unique identifier of the underlying model element.
3821      * @see ModelElementFacade#getId()
3822      */
3823     public String getId()
3824     {
3825         return this.getSuperEntity().getId();
3826     }
3827 
3828     /**
3829      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
3830      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
3831      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
3832      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
3833      * JDK5 compiler level.
3834      * @see ModelElementFacade#getKeywords()
3835      */
3836     public Collection<String> getKeywords()
3837     {
3838         return this.getSuperEntity().getKeywords();
3839     }
3840 
3841     /**
3842      * UML2: Retrieves a localized label for this named element.
3843      * @see ModelElementFacade#getLabel()
3844      */
3845     public String getLabel()
3846     {
3847         return this.getSuperEntity().getLabel();
3848     }
3849 
3850     /**
3851      * The language mappings that have been set for this model element.
3852      * @see ModelElementFacade#getLanguageMappings()
3853      */
3854     public TypeMappings getLanguageMappings()
3855     {
3856         return this.getSuperEntity().getLanguageMappings();
3857     }
3858 
3859     /**
3860      * Return the model containing this model element (multiple models may be loaded and processed
3861      * at the same time).
3862      * @see ModelElementFacade#getModel()
3863      */
3864     public ModelFacade getModel()
3865     {
3866         return this.getSuperEntity().getModel();
3867     }
3868 
3869     /**
3870      * The name of the model element.
3871      * @see ModelElementFacade#getName()
3872      */
3873     public String getName()
3874     {
3875         return this.getSuperEntity().getName();
3876     }
3877 
3878     /**
3879      * Gets the package to which this model element belongs.
3880      * @see ModelElementFacade#getPackage()
3881      */
3882     public ModelElementFacade getPackage()
3883     {
3884         return this.getSuperEntity().getPackage();
3885     }
3886 
3887     /**
3888      * The name of this model element's package.
3889      * @see ModelElementFacade#getPackageName()
3890      */
3891     public String getPackageName()
3892     {
3893         return this.getSuperEntity().getPackageName();
3894     }
3895 
3896     /**
3897      * Gets the package name (optionally providing the ability to retrieve the model name and not
3898      * the mapped name).
3899      * @see ModelElementFacade#getPackageName(boolean modelName)
3900      */
3901     public String getPackageName(boolean modelName)
3902     {
3903         return this.getSuperEntity().getPackageName(modelName);
3904     }
3905 
3906     /**
3907      * Returns the package as a path, the returned value always starts with out a slash '/'.
3908      * @see ModelElementFacade#getPackagePath()
3909      */
3910     public String getPackagePath()
3911     {
3912         return this.getSuperEntity().getPackagePath();
3913     }
3914 
3915     /**
3916      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
3917      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
3918      * the names of the containing namespaces starting at the root of the hierarchy and ending with
3919      * the name of the NamedElement itself.
3920      * @see ModelElementFacade#getQualifiedName()
3921      */
3922     public String getQualifiedName()
3923     {
3924         return this.getSuperEntity().getQualifiedName();
3925     }
3926 
3927     /**
3928      * Gets the root package for the model element.
3929      * @see ModelElementFacade#getRootPackage()
3930      */
3931     public PackageFacade getRootPackage()
3932     {
3933         return this.getSuperEntity().getRootPackage();
3934     }
3935 
3936     /**
3937      * Gets the dependencies for which this model element is the source.
3938      * @see ModelElementFacade#getSourceDependencies()
3939      */
3940     public Collection<DependencyFacade> getSourceDependencies()
3941     {
3942         return this.getSuperEntity().getSourceDependencies();
3943     }
3944 
3945     /**
3946      * If this model element is the context of an activity graph, this represents that activity
3947      * graph.
3948      * @see ModelElementFacade#getStateMachineContext()
3949      */
3950     public StateMachineFacade getStateMachineContext()
3951     {
3952         return this.getSuperEntity().getStateMachineContext();
3953     }
3954 
3955     /**
3956      * The collection of ALL stereotype names for this model element.
3957      * @see ModelElementFacade#getStereotypeNames()
3958      */
3959     public Collection<String> getStereotypeNames()
3960     {
3961         return this.getSuperEntity().getStereotypeNames();
3962     }
3963 
3964     /**
3965      * Gets all stereotypes for this model element.
3966      * @see ModelElementFacade#getStereotypes()
3967      */
3968     public Collection<StereotypeFacade> getStereotypes()
3969     {
3970         return this.getSuperEntity().getStereotypes();
3971     }
3972 
3973     /**
3974      * Return the TaggedValues associated with this model element, under all stereotypes.
3975      * @see ModelElementFacade#getTaggedValues()
3976      */
3977     public Collection<TaggedValueFacade> getTaggedValues()
3978     {
3979         return this.getSuperEntity().getTaggedValues();
3980     }
3981 
3982     /**
3983      * Gets the dependencies for which this model element is the target.
3984      * @see ModelElementFacade#getTargetDependencies()
3985      */
3986     public Collection<DependencyFacade> getTargetDependencies()
3987     {
3988         return this.getSuperEntity().getTargetDependencies();
3989     }
3990 
3991     /**
3992      * Get the template parameter for this model element having the parameterName
3993      * @see ModelElementFacade#getTemplateParameter(String parameterName)
3994      */
3995     public Object getTemplateParameter(String parameterName)
3996     {
3997         return this.getSuperEntity().getTemplateParameter(parameterName);
3998     }
3999 
4000     /**
4001      * Get the template parameters for this model element
4002      * @see ModelElementFacade#getTemplateParameters()
4003      */
4004     public Collection<TemplateParameterFacade> getTemplateParameters()
4005     {
4006         return this.getSuperEntity().getTemplateParameters();
4007     }
4008 
4009     /**
4010      * The visibility (i.e. public, private, protected or package) of the model element, will
4011      * attempt a lookup for these values in the language mappings (if any).
4012      * @see ModelElementFacade#getVisibility()
4013      */
4014     public String getVisibility()
4015     {
4016         return this.getSuperEntity().getVisibility();
4017     }
4018 
4019     /**
4020      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
4021      * is taken into account when searching for the stereotype), false otherwise.
4022      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
4023      */
4024     public boolean hasExactStereotype(String stereotypeName)
4025     {
4026         return this.getSuperEntity().hasExactStereotype(stereotypeName);
4027     }
4028 
4029     /**
4030      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
4031      * pipe, semicolon, or << >>
4032      * @see ModelElementFacade#hasKeyword(String keywordName)
4033      */
4034     public boolean hasKeyword(String keywordName)
4035     {
4036         return this.getSuperEntity().hasKeyword(keywordName);
4037     }
4038 
4039     /**
4040      * Returns true if the model element has the specified stereotype.  If the stereotype itself
4041      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
4042      * one of the stereotype's ancestors has a matching name this method will return true, false
4043      * otherwise.
4044      * For example, if we have a certain stereotype called <<exception>> and a model element has a
4045      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
4046      * method with 'stereotypeName' defined as 'exception' the method would return true since
4047      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
4048      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
4049      * @see ModelElementFacade#hasStereotype(String stereotypeName)
4050      */
4051     public boolean hasStereotype(String stereotypeName)
4052     {
4053         return this.getSuperEntity().hasStereotype(stereotypeName);
4054     }
4055 
4056     /**
4057      * True if there are target dependencies from this element that are instances of BindingFacade.
4058      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
4059      * @see ModelElementFacade#isBindingDependenciesPresent()
4060      */
4061     public boolean isBindingDependenciesPresent()
4062     {
4063         return this.getSuperEntity().isBindingDependenciesPresent();
4064     }
4065 
4066     /**
4067      * Indicates if any constraints are present on this model element.
4068      * @see ModelElementFacade#isConstraintsPresent()
4069      */
4070     public boolean isConstraintsPresent()
4071     {
4072         return this.getSuperEntity().isConstraintsPresent();
4073     }
4074 
4075     /**
4076      * Indicates if any documentation is present on this model element.
4077      * @see ModelElementFacade#isDocumentationPresent()
4078      */
4079     public boolean isDocumentationPresent()
4080     {
4081         return this.getSuperEntity().isDocumentationPresent();
4082     }
4083 
4084     /**
4085      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
4086      * @see ModelElementFacade#isReservedWord()
4087      */
4088     public boolean isReservedWord()
4089     {
4090         return this.getSuperEntity().isReservedWord();
4091     }
4092 
4093     /**
4094      * True is there are template parameters on this model element. For UML2, applies to Class,
4095      * Operation, Property, and Parameter.
4096      * @see ModelElementFacade#isTemplateParametersPresent()
4097      */
4098     public boolean isTemplateParametersPresent()
4099     {
4100         return this.getSuperEntity().isTemplateParametersPresent();
4101     }
4102 
4103     /**
4104      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
4105      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
4106      * Enumerations and Interfaces, optionally applies on other model elements.
4107      * @see ModelElementFacade#isValidIdentifierName()
4108      */
4109     public boolean isValidIdentifierName()
4110     {
4111         return this.getSuperEntity().isValidIdentifierName();
4112     }
4113 
4114     /**
4115      * Searches for the constraint with the specified 'name' on this model element, and if found
4116      * translates it using the specified 'translation' from a translation library discovered by the
4117      * framework.
4118      * @see ModelElementFacade#translateConstraint(String name, String translation)
4119      */
4120     public String translateConstraint(String name, String translation)
4121     {
4122         return this.getSuperEntity().translateConstraint(name, translation);
4123     }
4124 
4125     /**
4126      * Translates all constraints belonging to this model element with the given 'translation'.
4127      * @see ModelElementFacade#translateConstraints(String translation)
4128      */
4129     public String[] translateConstraints(String translation)
4130     {
4131         return this.getSuperEntity().translateConstraints(translation);
4132     }
4133 
4134     /**
4135      * Translates the constraints of the specified 'kind' belonging to this model element.
4136      * @see ModelElementFacade#translateConstraints(String kind, String translation)
4137      */
4138     public String[] translateConstraints(String kind, String translation)
4139     {
4140         return this.getSuperEntity().translateConstraints(kind, translation);
4141     }
4142 
4143     /**
4144      * @see MetafacadeBase#initialize()
4145      */
4146     @Override
4147     public void initialize()
4148     {
4149         this.getSuperEntity().initialize();
4150     }
4151 
4152     /**
4153      * @return Object getSuperEntity().getValidationOwner()
4154      * @see MetafacadeBase#getValidationOwner()
4155      */
4156     @Override
4157     public Object getValidationOwner()
4158     {
4159         Object owner = this.getSuperEntity().getValidationOwner();
4160         return owner;
4161     }
4162 
4163     /**
4164      * @return String getSuperEntity().getValidationName()
4165      * @see MetafacadeBase#getValidationName()
4166      */
4167     @Override
4168     public String getValidationName()
4169     {
4170         String name = this.getSuperEntity().getValidationName();
4171         return name;
4172     }
4173 
4174     /**
4175      * <p><b>Constraint:</b> org::andromda::cartridges::ejb3::metafacades::EJB3EntityFacade::entities can only generalize other entities or mapped superclasses</p>
4176      * <p><b>Error:</b> Entities can only generalize other entities or mapped superclasses.</p>
4177      * <p><b>OCL:</b> context EJB3EntityFacade
4178 inv: generalization -> notEmpty()
4179 implies (generalization.oclIsKindOf(EJB3EntityFacade) or generalization.oclIsKindOf(EJB3MappedSuperclassFacade))</p>
4180      * @param validationMessages Collection<ModelValidationMessage>
4181      * @see MetafacadeBase#validateInvariants(Collection validationMessages)
4182      */
4183     @Override
4184     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
4185     {
4186         this.getSuperEntity().validateInvariants(validationMessages);
4187         try
4188         {
4189             final Object contextElement = this.THIS();
4190             boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"generalization")))).booleanValue()?(OCLIntrospector.invoke(contextElement,"generalization") instanceof EJB3EntityFacade||OCLIntrospector.invoke(contextElement,"generalization") instanceof EJB3MappedSuperclassFacade):true));
4191             if (!constraintValid)
4192             {
4193                 validationMessages.add(
4194                     new ModelValidationMessage(
4195                         (MetafacadeBase)contextElement ,
4196                         "org::andromda::cartridges::ejb3::metafacades::EJB3EntityFacade::entities can only generalize other entities or mapped superclasses",
4197                         "Entities can only generalize other entities or mapped superclasses."));
4198             }
4199         }
4200         catch (Throwable th)
4201         {
4202             Throwable cause = th.getCause();
4203             int depth = 0; // Some throwables have infinite recursion
4204             while (cause != null && depth < 7)
4205             {
4206                 th = cause;
4207                 depth++;
4208             }
4209             logger.error("Error validating constraint 'org::andromda::cartridges::ejb3::metafacades::EJB3EntityFacade::entities can only generalize other entities or mapped superclasses' ON "
4210                 + this.THIS().toString() + ": " + th.getMessage(), th);
4211         }
4212     }
4213 
4214     /**
4215      * The property that stores the name of the metafacade.
4216      */
4217     private static final String NAME_PROPERTY = "name";
4218     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
4219 
4220     /**
4221      * @see Object#toString()
4222      */
4223     @Override
4224     public String toString()
4225     {
4226         final StringBuilder toString = new StringBuilder(this.getClass().getName());
4227         toString.append("[");
4228         try
4229         {
4230             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
4231         }
4232         catch (final Throwable tryAgain)
4233         {
4234             try
4235             {
4236                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
4237             }
4238             catch (final Throwable ignore)
4239             {
4240                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
4241             }
4242         }
4243         toString.append("]");
4244         return toString.toString();
4245     }
4246 }