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.ActorFacade;
014import org.andromda.metafacades.uml.AssociationEndFacade;
015import org.andromda.metafacades.uml.AttributeFacade;
016import org.andromda.metafacades.uml.ClassifierFacade;
017import org.andromda.metafacades.uml.ConstraintFacade;
018import org.andromda.metafacades.uml.DependencyFacade;
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.ManageableEntity;
024import org.andromda.metafacades.uml.ManageableEntityAssociationEnd;
025import org.andromda.metafacades.uml.ManageableEntityAttribute;
026import org.andromda.metafacades.uml.ModelElementFacade;
027import org.andromda.metafacades.uml.ModelFacade;
028import org.andromda.metafacades.uml.OperationFacade;
029import org.andromda.metafacades.uml.PackageFacade;
030import org.andromda.metafacades.uml.Role;
031import org.andromda.metafacades.uml.StateMachineFacade;
032import org.andromda.metafacades.uml.StereotypeFacade;
033import org.andromda.metafacades.uml.TaggedValueFacade;
034import org.andromda.metafacades.uml.TemplateParameterFacade;
035import org.andromda.metafacades.uml.TypeMappings;
036
037/**
038 * TODO: Model Documentation for org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade
039 * MetafacadeLogic for EJB3ManageableEntityFacade
040 *
041 * @see EJB3ManageableEntityFacade
042 */
043public abstract class EJB3ManageableEntityFacadeLogic
044    extends MetafacadeBase
045    implements EJB3ManageableEntityFacade
046{
047    /**
048     * The underlying UML object
049     * @see Object
050     */
051    protected Object metaObject;
052
053    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
054     * @param metaObjectIn
055     * @param context
056     */
057    protected EJB3ManageableEntityFacadeLogic(Object metaObjectIn, String context)
058    {
059        super(metaObjectIn, getContext(context));
060        this.superEJB3EntityFacade =
061           (EJB3EntityFacade)
062            MetafacadeFactory.getInstance().createFacadeImpl(
063                    "org.andromda.cartridges.ejb3.metafacades.EJB3EntityFacade",
064                    metaObjectIn,
065                    getContext(context));
066        this.superManageableEntity =
067           (ManageableEntity)
068            MetafacadeFactory.getInstance().createFacadeImpl(
069                    "org.andromda.metafacades.uml.ManageableEntity",
070                    metaObjectIn,
071                    getContext(context));
072        this.metaObject = metaObjectIn;
073    }
074
075    /**
076     * Gets the context for this metafacade logic instance.
077     * @param context String. Set to EJB3ManageableEntityFacade 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.EJB3ManageableEntityFacade";
085        }
086        return context;
087    }
088
089    private EJB3EntityFacade superEJB3EntityFacade;
090    private boolean superEJB3EntityFacadeInitialized = false;
091
092    /**
093     * Gets the EJB3EntityFacade parent instance.
094     * @return this.superEJB3EntityFacade EJB3EntityFacade
095     */
096    protected EJB3EntityFacade getSuperEJB3EntityFacade()
097    {
098        if (!this.superEJB3EntityFacadeInitialized)
099        {
100            ((MetafacadeBase)this.superEJB3EntityFacade).setMetafacadeContext(this.getMetafacadeContext());
101            this.superEJB3EntityFacadeInitialized = true;
102        }
103        return this.superEJB3EntityFacade;
104    }
105
106    private ManageableEntity superManageableEntity;
107    private boolean superManageableEntityInitialized = false;
108
109    /**
110     * Gets the ManageableEntity parent instance.
111     * @return this.superManageableEntity ManageableEntity
112     */
113    protected ManageableEntity getSuperManageableEntity()
114    {
115        if (!this.superManageableEntityInitialized)
116        {
117            ((MetafacadeBase)this.superManageableEntity).setMetafacadeContext(this.getMetafacadeContext());
118            this.superManageableEntityInitialized = true;
119        }
120        return this.superManageableEntity;
121    }
122
123    /** Reset context only for non-root metafacades
124     * @param context
125     * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
126     */
127    @Override
128    public void resetMetafacadeContext(String context)
129    {
130        if (!this.contextRoot) // reset context only for non-root metafacades
131        {
132            context = getContext(context);  // to have same value as in original constructor call
133            setMetafacadeContext (context);
134            if (this.superEJB3EntityFacadeInitialized)
135            {
136                ((MetafacadeBase)this.superEJB3EntityFacade).resetMetafacadeContext(context);
137            }
138            if (this.superManageableEntityInitialized)
139            {
140                ((MetafacadeBase)this.superManageableEntity).resetMetafacadeContext(context);
141            }
142        }
143    }
144
145    /**
146     * @return boolean true always
147     * @see EJB3ManageableEntityFacade
148     */
149    public boolean isEJB3ManageableEntityFacadeMetaType()
150    {
151        return true;
152    }
153
154    // --------------- attributes ---------------------
155
156   /**
157    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getFullyQualifiedManageableServiceCreateExceptionName()
158    * @return String
159    */
160    protected abstract String handleGetFullyQualifiedManageableServiceCreateExceptionName();
161
162    private String __fullyQualifiedManageableServiceCreateExceptionName1a;
163    private boolean __fullyQualifiedManageableServiceCreateExceptionName1aSet = false;
164
165    /**
166     * Returns the fully qualified name of the application create exception.
167     * @return (String)handleGetFullyQualifiedManageableServiceCreateExceptionName()
168     */
169    public final String getFullyQualifiedManageableServiceCreateExceptionName()
170    {
171        String fullyQualifiedManageableServiceCreateExceptionName1a = this.__fullyQualifiedManageableServiceCreateExceptionName1a;
172        if (!this.__fullyQualifiedManageableServiceCreateExceptionName1aSet)
173        {
174            // fullyQualifiedManageableServiceCreateExceptionName has no pre constraints
175            fullyQualifiedManageableServiceCreateExceptionName1a = handleGetFullyQualifiedManageableServiceCreateExceptionName();
176            // fullyQualifiedManageableServiceCreateExceptionName has no post constraints
177            this.__fullyQualifiedManageableServiceCreateExceptionName1a = fullyQualifiedManageableServiceCreateExceptionName1a;
178            if (isMetafacadePropertyCachingEnabled())
179            {
180                this.__fullyQualifiedManageableServiceCreateExceptionName1aSet = true;
181            }
182        }
183        return fullyQualifiedManageableServiceCreateExceptionName1a;
184    }
185
186   /**
187    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getFullyQualifiedManageableServiceReadExceptionName()
188    * @return String
189    */
190    protected abstract String handleGetFullyQualifiedManageableServiceReadExceptionName();
191
192    private String __fullyQualifiedManageableServiceReadExceptionName2a;
193    private boolean __fullyQualifiedManageableServiceReadExceptionName2aSet = false;
194
195    /**
196     * Returns the fully qualified name of the application read exception.
197     * @return (String)handleGetFullyQualifiedManageableServiceReadExceptionName()
198     */
199    public final String getFullyQualifiedManageableServiceReadExceptionName()
200    {
201        String fullyQualifiedManageableServiceReadExceptionName2a = this.__fullyQualifiedManageableServiceReadExceptionName2a;
202        if (!this.__fullyQualifiedManageableServiceReadExceptionName2aSet)
203        {
204            // fullyQualifiedManageableServiceReadExceptionName has no pre constraints
205            fullyQualifiedManageableServiceReadExceptionName2a = handleGetFullyQualifiedManageableServiceReadExceptionName();
206            // fullyQualifiedManageableServiceReadExceptionName has no post constraints
207            this.__fullyQualifiedManageableServiceReadExceptionName2a = fullyQualifiedManageableServiceReadExceptionName2a;
208            if (isMetafacadePropertyCachingEnabled())
209            {
210                this.__fullyQualifiedManageableServiceReadExceptionName2aSet = true;
211            }
212        }
213        return fullyQualifiedManageableServiceReadExceptionName2a;
214    }
215
216   /**
217    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getFullyQualifiedManageableServiceUpdateExceptionName()
218    * @return String
219    */
220    protected abstract String handleGetFullyQualifiedManageableServiceUpdateExceptionName();
221
222    private String __fullyQualifiedManageableServiceUpdateExceptionName3a;
223    private boolean __fullyQualifiedManageableServiceUpdateExceptionName3aSet = false;
224
225    /**
226     * Returns the fully qualified update application exception name.
227     * @return (String)handleGetFullyQualifiedManageableServiceUpdateExceptionName()
228     */
229    public final String getFullyQualifiedManageableServiceUpdateExceptionName()
230    {
231        String fullyQualifiedManageableServiceUpdateExceptionName3a = this.__fullyQualifiedManageableServiceUpdateExceptionName3a;
232        if (!this.__fullyQualifiedManageableServiceUpdateExceptionName3aSet)
233        {
234            // fullyQualifiedManageableServiceUpdateExceptionName has no pre constraints
235            fullyQualifiedManageableServiceUpdateExceptionName3a = handleGetFullyQualifiedManageableServiceUpdateExceptionName();
236            // fullyQualifiedManageableServiceUpdateExceptionName has no post constraints
237            this.__fullyQualifiedManageableServiceUpdateExceptionName3a = fullyQualifiedManageableServiceUpdateExceptionName3a;
238            if (isMetafacadePropertyCachingEnabled())
239            {
240                this.__fullyQualifiedManageableServiceUpdateExceptionName3aSet = true;
241            }
242        }
243        return fullyQualifiedManageableServiceUpdateExceptionName3a;
244    }
245
246   /**
247    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getFullyQualifiedManageableServiceDeleteExceptionName()
248    * @return String
249    */
250    protected abstract String handleGetFullyQualifiedManageableServiceDeleteExceptionName();
251
252    private String __fullyQualifiedManageableServiceDeleteExceptionName4a;
253    private boolean __fullyQualifiedManageableServiceDeleteExceptionName4aSet = false;
254
255    /**
256     * Returns the fully qualified delete application exception name.
257     * @return (String)handleGetFullyQualifiedManageableServiceDeleteExceptionName()
258     */
259    public final String getFullyQualifiedManageableServiceDeleteExceptionName()
260    {
261        String fullyQualifiedManageableServiceDeleteExceptionName4a = this.__fullyQualifiedManageableServiceDeleteExceptionName4a;
262        if (!this.__fullyQualifiedManageableServiceDeleteExceptionName4aSet)
263        {
264            // fullyQualifiedManageableServiceDeleteExceptionName has no pre constraints
265            fullyQualifiedManageableServiceDeleteExceptionName4a = handleGetFullyQualifiedManageableServiceDeleteExceptionName();
266            // fullyQualifiedManageableServiceDeleteExceptionName has no post constraints
267            this.__fullyQualifiedManageableServiceDeleteExceptionName4a = fullyQualifiedManageableServiceDeleteExceptionName4a;
268            if (isMetafacadePropertyCachingEnabled())
269            {
270                this.__fullyQualifiedManageableServiceDeleteExceptionName4aSet = true;
271            }
272        }
273        return fullyQualifiedManageableServiceDeleteExceptionName4a;
274    }
275
276   /**
277    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getJndiNamePrefix()
278    * @return String
279    */
280    protected abstract String handleGetJndiNamePrefix();
281
282    private String __jndiNamePrefix5a;
283    private boolean __jndiNamePrefix5aSet = false;
284
285    /**
286     * Returns the JNDI name prefix for this menageable session bean.  This is set using the
287     * jndiNamePrefix namespace property and is commonly the ear file name excluding the extension
288     * for the EJB3 cartridge.  The JNDI name prefix is applied like so:
289     * jndiPrefix/EJBName/Remote
290     * @return (String)handleGetJndiNamePrefix()
291     */
292    public final String getJndiNamePrefix()
293    {
294        String jndiNamePrefix5a = this.__jndiNamePrefix5a;
295        if (!this.__jndiNamePrefix5aSet)
296        {
297            // jndiNamePrefix has no pre constraints
298            jndiNamePrefix5a = handleGetJndiNamePrefix();
299            // jndiNamePrefix has no post constraints
300            this.__jndiNamePrefix5a = jndiNamePrefix5a;
301            if (isMetafacadePropertyCachingEnabled())
302            {
303                this.__jndiNamePrefix5aSet = true;
304            }
305        }
306        return jndiNamePrefix5a;
307    }
308
309   /**
310    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getManageableServiceBaseName()
311    * @return String
312    */
313    protected abstract String handleGetManageableServiceBaseName();
314
315    private String __manageableServiceBaseName6a;
316    private boolean __manageableServiceBaseName6aSet = false;
317
318    /**
319     * Returns the manageable service base class name.  This is the manageable session bean
320     * containing the CRUD implementation.
321     * @return (String)handleGetManageableServiceBaseName()
322     */
323    public final String getManageableServiceBaseName()
324    {
325        String manageableServiceBaseName6a = this.__manageableServiceBaseName6a;
326        if (!this.__manageableServiceBaseName6aSet)
327        {
328            // manageableServiceBaseName has no pre constraints
329            manageableServiceBaseName6a = handleGetManageableServiceBaseName();
330            // manageableServiceBaseName has no post constraints
331            this.__manageableServiceBaseName6a = manageableServiceBaseName6a;
332            if (isMetafacadePropertyCachingEnabled())
333            {
334                this.__manageableServiceBaseName6aSet = true;
335            }
336        }
337        return manageableServiceBaseName6a;
338    }
339
340   /**
341    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getManageableServiceBaseFullPath()
342    * @return String
343    */
344    protected abstract String handleGetManageableServiceBaseFullPath();
345
346    private String __manageableServiceBaseFullPath7a;
347    private boolean __manageableServiceBaseFullPath7aSet = false;
348
349    /**
350     * Returns the manageable service base class fully qualified path used to set the template
351     * generated file.
352     * @return (String)handleGetManageableServiceBaseFullPath()
353     */
354    public final String getManageableServiceBaseFullPath()
355    {
356        String manageableServiceBaseFullPath7a = this.__manageableServiceBaseFullPath7a;
357        if (!this.__manageableServiceBaseFullPath7aSet)
358        {
359            // manageableServiceBaseFullPath has no pre constraints
360            manageableServiceBaseFullPath7a = handleGetManageableServiceBaseFullPath();
361            // manageableServiceBaseFullPath has no post constraints
362            this.__manageableServiceBaseFullPath7a = manageableServiceBaseFullPath7a;
363            if (isMetafacadePropertyCachingEnabled())
364            {
365                this.__manageableServiceBaseFullPath7aSet = true;
366            }
367        }
368        return manageableServiceBaseFullPath7a;
369    }
370
371   /**
372    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getFullyQualifiedManageableServiceBaseName()
373    * @return String
374    */
375    protected abstract String handleGetFullyQualifiedManageableServiceBaseName();
376
377    private String __fullyQualifiedManageableServiceBaseName8a;
378    private boolean __fullyQualifiedManageableServiceBaseName8aSet = false;
379
380    /**
381     * Returns the fully qualified manageable service base class name that contains the
382     * implementation.
383     * @return (String)handleGetFullyQualifiedManageableServiceBaseName()
384     */
385    public final String getFullyQualifiedManageableServiceBaseName()
386    {
387        String fullyQualifiedManageableServiceBaseName8a = this.__fullyQualifiedManageableServiceBaseName8a;
388        if (!this.__fullyQualifiedManageableServiceBaseName8aSet)
389        {
390            // fullyQualifiedManageableServiceBaseName has no pre constraints
391            fullyQualifiedManageableServiceBaseName8a = handleGetFullyQualifiedManageableServiceBaseName();
392            // fullyQualifiedManageableServiceBaseName has no post constraints
393            this.__fullyQualifiedManageableServiceBaseName8a = fullyQualifiedManageableServiceBaseName8a;
394            if (isMetafacadePropertyCachingEnabled())
395            {
396                this.__fullyQualifiedManageableServiceBaseName8aSet = true;
397            }
398        }
399        return fullyQualifiedManageableServiceBaseName8a;
400    }
401
402   /**
403    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getManageableServiceCreateExceptionName()
404    * @return String
405    */
406    protected abstract String handleGetManageableServiceCreateExceptionName();
407
408    private String __manageableServiceCreateExceptionName9a;
409    private boolean __manageableServiceCreateExceptionName9aSet = false;
410
411    /**
412     * Returns the manageable service create exception name.
413     * @return (String)handleGetManageableServiceCreateExceptionName()
414     */
415    public final String getManageableServiceCreateExceptionName()
416    {
417        String manageableServiceCreateExceptionName9a = this.__manageableServiceCreateExceptionName9a;
418        if (!this.__manageableServiceCreateExceptionName9aSet)
419        {
420            // manageableServiceCreateExceptionName has no pre constraints
421            manageableServiceCreateExceptionName9a = handleGetManageableServiceCreateExceptionName();
422            // manageableServiceCreateExceptionName has no post constraints
423            this.__manageableServiceCreateExceptionName9a = manageableServiceCreateExceptionName9a;
424            if (isMetafacadePropertyCachingEnabled())
425            {
426                this.__manageableServiceCreateExceptionName9aSet = true;
427            }
428        }
429        return manageableServiceCreateExceptionName9a;
430    }
431
432   /**
433    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getManageableServiceReadExceptionName()
434    * @return String
435    */
436    protected abstract String handleGetManageableServiceReadExceptionName();
437
438    private String __manageableServiceReadExceptionName10a;
439    private boolean __manageableServiceReadExceptionName10aSet = false;
440
441    /**
442     * Returns the manageable service read exception name.
443     * @return (String)handleGetManageableServiceReadExceptionName()
444     */
445    public final String getManageableServiceReadExceptionName()
446    {
447        String manageableServiceReadExceptionName10a = this.__manageableServiceReadExceptionName10a;
448        if (!this.__manageableServiceReadExceptionName10aSet)
449        {
450            // manageableServiceReadExceptionName has no pre constraints
451            manageableServiceReadExceptionName10a = handleGetManageableServiceReadExceptionName();
452            // manageableServiceReadExceptionName has no post constraints
453            this.__manageableServiceReadExceptionName10a = manageableServiceReadExceptionName10a;
454            if (isMetafacadePropertyCachingEnabled())
455            {
456                this.__manageableServiceReadExceptionName10aSet = true;
457            }
458        }
459        return manageableServiceReadExceptionName10a;
460    }
461
462   /**
463    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getManageableServiceUpdateExceptionName()
464    * @return String
465    */
466    protected abstract String handleGetManageableServiceUpdateExceptionName();
467
468    private String __manageableServiceUpdateExceptionName11a;
469    private boolean __manageableServiceUpdateExceptionName11aSet = false;
470
471    /**
472     * Returns the manageable service update exception name.
473     * @return (String)handleGetManageableServiceUpdateExceptionName()
474     */
475    public final String getManageableServiceUpdateExceptionName()
476    {
477        String manageableServiceUpdateExceptionName11a = this.__manageableServiceUpdateExceptionName11a;
478        if (!this.__manageableServiceUpdateExceptionName11aSet)
479        {
480            // manageableServiceUpdateExceptionName has no pre constraints
481            manageableServiceUpdateExceptionName11a = handleGetManageableServiceUpdateExceptionName();
482            // manageableServiceUpdateExceptionName has no post constraints
483            this.__manageableServiceUpdateExceptionName11a = manageableServiceUpdateExceptionName11a;
484            if (isMetafacadePropertyCachingEnabled())
485            {
486                this.__manageableServiceUpdateExceptionName11aSet = true;
487            }
488        }
489        return manageableServiceUpdateExceptionName11a;
490    }
491
492   /**
493    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getManageableServiceDeleteExceptionName()
494    * @return String
495    */
496    protected abstract String handleGetManageableServiceDeleteExceptionName();
497
498    private String __manageableServiceDeleteExceptionName12a;
499    private boolean __manageableServiceDeleteExceptionName12aSet = false;
500
501    /**
502     * Returns the manageable service delete exception name.
503     * @return (String)handleGetManageableServiceDeleteExceptionName()
504     */
505    public final String getManageableServiceDeleteExceptionName()
506    {
507        String manageableServiceDeleteExceptionName12a = this.__manageableServiceDeleteExceptionName12a;
508        if (!this.__manageableServiceDeleteExceptionName12aSet)
509        {
510            // manageableServiceDeleteExceptionName has no pre constraints
511            manageableServiceDeleteExceptionName12a = handleGetManageableServiceDeleteExceptionName();
512            // manageableServiceDeleteExceptionName has no post constraints
513            this.__manageableServiceDeleteExceptionName12a = manageableServiceDeleteExceptionName12a;
514            if (isMetafacadePropertyCachingEnabled())
515            {
516                this.__manageableServiceDeleteExceptionName12aSet = true;
517            }
518        }
519        return manageableServiceDeleteExceptionName12a;
520    }
521
522   /**
523    * @see org.andromda.cartridges.ejb3.metafacades.EJB3ManageableEntityFacade#getManageableRolesAllowed()
524    * @return String
525    */
526    protected abstract String handleGetManageableRolesAllowed();
527
528    private String __manageableRolesAllowed13a;
529    private boolean __manageableRolesAllowed13aSet = false;
530
531    /**
532     * Returns the comma separated list of roles which are used to secure manageable service beans.
533     * @return (String)handleGetManageableRolesAllowed()
534     */
535    public final String getManageableRolesAllowed()
536    {
537        String manageableRolesAllowed13a = this.__manageableRolesAllowed13a;
538        if (!this.__manageableRolesAllowed13aSet)
539        {
540            // manageableRolesAllowed has no pre constraints
541            manageableRolesAllowed13a = handleGetManageableRolesAllowed();
542            // manageableRolesAllowed has no post constraints
543            this.__manageableRolesAllowed13a = manageableRolesAllowed13a;
544            if (isMetafacadePropertyCachingEnabled())
545            {
546                this.__manageableRolesAllowed13aSet = true;
547            }
548        }
549        return manageableRolesAllowed13a;
550    }
551
552    /**
553     * @return true
554     * @see EJB3EntityFacade
555     */
556    public boolean isEJB3EntityFacadeMetaType()
557    {
558        return true;
559    }
560
561    /**
562     * @return true
563     * @see ManageableEntity
564     */
565    public boolean isManageableEntityMetaType()
566    {
567        return true;
568    }
569
570    /**
571     * @return true
572     * @see org.andromda.metafacades.uml.Entity
573     */
574    public boolean isEntityMetaType()
575    {
576        return true;
577    }
578
579    /**
580     * @return true
581     * @see ClassifierFacade
582     */
583    public boolean isClassifierFacadeMetaType()
584    {
585        return true;
586    }
587
588    /**
589     * @return true
590     * @see GeneralizableElementFacade
591     */
592    public boolean isGeneralizableElementFacadeMetaType()
593    {
594        return true;
595    }
596
597    /**
598     * @return true
599     * @see ModelElementFacade
600     */
601    public boolean isModelElementFacadeMetaType()
602    {
603        return true;
604    }
605
606    // ----------- delegates to EJB3EntityFacade ------------
607    /**
608     * Find all associations that define relations to other entities.
609     * This method returns the source association ends for all associations that define
610     * a container managed relation.  The returned collection includes both
611     * direct relations and inherited relations. A direct relation is an association with some other
612     * class matching the following criteria: 1) The class at the other side of the association is
613     * stereotyped <<Entity>> 2) The association is navigable from to the other side.
614     * An inherited relation is an association from an abstract super type matching the following
615     * criteria: 1) The inheritance path to this abstract super type, including this super type
616     * itself, consists only of abstract classes with stereotype <<Entity>> 2)  The class at the
617     * other side of the association is stereotyped <<Entity>>. 3) The association is navigable from
618     * this abstract super type to the other side.
619     * Relations must match the following integrity constraint:
620     * - The <<Entity>> at the target end is not abstract.
621     * The integrity constraint is necessary because the target of a container managed relation in
622     * the EJB framework must be a concrete entity bean; there is no such thing as an
623     * "abstract entity bean" in the EJB specification. It is possible, however, to generate and
624     * compile code for this case, an error will only show up at deploy time. In order to catch
625     * this kind of error at the earliest possible stage, this method checks the integrity
626     * constraint and throws an exception if it is violated.
627     * @see EJB3EntityFacade#getAllEntityRelations()
628     */
629    public Collection getAllEntityRelations()
630    {
631        return this.getSuperEJB3EntityFacade().getAllEntityRelations();
632    }
633
634    /**
635     * All instanceAttributes for this entity. The list includes the instanceAttributes that are
636     * inherited from super classes. The list contains the inherited instanceAttributes first,
637     * followed by the instanceAttributes defined in this class.
638     * @see EJB3EntityFacade#getAllInstanceAttributes()
639     */
640    public List getAllInstanceAttributes()
641    {
642        return this.getSuperEJB3EntityFacade().getAllInstanceAttributes();
643    }
644
645    /**
646     * Returns all value object references (this includes all those that are inherited from any
647     * parent entities)
648     * @see EJB3EntityFacade#getAllValueObjectReferences()
649     */
650    public Collection<DependencyFacade> getAllValueObjectReferences()
651    {
652        return this.getSuperEJB3EntityFacade().getAllValueObjectReferences();
653    }
654
655    /**
656     * Create a comma separated list of attributes. This method can be used to generate argument
657     * lists for constructors, method calls etc. It will not return attributes tagged to be
658     * optimistic lock values.  It will consider LOB attributes where the LOB type has been
659     * overridden using the @androma.persistence.lob.type tagged value.
660     * @see EJB3EntityFacade#getAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames, boolean includeAutoIdentifiers)
661     */
662    public String getAttributesAsList(Collection attributes, boolean includeTypes, boolean includeNames, boolean includeAutoIdentifiers)
663    {
664        return this.getSuperEJB3EntityFacade().getAttributesAsList(attributes, includeTypes, includeNames, includeAutoIdentifiers);
665    }
666
667    /**
668     * Provides the cache policy for the entity.
669     * Posible values are NONE, READ_WRITE, NONSTRICT_READ_WRITE, READ_ONLY, TRANSACTIONAL.
670     * @see EJB3EntityFacade#getCacheType()
671     */
672    public String getCacheType()
673    {
674        return this.getSuperEJB3EntityFacade().getCacheType();
675    }
676
677    /**
678     * Gets all constants for this entity. Constants are defined as static read-only attributes
679     * which do NOT have the <<EnvEntry>> stereotype.   If 'follow' is true, then the inheritance
680     * hierarchy will be followed and we'll retrieve all constants from any super types as well.
681     * @see EJB3EntityFacade#getConstants(boolean follow)
682     */
683    public Collection getConstants(boolean follow)
684    {
685        return this.getSuperEJB3EntityFacade().getConstants(follow);
686    }
687
688    /**
689     * Gets create methods for the entity.  If 'follow'l is set to true, create methods from any
690     * super types will also be retrieved by following up the inheritance chain.
691     * @see EJB3EntityFacade#getCreateMethods(boolean follow)
692     */
693    public Collection getCreateMethods(boolean follow)
694    {
695        return this.getSuperEJB3EntityFacade().getCreateMethods(follow);
696    }
697
698    /**
699     * The DAO base class name.  This is the abstract DAO that containsCRUD operations as well as
700     * any generated finders defined on an entity.
701     * @see EJB3EntityFacade#getDaoBaseName()
702     */
703    public String getDaoBaseName()
704    {
705        return this.getSuperEJB3EntityFacade().getDaoBaseName();
706    }
707
708    /**
709     * The business operations modeled on the entity that will be generated on the DAO (Data Access
710     * Object).
711     * @see EJB3EntityFacade#getDaoBusinessOperations()
712     */
713    public Collection<EJB3OperationFacade> getDaoBusinessOperations()
714    {
715        return this.getSuperEJB3EntityFacade().getDaoBusinessOperations();
716    }
717
718    /**
719     * Returns the default DAO exception name.
720     * @see EJB3EntityFacade#getDaoDefaultExceptionName()
721     */
722    public String getDaoDefaultExceptionName()
723    {
724        return this.getSuperEJB3EntityFacade().getDaoDefaultExceptionName();
725    }
726
727    /**
728     * The DAO implementation class name.
729     * @see EJB3EntityFacade#getDaoImplementationName()
730     */
731    public String getDaoImplementationName()
732    {
733        return this.getSuperEJB3EntityFacade().getDaoImplementationName();
734    }
735
736    /**
737     * The name of the DAO for the specified entity.
738     * @see EJB3EntityFacade#getDaoName()
739     */
740    public String getDaoName()
741    {
742        return this.getSuperEJB3EntityFacade().getDaoName();
743    }
744
745    /**
746     * The constant name denoting no transformation is to be applied.
747     * @see EJB3EntityFacade#getDaoNoTransformationConstantName()
748     */
749    public String getDaoNoTransformationConstantName()
750    {
751        return this.getSuperEJB3EntityFacade().getDaoNoTransformationConstantName();
752    }
753
754    /**
755     * Returns the default entity cascadable property attribute looked up in the namespace
756     * descriptor.
757     * @see EJB3EntityFacade#getDefaultCascadeType()
758     */
759    public String getDefaultCascadeType()
760    {
761        return this.getSuperEJB3EntityFacade().getDefaultCascadeType();
762    }
763
764    /**
765     * Returns the default persistence context unit name for the injected EntityManger for the
766     * DAO/Manageable service beans.  It is derived from the persistenceContextUnitName namespace
767     * property.
768     * @see EJB3EntityFacade#getDefaultPersistenceContextUnitName()
769     */
770    public String getDefaultPersistenceContextUnitName()
771    {
772        return this.getSuperEJB3EntityFacade().getDefaultPersistenceContextUnitName();
773    }
774
775    /**
776     * The name of the discriminator column.  Default is TYPE if this is missing.
777     * @see EJB3EntityFacade#getDiscriminatorColumn()
778     */
779    public String getDiscriminatorColumn()
780    {
781        return this.getSuperEJB3EntityFacade().getDiscriminatorColumn();
782    }
783
784    /**
785     * The SQL used when generating the DDL for the discriminator column.
786     * @see EJB3EntityFacade#getDiscriminatorColumnDefinition()
787     */
788    public String getDiscriminatorColumnDefinition()
789    {
790        return this.getSuperEJB3EntityFacade().getDiscriminatorColumnDefinition();
791    }
792
793    /**
794     * The standard length of a discriminator value.  Default is 10.
795     * @see EJB3EntityFacade#getDiscriminatorLength()
796     */
797    public int getDiscriminatorLength()
798    {
799        return this.getSuperEJB3EntityFacade().getDiscriminatorLength();
800    }
801
802    /**
803     * The type of the entity discriminator column.  Default is STRING.
804     * @see EJB3EntityFacade#getDiscriminatorType()
805     */
806    public String getDiscriminatorType()
807    {
808        return this.getSuperEJB3EntityFacade().getDiscriminatorType();
809    }
810
811    /**
812     * The value indicating the row in an entity of the annotated entity type.
813     * @see EJB3EntityFacade#getDiscriminatorValue()
814     */
815    public String getDiscriminatorValue()
816    {
817        return this.getSuperEJB3EntityFacade().getDiscriminatorValue();
818    }
819
820    /**
821     * Entity composite primary key class name for this entity.
822     * @see EJB3EntityFacade#getEntityCompositePrimaryKeyName()
823     */
824    public String getEntityCompositePrimaryKeyName()
825    {
826        return this.getSuperEJB3EntityFacade().getEntityCompositePrimaryKeyName();
827    }
828
829    /**
830     * Entity embeddable super class name this entity inherits from.
831     * @see EJB3EntityFacade#getEntityEmbeddableName()
832     */
833    public String getEntityEmbeddableName()
834    {
835        return this.getSuperEJB3EntityFacade().getEntityEmbeddableName();
836    }
837
838    /**
839     * The name of the implementation class.
840     * @see EJB3EntityFacade#getEntityImplementationName()
841     */
842    public String getEntityImplementationName()
843    {
844        return this.getSuperEJB3EntityFacade().getEntityImplementationName();
845    }
846
847    /**
848     * Entity listener class name for callback methods.
849     * @see EJB3EntityFacade#getEntityListenerName()
850     */
851    public String getEntityListenerName()
852    {
853        return this.getSuperEJB3EntityFacade().getEntityListenerName();
854    }
855
856    /**
857     * The named used for the EJB3 entity.
858     * @see EJB3EntityFacade#getEntityName()
859     */
860    public String getEntityName()
861    {
862        return this.getSuperEJB3EntityFacade().getEntityName();
863    }
864
865    /**
866     * Entity classes that are association relationships from this entity.
867     * @see EJB3EntityFacade#getEntityRelations()
868     */
869    public Collection getEntityRelations()
870    {
871        return this.getSuperEJB3EntityFacade().getEntityRelations();
872    }
873
874    /**
875     * Gets all env-entries for the specified entity EJB. Env-entries are stored as static
876     * attributes on the entity and stereotyped as <<EnvEntry>>.  If 'follow' is true, then the
877     * inheritance hierarchy will be followed and we'll retrieve all env-entries from any super
878     * types as well.
879     * @see EJB3EntityFacade#getEnvironmentEntries(boolean follow)
880     */
881    public Collection getEnvironmentEntries(boolean follow)
882    {
883        return this.getSuperEJB3EntityFacade().getEnvironmentEntries(follow);
884    }
885
886    /**
887     * The fully qualified name of the base DAO.
888     * @see EJB3EntityFacade#getFullyQualifiedDaoBaseName()
889     */
890    public String getFullyQualifiedDaoBaseName()
891    {
892        return this.getSuperEJB3EntityFacade().getFullyQualifiedDaoBaseName();
893    }
894
895    /**
896     * Returns the fully qualified default DAO exception name.
897     * @see EJB3EntityFacade#getFullyQualifiedDaoDefaultExceptionName()
898     */
899    public String getFullyQualifiedDaoDefaultExceptionName()
900    {
901        return this.getSuperEJB3EntityFacade().getFullyQualifiedDaoDefaultExceptionName();
902    }
903
904    /**
905     * The fully qualified name of the DAO implemetation.
906     * @see EJB3EntityFacade#getFullyQualifiedDaoImplementationName()
907     */
908    public String getFullyQualifiedDaoImplementationName()
909    {
910        return this.getSuperEJB3EntityFacade().getFullyQualifiedDaoImplementationName();
911    }
912
913    /**
914     * The fully qualified name of the DAO.
915     * @see EJB3EntityFacade#getFullyQualifiedDaoName()
916     */
917    public String getFullyQualifiedDaoName()
918    {
919        return this.getSuperEJB3EntityFacade().getFullyQualifiedDaoName();
920    }
921
922    /**
923     * The fully qualified name of the composite primary key class of this entity.
924     * @see EJB3EntityFacade#getFullyQualifiedEntityCompositePrimaryKeyName()
925     */
926    public String getFullyQualifiedEntityCompositePrimaryKeyName()
927    {
928        return this.getSuperEJB3EntityFacade().getFullyQualifiedEntityCompositePrimaryKeyName();
929    }
930
931    /**
932     * The fully qualified name of the embeddable super class of this entity.
933     * @see EJB3EntityFacade#getFullyQualifiedEntityEmbeddableName()
934     */
935    public String getFullyQualifiedEntityEmbeddableName()
936    {
937        return this.getSuperEJB3EntityFacade().getFullyQualifiedEntityEmbeddableName();
938    }
939
940    /**
941     * Fully qualified name of the Entity implementation class.
942     * @see EJB3EntityFacade#getFullyQualifiedEntityImplementationName()
943     */
944    public String getFullyQualifiedEntityImplementationName()
945    {
946        return this.getSuperEJB3EntityFacade().getFullyQualifiedEntityImplementationName();
947    }
948
949    /**
950     * Fully qualified name of the Entity listner class holding entity callback methods.
951     * @see EJB3EntityFacade#getFullyQualifiedEntityListenerName()
952     */
953    public String getFullyQualifiedEntityListenerName()
954    {
955        return this.getSuperEJB3EntityFacade().getFullyQualifiedEntityListenerName();
956    }
957
958    /**
959     * The fully qualified name of the EJB3 entity.
960     * @see EJB3EntityFacade#getFullyQualifiedEntityName()
961     */
962    public String getFullyQualifiedEntityName()
963    {
964        return this.getSuperEJB3EntityFacade().getFullyQualifiedEntityName();
965    }
966
967    /**
968     * A String representing the name of a home interface for this entity EJB.
969     * @see EJB3EntityFacade#getHomeInterfaceName()
970     */
971    public String getHomeInterfaceName()
972    {
973        return this.getSuperEJB3EntityFacade().getHomeInterfaceName();
974    }
975
976    /**
977     * Returns the identifier, which can be an attribute or an association. For an association, the
978     * target primary key is used as part of the embedded identifier.
979     * @see EJB3EntityFacade#getIdentifier()
980     */
981    public ModelElementFacade getIdentifier()
982    {
983        return this.getSuperEJB3EntityFacade().getIdentifier();
984    }
985
986    /**
987     * Return the value of the andromda_persistence_inheritance tagged value which is an enumeration
988     * containing SINGLE_TABLE, TABLE_PER_CLASS or JOINED.
989     * @see EJB3EntityFacade#getInheritanceStrategy()
990     */
991    public String getInheritanceStrategy()
992    {
993        return this.getSuperEJB3EntityFacade().getInheritanceStrategy();
994    }
995
996    /**
997     * All inherited instanceAttributes this class.  The instanceAttributes are grouped by the class
998     * that defines the instanceAttributes, with instanceAttributes from the most removed super
999     * class first.
1000     * @see EJB3EntityFacade#getInheritedInstanceAttributes()
1001     */
1002    public List getInheritedInstanceAttributes()
1003    {
1004        return this.getSuperEJB3EntityFacade().getInheritedInstanceAttributes();
1005    }
1006
1007    /**
1008     * Gets a comma separated list of instance attribute names.  If 'follow' is true, will travel up
1009     * the inheritance hierarchy to include instance attributes in parent entities as well.  If
1010     * 'withIdentifiers' is true, will include identifiers.
1011     * @see EJB3EntityFacade#getInstanceAttributeNameList(boolean follow, boolean withIdentifiers)
1012     */
1013    public String getInstanceAttributeNameList(boolean follow, boolean withIdentifiers)
1014    {
1015        return this.getSuperEJB3EntityFacade().getInstanceAttributeNameList(follow, withIdentifiers);
1016    }
1017
1018    /**
1019     * Gets a comma separated list of instance attribute types.  If 'follow' is true, will travel up
1020     * the inheritance hierarchy to include instance attribute types in parent entities as well.  If
1021     * 'withIdentifiers' is true, will include identifiers.
1022     * @see EJB3EntityFacade#getInstanceAttributeTypeList(boolean follow, boolean withIdentifiers)
1023     */
1024    public String getInstanceAttributeTypeList(boolean follow, boolean withIdentifiers)
1025    {
1026        return this.getSuperEJB3EntityFacade().getInstanceAttributeTypeList(follow, withIdentifiers);
1027    }
1028
1029    /**
1030     * Gets all instance attributes of the entity, and optionally retieves the super entities
1031     * instance attributes as well as excludes the entity's identifiers if 'withIdentifiers' is set
1032     * to false.
1033     * @see EJB3EntityFacade#getInstanceAttributes(boolean follow, boolean withIdentifiers)
1034     */
1035    public Collection getInstanceAttributes(boolean follow, boolean withIdentifiers)
1036    {
1037        return this.getSuperEJB3EntityFacade().getInstanceAttributes(follow, withIdentifiers);
1038    }
1039
1040    /**
1041     * jndiNamePrefix/ejb/this.getFullyQualifiedName()
1042     * @see EJB3EntityFacade#getJndiName()
1043     */
1044    public String getJndiName()
1045    {
1046        return this.getSuperEJB3EntityFacade().getJndiName();
1047    }
1048
1049    /**
1050     * Find the attribute with 'andromda_manageable_table_displayname'
1051     * @see EJB3EntityFacade#getManageableDisplayAttribute()
1052     */
1053    public AttributeFacade getManageableDisplayAttribute()
1054    {
1055        return this.getSuperEJB3EntityFacade().getManageableDisplayAttribute();
1056    }
1057
1058    /**
1059     * Return all dependent Roles with the stereotype 'RunAs'
1060     * @see EJB3EntityFacade#getNonRunAsRoles()
1061     */
1062    public Collection<Role> getNonRunAsRoles()
1063    {
1064        return this.getSuperEJB3EntityFacade().getNonRunAsRoles();
1065    }
1066
1067    /**
1068     * Returns the comma separated list of roles allowd to execute DAO operations.  This is defined
1069     * by actor dependencies on the entity.
1070     * @see EJB3EntityFacade#getRolesAllowed()
1071     */
1072    public String getRolesAllowed()
1073    {
1074        return this.getSuperEJB3EntityFacade().getRolesAllowed();
1075    }
1076
1077    /**
1078     * Travels up the inheritance hierarchy and retrieves the root of this entity.  If the root is
1079     * the entity itself then just the entity is returned.
1080     * @see EJB3EntityFacade#getRoot()
1081     */
1082    public EJB3EntityFacade getRoot()
1083    {
1084        return this.getSuperEJB3EntityFacade().getRoot();
1085    }
1086
1087    /**
1088     * Returns the Seam component name for the class.
1089     * @see EJB3EntityFacade#getSeamComponentName()
1090     */
1091    public String getSeamComponentName()
1092    {
1093        return this.getSuperEJB3EntityFacade().getSeamComponentName();
1094    }
1095
1096    /**
1097     * Returns the seam component scope type if one is specified.
1098     * @see EJB3EntityFacade#getSeamComponentScopeType()
1099     */
1100    public String getSeamComponentScopeType()
1101    {
1102        return this.getSuperEJB3EntityFacade().getSeamComponentScopeType();
1103    }
1104
1105    /**
1106     * Returns the security domain value.  Specified using the securityRealm namespace property or
1107     * overridden in the andromda.ejb.security.realm tagged value.
1108     * @see EJB3EntityFacade#getSecurityRealm()
1109     */
1110    public String getSecurityRealm()
1111    {
1112        return this.getSuperEJB3EntityFacade().getSecurityRealm();
1113    }
1114
1115    /**
1116     * Gets select methods for the entity, if all is set to 'true' then ALL select methods will be
1117     * retrieved (including those inherited from any superclasses).
1118     * @see EJB3EntityFacade#getSelectMethods(boolean follow)
1119     */
1120    public Collection getSelectMethods(boolean follow)
1121    {
1122        return this.getSuperEJB3EntityFacade().getSelectMethods(follow);
1123    }
1124
1125    /**
1126     * Gets the SQL Mappings from the SQLMappings URI
1127     * @see EJB3EntityFacade#getSqlType()
1128     */
1129    public String getSqlType()
1130    {
1131        return this.getSuperEJB3EntityFacade().getSqlType();
1132    }
1133
1134    /**
1135     * ValueObject dependency references from this Entity
1136     * @see EJB3EntityFacade#getValueDependencies()
1137     */
1138    public Collection getValueDependencies()
1139    {
1140        return this.getSuperEJB3EntityFacade().getValueDependencies();
1141    }
1142
1143    /**
1144     * Retrieves the value object dependencies for this entity without inherited object references.
1145     * @see EJB3EntityFacade#getValueObjectReferences()
1146     */
1147    public Collection<DependencyFacade> getValueObjectReferences()
1148    {
1149        return this.getSuperEJB3EntityFacade().getValueObjectReferences();
1150    }
1151
1152    /**
1153     * Retrieves the values object references for this entity.  If <code>follow</code> is true, then
1154     * all value object references (including those that were inherited) will be retrieved.
1155     * @see EJB3EntityFacade#getValueObjectReferences(boolean follow)
1156     */
1157    public Collection getValueObjectReferences(boolean follow)
1158    {
1159        return this.getSuperEJB3EntityFacade().getValueObjectReferences(follow);
1160    }
1161
1162    /**
1163     * A string indicating whether the Bean is a local or remotely accessable bean.
1164     * @see EJB3EntityFacade#getViewType()
1165     */
1166    public String getViewType()
1167    {
1168        return this.getSuperEJB3EntityFacade().getViewType();
1169    }
1170
1171    /**
1172     * If the attribute att is present
1173     * @see EJB3EntityFacade#isAttributePresent(String att)
1174     */
1175    public boolean isAttributePresent(String att)
1176    {
1177        return this.getSuperEJB3EntityFacade().isAttributePresent(att);
1178    }
1179
1180    /**
1181     * Returns true if caching has been enabled via namespace property hibernateEnableCache.
1182     * @see EJB3EntityFacade#isCacheEnabled()
1183     */
1184    public boolean isCacheEnabled()
1185    {
1186        return this.getSuperEJB3EntityFacade().isCacheEnabled();
1187    }
1188
1189    /**
1190     * Returns true if a composite primary key exists for this entity bean.  A composite primary key
1191     * consists of 2 or more entity identifiers.
1192     * @see EJB3EntityFacade#isCompositePrimaryKeyPresent()
1193     */
1194    public boolean isCompositePrimaryKeyPresent()
1195    {
1196        return this.getSuperEJB3EntityFacade().isCompositePrimaryKeyPresent();
1197    }
1198
1199    /**
1200     * Indicates whether or not any business DAO operations are present.
1201     * @see EJB3EntityFacade#isDaoBusinessOperationsPresent()
1202     */
1203    public boolean isDaoBusinessOperationsPresent()
1204    {
1205        return this.getSuperEJB3EntityFacade().isDaoBusinessOperationsPresent();
1206    }
1207
1208    /**
1209     * True if an implementation is required for the dao class, this is the case when there are
1210     * business operations or value-object transformation.
1211     * @see EJB3EntityFacade#isDaoImplementationRequired()
1212     */
1213    public boolean isDaoImplementationRequired()
1214    {
1215        return this.getSuperEJB3EntityFacade().isDaoImplementationRequired();
1216    }
1217
1218    /**
1219     * Determines if this entity is an mapped/embeddable super class.
1220     * @see EJB3EntityFacade#isEmbeddableSuperclass()
1221     */
1222    public boolean isEmbeddableSuperclass()
1223    {
1224        return this.getSuperEJB3EntityFacade().isEmbeddableSuperclass();
1225    }
1226
1227    /**
1228     * Returns true if this entity is a subclass of an mapped/embeddable super class.  You cannot
1229     * have more than 1 level of inheritance using mapped/embeddable super class.  To achieve
1230     * multiple levels, use one of the inheritance mapping strategies like single table, table per
1231     * class or joined table strategies.
1232     * @see EJB3EntityFacade#isEmbeddableSuperclassGeneralizationExists()
1233     */
1234    public boolean isEmbeddableSuperclassGeneralizationExists()
1235    {
1236        return this.getSuperEJB3EntityFacade().isEmbeddableSuperclassGeneralizationExists();
1237    }
1238
1239    /**
1240     * True if an entity implementation is required for the entity class, this is the case when
1241     * there are business operations.
1242     * @see EJB3EntityFacade#isEntityImplementationRequired()
1243     */
1244    public boolean isEntityImplementationRequired()
1245    {
1246        return this.getSuperEJB3EntityFacade().isEntityImplementationRequired();
1247    }
1248
1249    /**
1250     * Returns true if the findAll finder method (specified as a query method) has been modelled.
1251     * @see EJB3EntityFacade#isFinderFindAllExists()
1252     */
1253    public boolean isFinderFindAllExists()
1254    {
1255        return this.getSuperEJB3EntityFacade().isFinderFindAllExists();
1256    }
1257
1258    /**
1259     * Returns true if the finder findByPrimaryKey has been modelled.
1260     * @see EJB3EntityFacade#isFinderFindByPrimaryKeyExists()
1261     */
1262    public boolean isFinderFindByPrimaryKeyExists()
1263    {
1264        return this.getSuperEJB3EntityFacade().isFinderFindByPrimaryKeyExists();
1265    }
1266
1267    /**
1268     * Returns true if the generic finder property is true.  This will create generic finder static
1269     * methods in the entity POJO like findByPrimaryKey and findAll.
1270     * @see EJB3EntityFacade#isGenericFinders()
1271     */
1272    public boolean isGenericFinders()
1273    {
1274        return this.getSuperEJB3EntityFacade().isGenericFinders();
1275    }
1276
1277    /**
1278     * If the identifier id is present
1279     * @see EJB3EntityFacade#isIdentifierPresent(String id)
1280     */
1281    public boolean isIdentifierPresent(String id)
1282    {
1283        return this.getSuperEJB3EntityFacade().isIdentifierPresent(id);
1284    }
1285
1286    /**
1287     * Return true if the entity inheritance strategy as specified by the tagged value
1288     * andromda_persistence_inheritance is defined as JOINED.
1289     * @see EJB3EntityFacade#isInheritanceJoined()
1290     */
1291    public boolean isInheritanceJoined()
1292    {
1293        return this.getSuperEJB3EntityFacade().isInheritanceJoined();
1294    }
1295
1296    /**
1297     * Return true if the entity inheritance strategy as specified by the tagged value
1298     * andromda_persistence_inheritance is defined as SINGLE_TABLE.
1299     * @see EJB3EntityFacade#isInheritanceSingleTable()
1300     */
1301    public boolean isInheritanceSingleTable()
1302    {
1303        return this.getSuperEJB3EntityFacade().isInheritanceSingleTable();
1304    }
1305
1306    /**
1307     * Return true if the entity inheritance strategy as specified by the tagged value
1308     * andromda_persistence_inheritance is defined as TABLE_PER_CLASS.
1309     * @see EJB3EntityFacade#isInheritanceTablePerClass()
1310     */
1311    public boolean isInheritanceTablePerClass()
1312    {
1313        return this.getSuperEJB3EntityFacade().isInheritanceTablePerClass();
1314    }
1315
1316    /**
1317     * Returns true if this entity bean has the stereotype Listener.  False otherwise.
1318     * @see EJB3EntityFacade#isListenerEnabled()
1319     */
1320    public boolean isListenerEnabled()
1321    {
1322        return this.getSuperEJB3EntityFacade().isListenerEnabled();
1323    }
1324
1325    /**
1326     * Returns true if this entity is assigned the Manageable stereotype.  False otherwise.
1327     * @see EJB3EntityFacade#isManageable()
1328     */
1329    public boolean isManageable()
1330    {
1331        return this.getSuperEJB3EntityFacade().isManageable();
1332    }
1333
1334    /**
1335     * If the operation op is present
1336     * @see EJB3EntityFacade#isOperationPresent(String op)
1337     */
1338    public boolean isOperationPresent(String op)
1339    {
1340        return this.getSuperEJB3EntityFacade().isOperationPresent(op);
1341    }
1342
1343    /**
1344     * Returns true if the entity requires generalization mapping.  The Inheritance annotation is
1345     * required for child entities for all inheritance strategies.
1346     * @see EJB3EntityFacade#isRequiresGeneralizationMapping()
1347     */
1348    public boolean isRequiresGeneralizationMapping()
1349    {
1350        return this.getSuperEJB3EntityFacade().isRequiresGeneralizationMapping();
1351    }
1352
1353    /**
1354     * Returns true if the entity requires specialization mapping.  The Inheritance annotation is
1355     * required for parent entities for all inheritance strategies.
1356     * @see EJB3EntityFacade#isRequiresSpecializationMapping()
1357     */
1358    public boolean isRequiresSpecializationMapping()
1359    {
1360        return this.getSuperEJB3EntityFacade().isRequiresSpecializationMapping();
1361    }
1362
1363    /**
1364     * Returns true if this entity has the <<Seam>> stereotype modelled indicating it is a Seam
1365     * entity component.
1366     * @see EJB3EntityFacade#isSeamComponent()
1367     */
1368    public boolean isSeamComponent()
1369    {
1370        return this.getSuperEJB3EntityFacade().isSeamComponent();
1371    }
1372
1373    /**
1374     * Returns true if the security realm is specified.  This will generate the security setting for
1375     * the DAO components.
1376     * @see EJB3EntityFacade#isSecurityEnabled()
1377     */
1378    public boolean isSecurityEnabled()
1379    {
1380        return this.getSuperEJB3EntityFacade().isSecurityEnabled();
1381    }
1382
1383    /**
1384     * Whether or not to allow a synthetic (auto generated) create method.
1385     * @see EJB3EntityFacade#isSyntheticCreateMethodAllowed()
1386     */
1387    public boolean isSyntheticCreateMethodAllowed()
1388    {
1389        return this.getSuperEJB3EntityFacade().isSyntheticCreateMethodAllowed();
1390    }
1391
1392    /**
1393     * Return true if a unique cache region is NOT required for entities and queries.  This means we
1394     * use the default cache region specified by the container.  Specified via the
1395     * useDefaultCacheRegion namepsace property.
1396     * @see EJB3EntityFacade#isUseDefaultCacheRegion()
1397     */
1398    public boolean isUseDefaultCacheRegion()
1399    {
1400        return this.getSuperEJB3EntityFacade().isUseDefaultCacheRegion();
1401    }
1402
1403    /**
1404     * Returns true if the application wide namespace property hibernateUseQueryCache is enabled. 
1405     * This is used for generic finder methods i.e. findAll.
1406     * @see EJB3EntityFacade#isUseQueryCache()
1407     */
1408    public boolean isUseQueryCache()
1409    {
1410        return this.getSuperEJB3EntityFacade().isUseQueryCache();
1411    }
1412
1413    /**
1414     * Return the attribute which name matches the parameter
1415     * @see ClassifierFacade#findAttribute(String name)
1416     */
1417    public AttributeFacade findAttribute(String name)
1418    {
1419        return this.getSuperEJB3EntityFacade().findAttribute(name);
1420    }
1421
1422    /**
1423     * Those abstraction dependencies for which this classifier is the client.
1424     * @see ClassifierFacade#getAbstractions()
1425     */
1426    public Collection<ClassifierFacade> getAbstractions()
1427    {
1428        return this.getSuperEJB3EntityFacade().getAbstractions();
1429    }
1430
1431    /**
1432     * Lists all classes associated to this one and any ancestor classes (through generalization).
1433     * There will be no duplicates. The order of the elements is predictable.
1434     * @see ClassifierFacade#getAllAssociatedClasses()
1435     */
1436    public Collection<ClassifierFacade> getAllAssociatedClasses()
1437    {
1438        return this.getSuperEJB3EntityFacade().getAllAssociatedClasses();
1439    }
1440
1441    /**
1442     * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
1443     * any attributes and navigable connecting association ends.
1444     * @see ClassifierFacade#getAllProperties()
1445     */
1446    public Collection<ModelElementFacade> getAllProperties()
1447    {
1448        return this.getSuperEJB3EntityFacade().getAllProperties();
1449    }
1450
1451    /**
1452     * A collection containing all required and/or read-only 'properties' of the classifier and its
1453     * ancestors. Properties are any attributes and navigable connecting association ends.
1454     * @see ClassifierFacade#getAllRequiredConstructorParameters()
1455     */
1456    public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
1457    {
1458        return this.getSuperEJB3EntityFacade().getAllRequiredConstructorParameters();
1459    }
1460
1461    /**
1462     * Gets the array type for this classifier.  If this classifier already represents an array, it
1463     * just returns itself.
1464     * @see ClassifierFacade#getArray()
1465     */
1466    public ClassifierFacade getArray()
1467    {
1468        return this.getSuperEJB3EntityFacade().getArray();
1469    }
1470
1471    /**
1472     * The name of the classifier as an array.
1473     * @see ClassifierFacade#getArrayName()
1474     */
1475    public String getArrayName()
1476    {
1477        return this.getSuperEJB3EntityFacade().getArrayName();
1478    }
1479
1480    /**
1481     * Lists the classes associated to this one, there is no repitition of classes. The order of the
1482     * elements is predictable.
1483     * @see ClassifierFacade#getAssociatedClasses()
1484     */
1485    public Collection<ClassifierFacade> getAssociatedClasses()
1486    {
1487        return this.getSuperEJB3EntityFacade().getAssociatedClasses();
1488    }
1489
1490    /**
1491     * Gets the association ends belonging to a classifier.
1492     * @see ClassifierFacade#getAssociationEnds()
1493     */
1494    public List<AssociationEndFacade> getAssociationEnds()
1495    {
1496        return this.getSuperEJB3EntityFacade().getAssociationEnds();
1497    }
1498
1499    /**
1500     * Gets the attributes that belong to the classifier.
1501     * @see ClassifierFacade#getAttributes()
1502     */
1503    public List<AttributeFacade> getAttributes()
1504    {
1505        return this.getSuperEJB3EntityFacade().getAttributes();
1506    }
1507
1508    /**
1509     * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
1510     * hierarchy and gets the attributes from the super classes as well.
1511     * @see ClassifierFacade#getAttributes(boolean follow)
1512     */
1513    public List<AttributeFacade> getAttributes(boolean follow)
1514    {
1515        return this.getSuperEJB3EntityFacade().getAttributes(follow);
1516    }
1517
1518    /**
1519     * The fully qualified name of the classifier as an array.
1520     * @see ClassifierFacade#getFullyQualifiedArrayName()
1521     */
1522    public String getFullyQualifiedArrayName()
1523    {
1524        return this.getSuperEJB3EntityFacade().getFullyQualifiedArrayName();
1525    }
1526
1527    /**
1528     * Returns all those operations that could be implemented at this classifier's level. This means
1529     * the operations owned by this classifier as well as any realized interface's operations
1530     * (recursively) in case this classifier itself is not already an interface, or generalized when
1531     * this classifier is an interface.
1532     * @see ClassifierFacade#getImplementationOperations()
1533     */
1534    public Collection<OperationFacade> getImplementationOperations()
1535    {
1536        return this.getSuperEJB3EntityFacade().getImplementationOperations();
1537    }
1538
1539    /**
1540     * A comma separated list of the fully qualified names of all implemented interfaces.
1541     * @see ClassifierFacade#getImplementedInterfaceList()
1542     */
1543    public String getImplementedInterfaceList()
1544    {
1545        return this.getSuperEJB3EntityFacade().getImplementedInterfaceList();
1546    }
1547
1548    /**
1549     * Those attributes that are scoped to an instance of this class.
1550     * @see ClassifierFacade#getInstanceAttributes()
1551     */
1552    public Collection<AttributeFacade> getInstanceAttributes()
1553    {
1554        return this.getSuperEJB3EntityFacade().getInstanceAttributes();
1555    }
1556
1557    /**
1558     * Those operations that are scoped to an instance of this class.
1559     * @see ClassifierFacade#getInstanceOperations()
1560     */
1561    public List<OperationFacade> getInstanceOperations()
1562    {
1563        return this.getSuperEJB3EntityFacade().getInstanceOperations();
1564    }
1565
1566    /**
1567     * Those interfaces that are abstractions of this classifier, this basically means this
1568     * classifier realizes them.
1569     * @see ClassifierFacade#getInterfaceAbstractions()
1570     */
1571    public Collection<ClassifierFacade> getInterfaceAbstractions()
1572    {
1573        return this.getSuperEJB3EntityFacade().getInterfaceAbstractions();
1574    }
1575
1576    /**
1577     * A String representing a new Constructor declaration for this classifier type to be used in a
1578     * Java environment.
1579     * @see ClassifierFacade#getJavaNewString()
1580     */
1581    public String getJavaNewString()
1582    {
1583        return this.getSuperEJB3EntityFacade().getJavaNewString();
1584    }
1585
1586    /**
1587     * A String representing the null-value for this classifier type to be used in a Java
1588     * environment.
1589     * @see ClassifierFacade#getJavaNullString()
1590     */
1591    public String getJavaNullString()
1592    {
1593        return this.getSuperEJB3EntityFacade().getJavaNullString();
1594    }
1595
1596    /**
1597     * The other ends of this classifier's association ends which are navigable.
1598     * @see ClassifierFacade#getNavigableConnectingEnds()
1599     */
1600    public Collection<AssociationEndFacade> getNavigableConnectingEnds()
1601    {
1602        return this.getSuperEJB3EntityFacade().getNavigableConnectingEnds();
1603    }
1604
1605    /**
1606     * Get the other ends of this classifier's association ends which are navigable and if 'follow'
1607     * is true goes up the inheritance hierarchy and gets the super association ends as well.
1608     * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
1609     */
1610    public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
1611    {
1612        return this.getSuperEJB3EntityFacade().getNavigableConnectingEnds(follow);
1613    }
1614
1615    /**
1616     * Assuming that the classifier is an array, this will return the non array type of the
1617     * classifier from
1618     * the model.  If the classifier is NOT an array, it will just return itself.
1619     * @see ClassifierFacade#getNonArray()
1620     */
1621    public ClassifierFacade getNonArray()
1622    {
1623        return this.getSuperEJB3EntityFacade().getNonArray();
1624    }
1625
1626    /**
1627     * The attributes from this classifier in the form of an operation call (this example would be
1628     * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
1629     * classifier, the result would be an empty '()'.
1630     * @see ClassifierFacade#getOperationCallFromAttributes()
1631     */
1632    public String getOperationCallFromAttributes()
1633    {
1634        return this.getSuperEJB3EntityFacade().getOperationCallFromAttributes();
1635    }
1636
1637    /**
1638     * The operations owned by this classifier.
1639     * @see ClassifierFacade#getOperations()
1640     */
1641    public List<OperationFacade> getOperations()
1642    {
1643        return this.getSuperEJB3EntityFacade().getOperations();
1644    }
1645
1646    /**
1647     * A collection containing all 'properties' of the classifier.  Properties are any attributes
1648     * and navigable connecting association ends.
1649     * @see ClassifierFacade#getProperties()
1650     */
1651    public List<ModelElementFacade> getProperties()
1652    {
1653        return this.getSuperEJB3EntityFacade().getProperties();
1654    }
1655
1656    /**
1657     * Gets all properties (attributes and navigable association ends) for the classifier and if
1658     * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
1659     * classes as well.
1660     * @see ClassifierFacade#getProperties(boolean follow)
1661     */
1662    public List getProperties(boolean follow)
1663    {
1664        return this.getSuperEJB3EntityFacade().getProperties(follow);
1665    }
1666
1667    /**
1668     * A collection containing all required and/or read-only 'properties' of the classifier. 
1669     * Properties are any attributes and navigable connecting association ends.
1670     * @see ClassifierFacade#getRequiredConstructorParameters()
1671     */
1672    public Collection<ModelElementFacade> getRequiredConstructorParameters()
1673    {
1674        return this.getSuperEJB3EntityFacade().getRequiredConstructorParameters();
1675    }
1676
1677    /**
1678     * Returns the serial version UID of the underlying model element.
1679     * @see ClassifierFacade#getSerialVersionUID()
1680     */
1681    public long getSerialVersionUID()
1682    {
1683        return this.getSuperEJB3EntityFacade().getSerialVersionUID();
1684    }
1685
1686    /**
1687     * Those attributes that are scoped to the definition of this class.
1688     * @see ClassifierFacade#getStaticAttributes()
1689     */
1690    public Collection<AttributeFacade> getStaticAttributes()
1691    {
1692        return this.getSuperEJB3EntityFacade().getStaticAttributes();
1693    }
1694
1695    /**
1696     * Those operations that are scoped to the definition of this class.
1697     * @see ClassifierFacade#getStaticOperations()
1698     */
1699    public List<OperationFacade> getStaticOperations()
1700    {
1701        return this.getSuperEJB3EntityFacade().getStaticOperations();
1702    }
1703
1704    /**
1705     * This class' superclass, returns the generalization if it is a ClassifierFacade, null
1706     * otherwise.
1707     * @see ClassifierFacade#getSuperClass()
1708     */
1709    public ClassifierFacade getSuperClass()
1710    {
1711        return this.getSuperEJB3EntityFacade().getSuperClass();
1712    }
1713
1714    /**
1715     * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
1716     * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
1717     * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
1718     * 'wrapperMappingsUri', this property must point to the location of the mappings file which
1719     * maps the primitives to wrapper types.
1720     * @see ClassifierFacade#getWrapperName()
1721     */
1722    public String getWrapperName()
1723    {
1724        return this.getSuperEJB3EntityFacade().getWrapperName();
1725    }
1726
1727    /**
1728     * Indicates if this classifier is 'abstract'.
1729     * @see ClassifierFacade#isAbstract()
1730     */
1731    public boolean isAbstract()
1732    {
1733        return this.getSuperEJB3EntityFacade().isAbstract();
1734    }
1735
1736    /**
1737     * True if this classifier represents an array type. False otherwise.
1738     * @see ClassifierFacade#isArrayType()
1739     */
1740    public boolean isArrayType()
1741    {
1742        return this.getSuperEJB3EntityFacade().isArrayType();
1743    }
1744
1745    /**
1746     * True if the ClassifierFacade is an AssociationClass.
1747     * @see ClassifierFacade#isAssociationClass()
1748     */
1749    public boolean isAssociationClass()
1750    {
1751        return this.getSuperEJB3EntityFacade().isAssociationClass();
1752    }
1753
1754    /**
1755     * Returns true if this type represents a Blob type.
1756     * @see ClassifierFacade#isBlobType()
1757     */
1758    public boolean isBlobType()
1759    {
1760        return this.getSuperEJB3EntityFacade().isBlobType();
1761    }
1762
1763    /**
1764     * Indicates if this type represents a boolean type or not.
1765     * @see ClassifierFacade#isBooleanType()
1766     */
1767    public boolean isBooleanType()
1768    {
1769        return this.getSuperEJB3EntityFacade().isBooleanType();
1770    }
1771
1772    /**
1773     * Indicates if this type represents a char, Character, or java.lang.Character type or not.
1774     * @see ClassifierFacade#isCharacterType()
1775     */
1776    public boolean isCharacterType()
1777    {
1778        return this.getSuperEJB3EntityFacade().isCharacterType();
1779    }
1780
1781    /**
1782     * Returns true if this type represents a Clob type.
1783     * @see ClassifierFacade#isClobType()
1784     */
1785    public boolean isClobType()
1786    {
1787        return this.getSuperEJB3EntityFacade().isClobType();
1788    }
1789
1790    /**
1791     * True if this classifier represents a collection type. False otherwise.
1792     * @see ClassifierFacade#isCollectionType()
1793     */
1794    public boolean isCollectionType()
1795    {
1796        return this.getSuperEJB3EntityFacade().isCollectionType();
1797    }
1798
1799    /**
1800     * True/false depending on whether or not this classifier represents a datatype. A data type is
1801     * a type whose instances are identified only by their value. A data type may contain attributes
1802     * to support the modeling of structured data types.
1803     * @see ClassifierFacade#isDataType()
1804     */
1805    public boolean isDataType()
1806    {
1807        return this.getSuperEJB3EntityFacade().isDataType();
1808    }
1809
1810    /**
1811     * True when this classifier is a date type.
1812     * @see ClassifierFacade#isDateType()
1813     */
1814    public boolean isDateType()
1815    {
1816        return this.getSuperEJB3EntityFacade().isDateType();
1817    }
1818
1819    /**
1820     * Indicates if this type represents a Double type or not.
1821     * @see ClassifierFacade#isDoubleType()
1822     */
1823    public boolean isDoubleType()
1824    {
1825        return this.getSuperEJB3EntityFacade().isDoubleType();
1826    }
1827
1828    /**
1829     * Indicates whether or not this classifier represents an "EmbeddedValue'.
1830     * @see ClassifierFacade#isEmbeddedValue()
1831     */
1832    public boolean isEmbeddedValue()
1833    {
1834        return this.getSuperEJB3EntityFacade().isEmbeddedValue();
1835    }
1836
1837    /**
1838     * True if this classifier is in fact marked as an enumeration.
1839     * @see ClassifierFacade#isEnumeration()
1840     */
1841    public boolean isEnumeration()
1842    {
1843        return this.getSuperEJB3EntityFacade().isEnumeration();
1844    }
1845
1846    /**
1847     * Returns true if this type represents a 'file' type.
1848     * @see ClassifierFacade#isFileType()
1849     */
1850    public boolean isFileType()
1851    {
1852        return this.getSuperEJB3EntityFacade().isFileType();
1853    }
1854
1855    /**
1856     * Indicates if this type represents a Float type or not.
1857     * @see ClassifierFacade#isFloatType()
1858     */
1859    public boolean isFloatType()
1860    {
1861        return this.getSuperEJB3EntityFacade().isFloatType();
1862    }
1863
1864    /**
1865     * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
1866     * @see ClassifierFacade#isIntegerType()
1867     */
1868    public boolean isIntegerType()
1869    {
1870        return this.getSuperEJB3EntityFacade().isIntegerType();
1871    }
1872
1873    /**
1874     * True/false depending on whether or not this Classifier represents an interface.
1875     * @see ClassifierFacade#isInterface()
1876     */
1877    public boolean isInterface()
1878    {
1879        return this.getSuperEJB3EntityFacade().isInterface();
1880    }
1881
1882    /**
1883     * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
1884     * @see ClassifierFacade#isLeaf()
1885     */
1886    public boolean isLeaf()
1887    {
1888        return this.getSuperEJB3EntityFacade().isLeaf();
1889    }
1890
1891    /**
1892     * True if this classifier represents a list type. False otherwise.
1893     * @see ClassifierFacade#isListType()
1894     */
1895    public boolean isListType()
1896    {
1897        return this.getSuperEJB3EntityFacade().isListType();
1898    }
1899
1900    /**
1901     * Indicates if this type represents a Long type or not.
1902     * @see ClassifierFacade#isLongType()
1903     */
1904    public boolean isLongType()
1905    {
1906        return this.getSuperEJB3EntityFacade().isLongType();
1907    }
1908
1909    /**
1910     * Indicates whether or not this classifier represents a Map type.
1911     * @see ClassifierFacade#isMapType()
1912     */
1913    public boolean isMapType()
1914    {
1915        return this.getSuperEJB3EntityFacade().isMapType();
1916    }
1917
1918    /**
1919     * Indicates whether or not this classifier represents a primitive type.
1920     * @see ClassifierFacade#isPrimitive()
1921     */
1922    public boolean isPrimitive()
1923    {
1924        return this.getSuperEJB3EntityFacade().isPrimitive();
1925    }
1926
1927    /**
1928     * True if this classifier represents a set type. False otherwise.
1929     * @see ClassifierFacade#isSetType()
1930     */
1931    public boolean isSetType()
1932    {
1933        return this.getSuperEJB3EntityFacade().isSetType();
1934    }
1935
1936    /**
1937     * Indicates whether or not this classifier represents a string type.
1938     * @see ClassifierFacade#isStringType()
1939     */
1940    public boolean isStringType()
1941    {
1942        return this.getSuperEJB3EntityFacade().isStringType();
1943    }
1944
1945    /**
1946     * Indicates whether or not this classifier represents a time type.
1947     * @see ClassifierFacade#isTimeType()
1948     */
1949    public boolean isTimeType()
1950    {
1951        return this.getSuperEJB3EntityFacade().isTimeType();
1952    }
1953
1954    /**
1955     * Returns true if this type is a wrapped primitive type.
1956     * @see ClassifierFacade#isWrappedPrimitive()
1957     */
1958    public boolean isWrappedPrimitive()
1959    {
1960        return this.getSuperEJB3EntityFacade().isWrappedPrimitive();
1961    }
1962
1963    /**
1964     * Returns a collection of all entities this entity and its ancestors have a relation to.
1965     * @see org.andromda.metafacades.uml.Entity#getAllEntityReferences()
1966     */
1967    public Collection<DependencyFacade> getAllEntityReferences()
1968    {
1969        return this.getSuperEJB3EntityFacade().getAllEntityReferences();
1970    }
1971
1972    /**
1973     * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
1974     * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
1975     * is true, will include identifiers.
1976     * @see org.andromda.metafacades.uml.Entity#getAttributeNameList(boolean follow, boolean withIdentifiers)
1977     */
1978    public String getAttributeNameList(boolean follow, boolean withIdentifiers)
1979    {
1980        return this.getSuperEJB3EntityFacade().getAttributeNameList(follow, withIdentifiers);
1981    }
1982
1983    /**
1984     * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
1985     * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
1986     * is true, will include identifiers  and  if 'withDerived' is set to true, will include derived
1987     * attributes.
1988     * @see org.andromda.metafacades.uml.Entity#getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
1989     */
1990    public String getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
1991    {
1992        return this.getSuperEJB3EntityFacade().getAttributeNameList(follow, withIdentifiers, withDerived);
1993    }
1994
1995    /**
1996     * Gets a comma separated list of attribute types.  If 'follow' is true, will travel up the
1997     * inheritance hierarchy to include attributes in parent entities as well.  If 'withIdentifiers'
1998     * is true, will include identifiers.
1999     * @see org.andromda.metafacades.uml.Entity#getAttributeTypeList(boolean follow, boolean withIdentifiers)
2000     */
2001    public String getAttributeTypeList(boolean follow, boolean withIdentifiers)
2002    {
2003        return this.getSuperEJB3EntityFacade().getAttributeTypeList(follow, withIdentifiers);
2004    }
2005
2006    /**
2007     * Gets all attributes of the entity, and optionally retieves the super entities attributes as
2008     * well as excludes the entity's identifiers if 'withIdentifiers' is set to false.
2009     * @see org.andromda.metafacades.uml.Entity#getAttributes(boolean follow, boolean withIdentifiers)
2010     */
2011    public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers)
2012    {
2013        return this.getSuperEJB3EntityFacade().getAttributes(follow, withIdentifiers);
2014    }
2015
2016    /**
2017     * Gets all attributes of the entity, and optionally retieves the super entities attributes as
2018     * well as excludes the entity's identifiers if 'withIdentifiers' is set to false and exclude
2019     * derived attributes if 'withDerived' is set to false.
2020     * @see org.andromda.metafacades.uml.Entity#getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
2021     */
2022    public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
2023    {
2024        return this.getSuperEJB3EntityFacade().getAttributes(follow, withIdentifiers, withDerived);
2025    }
2026
2027    /**
2028     * All business operations of the entity, these include any operations that aren't queries.
2029     * @see org.andromda.metafacades.uml.Entity#getBusinessOperations()
2030     */
2031    public Collection<OperationFacade> getBusinessOperations()
2032    {
2033        return this.getSuperEJB3EntityFacade().getBusinessOperations();
2034    }
2035
2036    /**
2037     * Gets any children association ends (i.e. entity association ends that are participants in an
2038     * association with this entity and this entity has composite aggregation defined for those
2039     * associations).
2040     * @see org.andromda.metafacades.uml.Entity#getChildEnds()
2041     */
2042    public Collection<EntityAssociationEnd> getChildEnds()
2043    {
2044        return this.getSuperEJB3EntityFacade().getChildEnds();
2045    }
2046
2047    /**
2048     * The embedded values belonging to this entity.
2049     * @see org.andromda.metafacades.uml.Entity#getEmbeddedValues()
2050     */
2051    public Collection<AttributeFacade> getEmbeddedValues()
2052    {
2053        return this.getSuperEJB3EntityFacade().getEmbeddedValues();
2054    }
2055
2056    /**
2057     * All entities referenced by this entity.
2058     * @see org.andromda.metafacades.uml.Entity#getEntityReferences()
2059     */
2060    public Collection<DependencyFacade> getEntityReferences()
2061    {
2062        return this.getSuperEJB3EntityFacade().getEntityReferences();
2063    }
2064
2065    /**
2066     * The full name of the type of the identifier. If composite identifier add the PK sufix to the
2067     * class name. If not, retorns the fully qualified name of the identifier.
2068     * @see org.andromda.metafacades.uml.Entity#getFullyQualifiedIdentifierTypeName()
2069     */
2070    public String getFullyQualifiedIdentifierTypeName()
2071    {
2072        return this.getSuperEJB3EntityFacade().getFullyQualifiedIdentifierTypeName();
2073    }
2074
2075    /**
2076     * Gets all the associationEnds of this entity marked with the identifiers stereotype.
2077     * @see org.andromda.metafacades.uml.Entity#getIdentifierAssociationEnds()
2078     */
2079    public Collection<AssociationEndFacade> getIdentifierAssociationEnds()
2080    {
2081        return this.getSuperEJB3EntityFacade().getIdentifierAssociationEnds();
2082    }
2083
2084    /**
2085     * The getter name of the identifier.
2086     * @see org.andromda.metafacades.uml.Entity#getIdentifierGetterName()
2087     */
2088    public String getIdentifierGetterName()
2089    {
2090        return this.getSuperEJB3EntityFacade().getIdentifierGetterName();
2091    }
2092
2093    /**
2094     * The name of the identifier. If composite identifier add the Pk suffix. If not composite
2095     * returns the attribute name of the identifier.
2096     * @see org.andromda.metafacades.uml.Entity#getIdentifierName()
2097     */
2098    public String getIdentifierName()
2099    {
2100        return this.getSuperEJB3EntityFacade().getIdentifierName();
2101    }
2102
2103    /**
2104     * The setter name of the identifier.
2105     * @see org.andromda.metafacades.uml.Entity#getIdentifierSetterName()
2106     */
2107    public String getIdentifierSetterName()
2108    {
2109        return this.getSuperEJB3EntityFacade().getIdentifierSetterName();
2110    }
2111
2112    /**
2113     * The name of the type of the identifier. If composite identifier add the PK suffix to the
2114     * class name. If not, returns the name of the identifier.
2115     * @see org.andromda.metafacades.uml.Entity#getIdentifierTypeName()
2116     */
2117    public String getIdentifierTypeName()
2118    {
2119        return this.getSuperEJB3EntityFacade().getIdentifierTypeName();
2120    }
2121
2122    /**
2123     * All the attributes of the entity which make up its identifier (primary key).  Will search any
2124     * super classes as well.  If no identifiers exist, a default identifier will be created if the
2125     * allowDefaultIdentifiers property is set to true.
2126     * @see org.andromda.metafacades.uml.Entity#getIdentifiers()
2127     */
2128    public Collection<ModelElementFacade> getIdentifiers()
2129    {
2130        return this.getSuperEJB3EntityFacade().getIdentifiers();
2131    }
2132
2133    /**
2134     * Gets all identifiers for an entity. If 'follow' is true, and if no identifiers can be found
2135     * on the entity, a search up the inheritance chain will be performed, and the identifiers from
2136     * the first super class having them will be used.   If no identifiers exist, a default
2137     * identifier will be created if the allowDefaultIdentifiers property is set to true.
2138     * Identifiers can be on attributes or associations (composite primary key).
2139     * @see org.andromda.metafacades.uml.Entity#getIdentifiers(boolean follow)
2140     */
2141    public Collection<ModelElementFacade> getIdentifiers(boolean follow)
2142    {
2143        return this.getSuperEJB3EntityFacade().getIdentifiers(follow);
2144    }
2145
2146    /**
2147     * The maximum length a SQL name may be.
2148     * @see org.andromda.metafacades.uml.Entity#getMaxSqlNameLength()
2149     */
2150    public short getMaxSqlNameLength()
2151    {
2152        return this.getSuperEJB3EntityFacade().getMaxSqlNameLength();
2153    }
2154
2155    /**
2156     * Gets the attributes as a list within an operation call, optionally including the type names
2157     * and the identifier attributes.
2158     * @see org.andromda.metafacades.uml.Entity#getOperationCallFromAttributes(boolean withIdentifiers)
2159     */
2160    public String getOperationCallFromAttributes(boolean withIdentifiers)
2161    {
2162        return this.getSuperEJB3EntityFacade().getOperationCallFromAttributes(withIdentifiers);
2163    }
2164
2165    /**
2166     * Gets the attributes as a list within an operation call.  If 'withTypeNames' is true, it will
2167     * include the type names, if 'withIdentifiers' is true it will include the identifiers.  If
2168     * 'follow' is true it will follow the inheritance hierarchy and get the attributes of the super
2169     * class as well.
2170     * @see org.andromda.metafacades.uml.Entity#getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
2171     */
2172    public String getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
2173    {
2174        return this.getSuperEJB3EntityFacade().getOperationCallFromAttributes(withIdentifiers, follow);
2175    }
2176
2177    /**
2178     * Returns the parent association end of this entity if its a child entity.  The parent is the
2179     * entity that is the participant the association that has composite aggregation defined.  Will
2180     * return null if the entity has no parent.
2181     * @see org.andromda.metafacades.uml.Entity#getParentEnd()
2182     */
2183    public EntityAssociationEnd getParentEnd()
2184    {
2185        return this.getSuperEJB3EntityFacade().getParentEnd();
2186    }
2187
2188    /**
2189     * Gets all properties of this entity, this includes the attributes and navigable association
2190     * ends of the entity.  The 'follow' flag indcates whether or not the inheritance hierarchy
2191     * should be followed when getting all the properties.  The 'withIdentifiers' flag indicates
2192     * whether or not identifiers should be included in the collection of properties.
2193     * @see org.andromda.metafacades.uml.Entity#getProperties(boolean follow, boolean withIdentifiers)
2194     */
2195    public Collection<ModelElementFacade> getProperties(boolean follow, boolean withIdentifiers)
2196    {
2197        return this.getSuperEJB3EntityFacade().getProperties(follow, withIdentifiers);
2198    }
2199
2200    /**
2201     * Returns all the operations that can perform queries on the entity.
2202     * @see org.andromda.metafacades.uml.Entity#getQueryOperations()
2203     */
2204    public Collection<EntityQueryOperation> getQueryOperations()
2205    {
2206        return this.getSuperEJB3EntityFacade().getQueryOperations();
2207    }
2208
2209    /**
2210     * Gets all query operations for an entity. If 'follow' is true, and if no query operations can
2211     * be found on the entity, a search up the inheritance chain will be performed, and the
2212     * identifiers from the first super class having them will be used.   If no identifiers exist, a
2213     * default identifier will be created if the allowDefaultIdentifiers property is set to true.
2214     * @see org.andromda.metafacades.uml.Entity#getQueryOperations(boolean follow)
2215     */
2216    public Collection<OperationFacade> getQueryOperations(boolean follow)
2217    {
2218        return this.getSuperEJB3EntityFacade().getQueryOperations(follow);
2219    }
2220
2221    /**
2222     * Gets a comma separated list of required attribute names.  If 'follow' is true, will travel up
2223     * the inheritance hierarchy to include attributes in parent entities as well.  If
2224     * 'withIdentifiers' is true, will include identifiers.
2225     * @see org.andromda.metafacades.uml.Entity#getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
2226     */
2227    public String getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
2228    {
2229        return this.getSuperEJB3EntityFacade().getRequiredAttributeNameList(follow, withIdentifiers);
2230    }
2231
2232    /**
2233     * Gets a comma separated list of attribute types with are required.  If 'follow' is true, will
2234     * travel up the inheritance hierarchy to include attributes in parent entities as well.  If
2235     * 'withIdentifiers' is true, will include identifiers.
2236     * @see org.andromda.metafacades.uml.Entity#getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
2237     */
2238    public String getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
2239    {
2240        return this.getSuperEJB3EntityFacade().getRequiredAttributeTypeList(follow, withIdentifiers);
2241    }
2242
2243    /**
2244     * Returns all attributes that are specified as 'required' in the model.  If 'follow' is true,
2245     * then required attributes in super classes will also be returned, if false, just the ones
2246     * directly on the entity will be returned.  If 'withIdentifiers' is true, the identifiers will
2247     * be include, if false, no identifiers will be included.
2248     * @see org.andromda.metafacades.uml.Entity#getRequiredAttributes(boolean follow, boolean withIdentifiers)
2249     */
2250    public Collection<AttributeFacade> getRequiredAttributes(boolean follow, boolean withIdentifiers)
2251    {
2252        return this.getSuperEJB3EntityFacade().getRequiredAttributes(follow, withIdentifiers);
2253    }
2254
2255    /**
2256     * Gets all required properties for this entity.  These consist of any required attributes as
2257     * well as navigable associations that are marked as 'required'.  If 'follow' is true, then the
2258     * inheritance hierchy will be followed and all required properties from super classes will be
2259     * included as well.
2260     * If 'withIdentifiers' is true, the identifiers will be include, if false, no identifiers will
2261     * be included.
2262     * @see org.andromda.metafacades.uml.Entity#getRequiredProperties(boolean follow, boolean withIdentifiers)
2263     */
2264    public Collection<ModelElementFacade> getRequiredProperties(boolean follow, boolean withIdentifiers)
2265    {
2266        return this.getSuperEJB3EntityFacade().getRequiredProperties(follow, withIdentifiers);
2267    }
2268
2269    /**
2270     * Creates a comma separated list of the required property names.
2271     * @see org.andromda.metafacades.uml.Entity#getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
2272     */
2273    public String getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
2274    {
2275        return this.getSuperEJB3EntityFacade().getRequiredPropertyNameList(follow, withIdentifiers);
2276    }
2277
2278    /**
2279     * A comma separated list of the required property types.
2280     * @see org.andromda.metafacades.uml.Entity#getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
2281     */
2282    public String getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
2283    {
2284        return this.getSuperEJB3EntityFacade().getRequiredPropertyTypeList(follow, withIdentifiers);
2285    }
2286
2287    /**
2288     * The name of the schema that contains the database table
2289     * @see org.andromda.metafacades.uml.Entity#getSchema()
2290     */
2291    public String getSchema()
2292    {
2293        return this.getSuperEJB3EntityFacade().getSchema();
2294    }
2295
2296    /**
2297     * The name of the database table to which this entity is persisted.
2298     * @see org.andromda.metafacades.uml.Entity#getTableName()
2299     */
2300    public String getTableName()
2301    {
2302        return this.getSuperEJB3EntityFacade().getTableName();
2303    }
2304
2305    /**
2306     * Returns true/false depending on whether or not this entity represetns a child in an
2307     * association (this occurs when this entity is on the opposite end of an assocation end defined
2308     * as composite).
2309     * @see org.andromda.metafacades.uml.Entity#isChild()
2310     */
2311    public boolean isChild()
2312    {
2313        return this.getSuperEJB3EntityFacade().isChild();
2314    }
2315
2316    /**
2317     * True if this entity identifier is a composite (consists of multiple key columns, typically
2318     * abstracted into an external composite identifier class)
2319     * @see org.andromda.metafacades.uml.Entity#isCompositeIdentifier()
2320     */
2321    public boolean isCompositeIdentifier()
2322    {
2323        return this.getSuperEJB3EntityFacade().isCompositeIdentifier();
2324    }
2325
2326    /**
2327     * True if the entity has its identifiers dynamically added, false otherwise.
2328     * @see org.andromda.metafacades.uml.Entity#isDynamicIdentifiersPresent()
2329     */
2330    public boolean isDynamicIdentifiersPresent()
2331    {
2332        return this.getSuperEJB3EntityFacade().isDynamicIdentifiersPresent();
2333    }
2334
2335    /**
2336     * True if the entity has any identifiers defined, false otherwise.
2337     * @see org.andromda.metafacades.uml.Entity#isIdentifiersPresent()
2338     */
2339    public boolean isIdentifiersPresent()
2340    {
2341        return this.getSuperEJB3EntityFacade().isIdentifiersPresent();
2342    }
2343
2344    /**
2345     * Indiciates if this entity is using an assigned identifier or not.
2346     * @see org.andromda.metafacades.uml.Entity#isUsingAssignedIdentifier()
2347     */
2348    public boolean isUsingAssignedIdentifier()
2349    {
2350        return this.getSuperEJB3EntityFacade().isUsingAssignedIdentifier();
2351    }
2352
2353    /**
2354     * Indicates whether or not this entity is using a foreign identifier as its identifiers.  That
2355     * is: the foreignIdentifier flag was set on an incoming association end and the entity is
2356     * therefore using the related foreign parent entity's identifier.
2357     * @see org.andromda.metafacades.uml.Entity#isUsingForeignIdentifier()
2358     */
2359    public boolean isUsingForeignIdentifier()
2360    {
2361        return this.getSuperEJB3EntityFacade().isUsingForeignIdentifier();
2362    }
2363
2364    /**
2365     * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
2366     * to true.
2367     * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
2368     */
2369    public Object findTaggedValue(String tagName, boolean follow)
2370    {
2371        return this.getSuperEJB3EntityFacade().findTaggedValue(tagName, follow);
2372    }
2373
2374    /**
2375     * All generalizations for this generalizable element, goes up the inheritance tree.
2376     * @see GeneralizableElementFacade#getAllGeneralizations()
2377     */
2378    public Collection<GeneralizableElementFacade> getAllGeneralizations()
2379    {
2380        return this.getSuperEJB3EntityFacade().getAllGeneralizations();
2381    }
2382
2383    /**
2384     * All specializations (travels down the inheritance hierarchy).
2385     * @see GeneralizableElementFacade#getAllSpecializations()
2386     */
2387    public Collection<GeneralizableElementFacade> getAllSpecializations()
2388    {
2389        return this.getSuperEJB3EntityFacade().getAllSpecializations();
2390    }
2391
2392    /**
2393     * Gets the direct generalization for this generalizable element.
2394     * @see GeneralizableElementFacade#getGeneralization()
2395     */
2396    public GeneralizableElementFacade getGeneralization()
2397    {
2398        return this.getSuperEJB3EntityFacade().getGeneralization();
2399    }
2400
2401    /**
2402     * Gets the actual links that this generalization element is part of (it plays either the
2403     * specialization or generalization).
2404     * @see GeneralizableElementFacade#getGeneralizationLinks()
2405     */
2406    public Collection<GeneralizationFacade> getGeneralizationLinks()
2407    {
2408        return this.getSuperEJB3EntityFacade().getGeneralizationLinks();
2409    }
2410
2411    /**
2412     * A comma separated list of the fully qualified names of all generalizations.
2413     * @see GeneralizableElementFacade#getGeneralizationList()
2414     */
2415    public String getGeneralizationList()
2416    {
2417        return this.getSuperEJB3EntityFacade().getGeneralizationList();
2418    }
2419
2420    /**
2421     * The element found when you recursively follow the generalization path up to the root. If an
2422     * element has no generalization itself will be considered the root.
2423     * @see GeneralizableElementFacade#getGeneralizationRoot()
2424     */
2425    public GeneralizableElementFacade getGeneralizationRoot()
2426    {
2427        return this.getSuperEJB3EntityFacade().getGeneralizationRoot();
2428    }
2429
2430    /**
2431     * Return all generalizations (ancestors) from this generalizable element.
2432     * @see GeneralizableElementFacade#getGeneralizations()
2433     */
2434    public Collection<GeneralizableElementFacade> getGeneralizations()
2435    {
2436        return this.getSuperEJB3EntityFacade().getGeneralizations();
2437    }
2438
2439    /**
2440     * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
2441     * @see GeneralizableElementFacade#getSpecializations()
2442     */
2443    public Collection<GeneralizableElementFacade> getSpecializations()
2444    {
2445        return this.getSuperEJB3EntityFacade().getSpecializations();
2446    }
2447
2448    /**
2449     * Copies all tagged values from the given ModelElementFacade to this model element facade.
2450     * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
2451     */
2452    public void copyTaggedValues(ModelElementFacade element)
2453    {
2454        this.getSuperEJB3EntityFacade().copyTaggedValues(element);
2455    }
2456
2457    /**
2458     * Finds the tagged value with the specified 'tagName'. In case there are more values the first
2459     * one found will be returned.
2460     * @see ModelElementFacade#findTaggedValue(String tagName)
2461     */
2462    public Object findTaggedValue(String tagName)
2463    {
2464        return this.getSuperEJB3EntityFacade().findTaggedValue(tagName);
2465    }
2466
2467    /**
2468     * Returns all the values for the tagged value with the specified name. The returned collection
2469     * will contains only String instances, or will be empty. Never null.
2470     * @see ModelElementFacade#findTaggedValues(String tagName)
2471     */
2472    public Collection<Object> findTaggedValues(String tagName)
2473    {
2474        return this.getSuperEJB3EntityFacade().findTaggedValues(tagName);
2475    }
2476
2477    /**
2478     * Returns the fully qualified name of the model element. The fully qualified name includes
2479     * complete package qualified name of the underlying model element. The templates parameter will
2480     * be replaced by the correct one given the binding relation of the parameter to this element.
2481     * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2482     */
2483    public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2484    {
2485        return this.getSuperEJB3EntityFacade().getBindedFullyQualifiedName(bindedElement);
2486    }
2487
2488    /**
2489     * Gets all constraints belonging to the model element.
2490     * @see ModelElementFacade#getConstraints()
2491     */
2492    public Collection<ConstraintFacade> getConstraints()
2493    {
2494        return this.getSuperEJB3EntityFacade().getConstraints();
2495    }
2496
2497    /**
2498     * Returns the constraints of the argument kind that have been placed onto this model. Typical
2499     * kinds are "inv", "pre" and "post". Other kinds are possible.
2500     * @see ModelElementFacade#getConstraints(String kind)
2501     */
2502    public Collection<ConstraintFacade> getConstraints(String kind)
2503    {
2504        return this.getSuperEJB3EntityFacade().getConstraints(kind);
2505    }
2506
2507    /**
2508     * Gets the documentation for the model element, The indent argument is prefixed to each line.
2509     * By default this method wraps lines after 64 characters.
2510     * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
2511     * @see ModelElementFacade#getDocumentation(String indent)
2512     */
2513    public String getDocumentation(String indent)
2514    {
2515        return this.getSuperEJB3EntityFacade().getDocumentation(indent);
2516    }
2517
2518    /**
2519     * This method returns the documentation for this model element, with the lines wrapped after
2520     * the specified number of characters, values of less than 1 will indicate no line wrapping is
2521     * required. By default paragraphs are returned as HTML.
2522     * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
2523     * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
2524     */
2525    public String getDocumentation(String indent, int lineLength)
2526    {
2527        return this.getSuperEJB3EntityFacade().getDocumentation(indent, lineLength);
2528    }
2529
2530    /**
2531     * This method returns the documentation for this model element, with the lines wrapped after
2532     * the specified number of characters, values of less than 1 will indicate no line wrapping is
2533     * required. HTML style determines if HTML Escaping is applied.
2534     * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
2535     */
2536    public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
2537    {
2538        return this.getSuperEJB3EntityFacade().getDocumentation(indent, lineLength, htmlStyle);
2539    }
2540
2541    /**
2542     * The fully qualified name of this model element.
2543     * @see ModelElementFacade#getFullyQualifiedName()
2544     */
2545    public String getFullyQualifiedName()
2546    {
2547        return this.getSuperEJB3EntityFacade().getFullyQualifiedName();
2548    }
2549
2550    /**
2551     * Returns the fully qualified name of the model element. The fully qualified name includes
2552     * complete package qualified name of the underlying model element.  If modelName is true, then
2553     * the original name of the model element (the name contained within the model) will be the name
2554     * returned, otherwise a name from a language mapping will be returned.
2555     * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
2556     */
2557    public String getFullyQualifiedName(boolean modelName)
2558    {
2559        return this.getSuperEJB3EntityFacade().getFullyQualifiedName(modelName);
2560    }
2561
2562    /**
2563     * Returns the fully qualified name as a path, the returned value always starts with out a slash
2564     * '/'.
2565     * @see ModelElementFacade#getFullyQualifiedNamePath()
2566     */
2567    public String getFullyQualifiedNamePath()
2568    {
2569        return this.getSuperEJB3EntityFacade().getFullyQualifiedNamePath();
2570    }
2571
2572    /**
2573     * Gets the unique identifier of the underlying model element.
2574     * @see ModelElementFacade#getId()
2575     */
2576    public String getId()
2577    {
2578        return this.getSuperEJB3EntityFacade().getId();
2579    }
2580
2581    /**
2582     * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
2583     * are not represented by other properties, i.e. native, transient, volatile, synchronized,
2584     * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
2585     * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
2586     * JDK5 compiler level.
2587     * @see ModelElementFacade#getKeywords()
2588     */
2589    public Collection<String> getKeywords()
2590    {
2591        return this.getSuperEJB3EntityFacade().getKeywords();
2592    }
2593
2594    /**
2595     * UML2: Retrieves a localized label for this named element.
2596     * @see ModelElementFacade#getLabel()
2597     */
2598    public String getLabel()
2599    {
2600        return this.getSuperEJB3EntityFacade().getLabel();
2601    }
2602
2603    /**
2604     * The language mappings that have been set for this model element.
2605     * @see ModelElementFacade#getLanguageMappings()
2606     */
2607    public TypeMappings getLanguageMappings()
2608    {
2609        return this.getSuperEJB3EntityFacade().getLanguageMappings();
2610    }
2611
2612    /**
2613     * Return the model containing this model element (multiple models may be loaded and processed
2614     * at the same time).
2615     * @see ModelElementFacade#getModel()
2616     */
2617    public ModelFacade getModel()
2618    {
2619        return this.getSuperEJB3EntityFacade().getModel();
2620    }
2621
2622    /**
2623     * The name of the model element.
2624     * @see ModelElementFacade#getName()
2625     */
2626    public String getName()
2627    {
2628        return this.getSuperEJB3EntityFacade().getName();
2629    }
2630
2631    /**
2632     * Gets the package to which this model element belongs.
2633     * @see ModelElementFacade#getPackage()
2634     */
2635    public ModelElementFacade getPackage()
2636    {
2637        return this.getSuperEJB3EntityFacade().getPackage();
2638    }
2639
2640    /**
2641     * The name of this model element's package.
2642     * @see ModelElementFacade#getPackageName()
2643     */
2644    public String getPackageName()
2645    {
2646        return this.getSuperEJB3EntityFacade().getPackageName();
2647    }
2648
2649    /**
2650     * Gets the package name (optionally providing the ability to retrieve the model name and not
2651     * the mapped name).
2652     * @see ModelElementFacade#getPackageName(boolean modelName)
2653     */
2654    public String getPackageName(boolean modelName)
2655    {
2656        return this.getSuperEJB3EntityFacade().getPackageName(modelName);
2657    }
2658
2659    /**
2660     * Returns the package as a path, the returned value always starts with out a slash '/'.
2661     * @see ModelElementFacade#getPackagePath()
2662     */
2663    public String getPackagePath()
2664    {
2665        return this.getSuperEJB3EntityFacade().getPackagePath();
2666    }
2667
2668    /**
2669     * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
2670     * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
2671     * the names of the containing namespaces starting at the root of the hierarchy and ending with
2672     * the name of the NamedElement itself.
2673     * @see ModelElementFacade#getQualifiedName()
2674     */
2675    public String getQualifiedName()
2676    {
2677        return this.getSuperEJB3EntityFacade().getQualifiedName();
2678    }
2679
2680    /**
2681     * Gets the root package for the model element.
2682     * @see ModelElementFacade#getRootPackage()
2683     */
2684    public PackageFacade getRootPackage()
2685    {
2686        return this.getSuperEJB3EntityFacade().getRootPackage();
2687    }
2688
2689    /**
2690     * Gets the dependencies for which this model element is the source.
2691     * @see ModelElementFacade#getSourceDependencies()
2692     */
2693    public Collection<DependencyFacade> getSourceDependencies()
2694    {
2695        return this.getSuperEJB3EntityFacade().getSourceDependencies();
2696    }
2697
2698    /**
2699     * If this model element is the context of an activity graph, this represents that activity
2700     * graph.
2701     * @see ModelElementFacade#getStateMachineContext()
2702     */
2703    public StateMachineFacade getStateMachineContext()
2704    {
2705        return this.getSuperEJB3EntityFacade().getStateMachineContext();
2706    }
2707
2708    /**
2709     * The collection of ALL stereotype names for this model element.
2710     * @see ModelElementFacade#getStereotypeNames()
2711     */
2712    public Collection<String> getStereotypeNames()
2713    {
2714        return this.getSuperEJB3EntityFacade().getStereotypeNames();
2715    }
2716
2717    /**
2718     * Gets all stereotypes for this model element.
2719     * @see ModelElementFacade#getStereotypes()
2720     */
2721    public Collection<StereotypeFacade> getStereotypes()
2722    {
2723        return this.getSuperEJB3EntityFacade().getStereotypes();
2724    }
2725
2726    /**
2727     * Return the TaggedValues associated with this model element, under all stereotypes.
2728     * @see ModelElementFacade#getTaggedValues()
2729     */
2730    public Collection<TaggedValueFacade> getTaggedValues()
2731    {
2732        return this.getSuperEJB3EntityFacade().getTaggedValues();
2733    }
2734
2735    /**
2736     * Gets the dependencies for which this model element is the target.
2737     * @see ModelElementFacade#getTargetDependencies()
2738     */
2739    public Collection<DependencyFacade> getTargetDependencies()
2740    {
2741        return this.getSuperEJB3EntityFacade().getTargetDependencies();
2742    }
2743
2744    /**
2745     * Get the template parameter for this model element having the parameterName
2746     * @see ModelElementFacade#getTemplateParameter(String parameterName)
2747     */
2748    public Object getTemplateParameter(String parameterName)
2749    {
2750        return this.getSuperEJB3EntityFacade().getTemplateParameter(parameterName);
2751    }
2752
2753    /**
2754     * Get the template parameters for this model element
2755     * @see ModelElementFacade#getTemplateParameters()
2756     */
2757    public Collection<TemplateParameterFacade> getTemplateParameters()
2758    {
2759        return this.getSuperEJB3EntityFacade().getTemplateParameters();
2760    }
2761
2762    /**
2763     * The visibility (i.e. public, private, protected or package) of the model element, will
2764     * attempt a lookup for these values in the language mappings (if any).
2765     * @see ModelElementFacade#getVisibility()
2766     */
2767    public String getVisibility()
2768    {
2769        return this.getSuperEJB3EntityFacade().getVisibility();
2770    }
2771
2772    /**
2773     * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
2774     * is taken into account when searching for the stereotype), false otherwise.
2775     * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
2776     */
2777    public boolean hasExactStereotype(String stereotypeName)
2778    {
2779        return this.getSuperEJB3EntityFacade().hasExactStereotype(stereotypeName);
2780    }
2781
2782    /**
2783     * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
2784     * pipe, semicolon, or << >>
2785     * @see ModelElementFacade#hasKeyword(String keywordName)
2786     */
2787    public boolean hasKeyword(String keywordName)
2788    {
2789        return this.getSuperEJB3EntityFacade().hasKeyword(keywordName);
2790    }
2791
2792    /**
2793     * Returns true if the model element has the specified stereotype.  If the stereotype itself
2794     * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
2795     * one of the stereotype's ancestors has a matching name this method will return true, false
2796     * otherwise.
2797     * For example, if we have a certain stereotype called <<exception>> and a model element has a
2798     * stereotype called <<applicationException>> which extends <<exception>>, when calling this
2799     * method with 'stereotypeName' defined as 'exception' the method would return true since
2800     * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
2801     * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
2802     * @see ModelElementFacade#hasStereotype(String stereotypeName)
2803     */
2804    public boolean hasStereotype(String stereotypeName)
2805    {
2806        return this.getSuperEJB3EntityFacade().hasStereotype(stereotypeName);
2807    }
2808
2809    /**
2810     * True if there are target dependencies from this element that are instances of BindingFacade.
2811     * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
2812     * @see ModelElementFacade#isBindingDependenciesPresent()
2813     */
2814    public boolean isBindingDependenciesPresent()
2815    {
2816        return this.getSuperEJB3EntityFacade().isBindingDependenciesPresent();
2817    }
2818
2819    /**
2820     * Indicates if any constraints are present on this model element.
2821     * @see ModelElementFacade#isConstraintsPresent()
2822     */
2823    public boolean isConstraintsPresent()
2824    {
2825        return this.getSuperEJB3EntityFacade().isConstraintsPresent();
2826    }
2827
2828    /**
2829     * Indicates if any documentation is present on this model element.
2830     * @see ModelElementFacade#isDocumentationPresent()
2831     */
2832    public boolean isDocumentationPresent()
2833    {
2834        return this.getSuperEJB3EntityFacade().isDocumentationPresent();
2835    }
2836
2837    /**
2838     * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
2839     * @see ModelElementFacade#isReservedWord()
2840     */
2841    public boolean isReservedWord()
2842    {
2843        return this.getSuperEJB3EntityFacade().isReservedWord();
2844    }
2845
2846    /**
2847     * True is there are template parameters on this model element. For UML2, applies to Class,
2848     * Operation, Property, and Parameter.
2849     * @see ModelElementFacade#isTemplateParametersPresent()
2850     */
2851    public boolean isTemplateParametersPresent()
2852    {
2853        return this.getSuperEJB3EntityFacade().isTemplateParametersPresent();
2854    }
2855
2856    /**
2857     * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
2858     * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
2859     * Enumerations and Interfaces, optionally applies on other model elements.
2860     * @see ModelElementFacade#isValidIdentifierName()
2861     */
2862    public boolean isValidIdentifierName()
2863    {
2864        return this.getSuperEJB3EntityFacade().isValidIdentifierName();
2865    }
2866
2867    /**
2868     * Searches for the constraint with the specified 'name' on this model element, and if found
2869     * translates it using the specified 'translation' from a translation library discovered by the
2870     * framework.
2871     * @see ModelElementFacade#translateConstraint(String name, String translation)
2872     */
2873    public String translateConstraint(String name, String translation)
2874    {
2875        return this.getSuperEJB3EntityFacade().translateConstraint(name, translation);
2876    }
2877
2878    /**
2879     * Translates all constraints belonging to this model element with the given 'translation'.
2880     * @see ModelElementFacade#translateConstraints(String translation)
2881     */
2882    public String[] translateConstraints(String translation)
2883    {
2884        return this.getSuperEJB3EntityFacade().translateConstraints(translation);
2885    }
2886
2887    /**
2888     * Translates the constraints of the specified 'kind' belonging to this model element.
2889     * @see ModelElementFacade#translateConstraints(String kind, String translation)
2890     */
2891    public String[] translateConstraints(String kind, String translation)
2892    {
2893        return this.getSuperEJB3EntityFacade().translateConstraints(kind, translation);
2894    }
2895
2896    // ----------- delegates to ManageableEntity ------------
2897    /**
2898     * All entities to which can be browsed from this entity. Currently this property will simple
2899     * hold all entities, so the value is the same for any arbitrary entity. Hiding entities can be
2900     * done in the presentation tier, for example depending on runtime security information.
2901     * @see ManageableEntity#getAllManageables()
2902     */
2903    public List<ManageableEntity> getAllManageables()
2904    {
2905        return this.getSuperManageableEntity().getAllManageables();
2906    }
2907
2908    /**
2909     * The attribute used as a key link to display values for this entity.
2910     * @see ManageableEntity#getDisplayAttribute()
2911     */
2912    public ManageableEntityAttribute getDisplayAttribute()
2913    {
2914        return this.getSuperManageableEntity().getDisplayAttribute();
2915    }
2916
2917    /**
2918     * The fully qualified service name of the entity.
2919     * @see ManageableEntity#getFullyQualifiedManageableServiceName()
2920     */
2921    public String getFullyQualifiedManageableServiceName()
2922    {
2923        return this.getSuperManageableEntity().getFullyQualifiedManageableServiceName();
2924    }
2925
2926    /**
2927     * The associations to other entities from this entity.
2928     * @see ManageableEntity#getManageableAssociationEnds()
2929     */
2930    public List<ManageableEntityAssociationEnd> getManageableAssociationEnds()
2931    {
2932        return this.getSuperManageableEntity().getManageableAssociationEnds();
2933    }
2934
2935    /**
2936     * Lists the attributes that can be managed for this entity. This feature is particularly
2937     * important when resolving inherited attributes and ids.
2938     * @see ManageableEntity#getManageableAttributes()
2939     */
2940    public List<ManageableEntityAttribute> getManageableAttributes()
2941    {
2942        return this.getSuperManageableEntity().getManageableAttributes();
2943    }
2944
2945    /**
2946     * The identifier used when managing this entity.
2947     * @see ManageableEntity#getManageableIdentifier()
2948     */
2949    public ManageableEntityAttribute getManageableIdentifier()
2950    {
2951        return this.getSuperManageableEntity().getManageableIdentifier();
2952    }
2953
2954    /**
2955     * ManageableAttributes and ManageableAssociationEnds
2956     * @see ManageableEntity#getManageableMembers()
2957     */
2958    public List<ModelElementFacade> getManageableMembers()
2959    {
2960        return this.getSuperManageableEntity().getManageableMembers();
2961    }
2962
2963    /**
2964     * The entity package name.
2965     * @see ManageableEntity#getManageablePackageName()
2966     */
2967    public String getManageablePackageName()
2968    {
2969        return this.getSuperManageableEntity().getManageablePackageName();
2970    }
2971
2972    /**
2973     * The Package path of the Entity
2974     * @see ManageableEntity#getManageablePackagePath()
2975     */
2976    public String getManageablePackagePath()
2977    {
2978        return this.getSuperManageableEntity().getManageablePackagePath();
2979    }
2980
2981    /**
2982     * The entity accessor (getter) call.
2983     * @see ManageableEntity#getManageableServiceAccessorCall()
2984     */
2985    public String getManageableServiceAccessorCall()
2986    {
2987        return this.getSuperManageableEntity().getManageableServiceAccessorCall();
2988    }
2989
2990    /**
2991     * The service full path of the entity.
2992     * @see ManageableEntity#getManageableServiceFullPath()
2993     */
2994    public String getManageableServiceFullPath()
2995    {
2996        return this.getSuperManageableEntity().getManageableServiceFullPath();
2997    }
2998
2999    /**
3000     * The service name of the entity.
3001     * @see ManageableEntity#getManageableServiceName()
3002     */
3003    public String getManageableServiceName()
3004    {
3005        return this.getSuperManageableEntity().getManageableServiceName();
3006    }
3007
3008    /**
3009     * The maximum number of rows to load from the database.
3010     * @see ManageableEntity#getMaximumListSize()
3011     */
3012    public int getMaximumListSize()
3013    {
3014        return this.getSuperManageableEntity().getMaximumListSize();
3015    }
3016
3017    /**
3018     * The maximum number of rows to load from the database.
3019     * @see ManageableEntity#getPageSize()
3020     */
3021    public int getPageSize()
3022    {
3023        return this.getSuperManageableEntity().getPageSize();
3024    }
3025
3026    /**
3027     * Other Manageable Entities which reference this entity.
3028     * @see ManageableEntity#getReferencingManageables()
3029     */
3030    public List<ManageableEntity> getReferencingManageables()
3031    {
3032        return this.getSuperManageableEntity().getReferencingManageables();
3033    }
3034
3035    /**
3036     * The Actors (Roles) which can manage the Entity.
3037     * @see ManageableEntity#getUsers()
3038     */
3039    public List<ActorFacade> getUsers()
3040    {
3041        return this.getSuperManageableEntity().getUsers();
3042    }
3043
3044    /**
3045     * Create a create operation on the entity manager?
3046     * @see ManageableEntity#isCreate()
3047     */
3048    public boolean isCreate()
3049    {
3050        return this.getSuperManageableEntity().isCreate();
3051    }
3052
3053    /**
3054     * Create a delete operation on the entity manager?
3055     * @see ManageableEntity#isDelete()
3056     */
3057    public boolean isDelete()
3058    {
3059        return this.getSuperManageableEntity().isDelete();
3060    }
3061
3062    /**
3063     * Create a read operation on the entity manager?
3064     * @see ManageableEntity#isRead()
3065     */
3066    public boolean isRead()
3067    {
3068        return this.getSuperManageableEntity().isRead();
3069    }
3070
3071    /**
3072     * The maximum number of rows to load from the database.
3073     * @see ManageableEntity#isResolveable()
3074     */
3075    public boolean isResolveable()
3076    {
3077        return this.getSuperManageableEntity().isResolveable();
3078    }
3079
3080    /**
3081     * Create an update operation on the entity manager?
3082     * @see ManageableEntity#isUpdate()
3083     */
3084    public boolean isUpdate()
3085    {
3086        return this.getSuperManageableEntity().isUpdate();
3087    }
3088
3089    /**
3090     * Returns a string with the attributes without wrapper types.
3091     * @see ManageableEntity#listManageableMembers(boolean withTypes)
3092     */
3093    public String listManageableMembers(boolean withTypes)
3094    {
3095        return this.getSuperManageableEntity().listManageableMembers(withTypes);
3096    }
3097
3098    /**
3099     * Returns a string with the attributes and wrapper types.
3100     * @see ManageableEntity#listManageableMembersWithWrapperTypes()
3101     */
3102    public String listManageableMembersWithWrapperTypes()
3103    {
3104        return this.getSuperManageableEntity().listManageableMembersWithWrapperTypes();
3105    }
3106
3107    /**
3108     * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
3109     */
3110    @Override
3111    public void initialize()
3112    {
3113        this.getSuperEJB3EntityFacade().initialize();
3114        this.getSuperManageableEntity().initialize();
3115    }
3116
3117    /**
3118     * @return Object getSuperEJB3EntityFacade().getValidationOwner()
3119     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
3120     */
3121    @Override
3122    public Object getValidationOwner()
3123    {
3124        Object owner = this.getSuperEJB3EntityFacade().getValidationOwner();
3125        if (owner == null)
3126        {
3127            owner = this.getSuperManageableEntity().getValidationOwner();
3128        }
3129        return owner;
3130    }
3131
3132    /**
3133     * @return String getSuperEJB3EntityFacade().getValidationName()
3134     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
3135     */
3136    @Override
3137    public String getValidationName()
3138    {
3139        String name = this.getSuperEJB3EntityFacade().getValidationName();
3140        if (name == null)
3141        {
3142            name = this.getSuperManageableEntity().getValidationName();
3143        }
3144        return name;
3145    }
3146
3147    /**
3148     * @param validationMessages Collection<ModelValidationMessage>
3149     * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
3150     */
3151    @Override
3152    public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
3153    {
3154        this.getSuperEJB3EntityFacade().validateInvariants(validationMessages);
3155        this.getSuperManageableEntity().validateInvariants(validationMessages);
3156    }
3157
3158    /**
3159     * The property that stores the name of the metafacade.
3160     */
3161    private static final String NAME_PROPERTY = "name";
3162    private static final String FQNAME_PROPERTY = "fullyQualifiedName";
3163
3164    /**
3165     * @see Object#toString()
3166     */
3167    @Override
3168    public String toString()
3169    {
3170        final StringBuilder toString = new StringBuilder(this.getClass().getName());
3171        toString.append("[");
3172        try
3173        {
3174            toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
3175        }
3176        catch (final Throwable tryAgain)
3177        {
3178            try
3179            {
3180                toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
3181            }
3182            catch (final Throwable ignore)
3183            {
3184                // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
3185            }
3186        }
3187        toString.append("]");
3188        return toString.toString();
3189    }
3190}