001// license-header java merge-point
002//
003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
004//
005package org.andromda.cartridges.ejb3.metafacades;
006
007import java.util.Collection;
008import java.util.List;
009import org.andromda.core.common.Introspector;
010import org.andromda.core.metafacade.MetafacadeBase;
011import org.andromda.core.metafacade.MetafacadeFactory;
012import org.andromda.core.metafacade.ModelValidationMessage;
013import org.andromda.metafacades.uml.AssociationEndFacade;
014import org.andromda.metafacades.uml.AttributeFacade;
015import org.andromda.metafacades.uml.ClassifierFacade;
016import org.andromda.metafacades.uml.ConstraintFacade;
017import org.andromda.metafacades.uml.DependencyFacade;
018import org.andromda.metafacades.uml.Entity;
019import org.andromda.metafacades.uml.EntityAssociationEnd;
020import org.andromda.metafacades.uml.EntityQueryOperation;
021import org.andromda.metafacades.uml.GeneralizableElementFacade;
022import org.andromda.metafacades.uml.GeneralizationFacade;
023import org.andromda.metafacades.uml.ModelElementFacade;
024import org.andromda.metafacades.uml.ModelFacade;
025import org.andromda.metafacades.uml.OperationFacade;
026import org.andromda.metafacades.uml.PackageFacade;
027import org.andromda.metafacades.uml.Role;
028import org.andromda.metafacades.uml.StateMachineFacade;
029import org.andromda.metafacades.uml.StereotypeFacade;
030import org.andromda.metafacades.uml.TaggedValueFacade;
031import org.andromda.metafacades.uml.TemplateParameterFacade;
032import org.andromda.metafacades.uml.TypeMappings;
033import org.andromda.translation.ocl.validation.OCLCollections;
034import org.andromda.translation.ocl.validation.OCLIntrospector;
035import org.andromda.translation.ocl.validation.OCLResultEnsurer;
036import org.apache.log4j.Logger;
037
038/**
039 * Represents an entity EJB.
040 * MetafacadeLogic for EJB3EntityFacade
041 *
042 * @see EJB3EntityFacade
043 */
044public abstract class EJB3EntityFacadeLogic
045    extends MetafacadeBase
046    implements EJB3EntityFacade
047{
048    /**
049     * The underlying UML object
050     * @see Object
051     */
052    protected Object metaObject;
053
054    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
055     * @param metaObjectIn
056     * @param context
057     */
058    protected EJB3EntityFacadeLogic(Object metaObjectIn, String context)
059    {
060        super(metaObjectIn, getContext(context));
061        this.superEntity =
062           (Entity)
063            MetafacadeFactory.getInstance().createFacadeImpl(
064                    "org.andromda.metafacades.uml.Entity",
065                    metaObjectIn,
066                    getContext(context));
067        this.metaObject = metaObjectIn;
068    }
069
070    /**
071     * The logger instance.
072     */
073    private static final Logger logger = Logger.getLogger(EJB3EntityFacadeLogic.class);
074
075    /**
076     * Gets the context for this metafacade logic instance.
077     * @param context String. Set to EJB3EntityFacade if null
078     * @return context String
079     */
080    private static String getContext(String context)
081    {
082        if (context == null)
083        {
084            context = "org.andromda.cartridges.ejb3.metafacades.EJB3EntityFacade";
085        }
086        return context;
087    }
088
089    private Entity superEntity;
090    private boolean superEntityInitialized = false;
091
092    /**
093     * Gets the Entity parent instance.
094     * @return this.superEntity Entity
095     */
096    private Entity getSuperEntity()
097    {
098        if (!this.superEntityInitialized)
099        {
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
4178inv: generalization -> notEmpty()
4179implies (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}