001// license-header java merge-point
002//
003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
004//
005package org.andromda.cartridges.spring.metafacades;
006
007import java.util.Collection;
008import java.util.List;
009import org.andromda.core.common.Introspector;
010import org.andromda.core.metafacade.MetafacadeBase;
011import org.andromda.core.metafacade.MetafacadeFactory;
012import org.andromda.core.metafacade.ModelValidationMessage;
013import org.andromda.metafacades.uml.AssociationEndFacade;
014import org.andromda.metafacades.uml.AttributeFacade;
015import org.andromda.metafacades.uml.ClassifierFacade;
016import org.andromda.metafacades.uml.ConstraintFacade;
017import org.andromda.metafacades.uml.DependencyFacade;
018import org.andromda.metafacades.uml.Entity;
019import org.andromda.metafacades.uml.EntityAssociationEnd;
020import org.andromda.metafacades.uml.EntityQueryOperation;
021import org.andromda.metafacades.uml.GeneralizableElementFacade;
022import org.andromda.metafacades.uml.GeneralizationFacade;
023import org.andromda.metafacades.uml.ModelElementFacade;
024import org.andromda.metafacades.uml.ModelFacade;
025import org.andromda.metafacades.uml.OperationFacade;
026import org.andromda.metafacades.uml.PackageFacade;
027import org.andromda.metafacades.uml.StateMachineFacade;
028import org.andromda.metafacades.uml.StereotypeFacade;
029import org.andromda.metafacades.uml.TaggedValueFacade;
030import org.andromda.metafacades.uml.TemplateParameterFacade;
031import org.andromda.metafacades.uml.TypeMappings;
032import org.apache.log4j.Logger;
033
034/**
035 * Represents a Spring persistent entity
036 * MetafacadeLogic for SpringEntity
037 *
038 * @see SpringEntity
039 */
040public abstract class SpringEntityLogic
041    extends MetafacadeBase
042    implements SpringEntity
043{
044    /**
045     * The underlying UML object
046     * @see Object
047     */
048    protected Object metaObject;
049
050    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
051     * @param metaObjectIn
052     * @param context
053     */
054    protected SpringEntityLogic(Object metaObjectIn, String context)
055    {
056        super(metaObjectIn, getContext(context));
057        this.superEntity =
058           (Entity)
059            MetafacadeFactory.getInstance().createFacadeImpl(
060                    "org.andromda.metafacades.uml.Entity",
061                    metaObjectIn,
062                    getContext(context));
063        this.metaObject = metaObjectIn;
064    }
065
066    /**
067     * The logger instance.
068     */
069    private static final Logger logger = Logger.getLogger(SpringEntityLogic.class);
070
071    /**
072     * Gets the context for this metafacade logic instance.
073     * @param context String. Set to SpringEntity if null
074     * @return context String
075     */
076    private static String getContext(String context)
077    {
078        if (context == null)
079        {
080            context = "org.andromda.cartridges.spring.metafacades.SpringEntity";
081        }
082        return context;
083    }
084
085    private Entity superEntity;
086    private boolean superEntityInitialized = false;
087
088    /**
089     * Gets the Entity parent instance.
090     * @return this.superEntity Entity
091     */
092    private Entity getSuperEntity()
093    {
094        if (!this.superEntityInitialized)
095        {
096            ((MetafacadeBase)this.superEntity).setMetafacadeContext(this.getMetafacadeContext());
097            this.superEntityInitialized = true;
098        }
099        return this.superEntity;
100    }
101
102    /** Reset context only for non-root metafacades
103     * @param context
104     * @see MetafacadeBase#resetMetafacadeContext(String context)
105     */
106    @Override
107    public void resetMetafacadeContext(String context)
108    {
109        if (!this.contextRoot) // reset context only for non-root metafacades
110        {
111            context = getContext(context);  // to have same value as in original constructor call
112            setMetafacadeContext (context);
113            if (this.superEntityInitialized)
114            {
115                ((MetafacadeBase)this.superEntity).resetMetafacadeContext(context);
116            }
117        }
118    }
119
120    /**
121     * @return boolean true always
122     * @see SpringEntity
123     */
124    public boolean isSpringEntityMetaType()
125    {
126        return true;
127    }
128
129    // --------------- attributes ---------------------
130
131   /**
132    * @see SpringEntity#isDaoBusinessOperationsPresent()
133    * @return boolean
134    */
135    protected abstract boolean handleIsDaoBusinessOperationsPresent();
136
137    private boolean __daoBusinessOperationsPresent1a;
138    private boolean __daoBusinessOperationsPresent1aSet = false;
139
140    /**
141     * Indicates whether or not any business DAO operations are present.
142     * @return (boolean)handleIsDaoBusinessOperationsPresent()
143     */
144    public final boolean isDaoBusinessOperationsPresent()
145    {
146        boolean daoBusinessOperationsPresent1a = this.__daoBusinessOperationsPresent1a;
147        if (!this.__daoBusinessOperationsPresent1aSet)
148        {
149            // daoBusinessOperationsPresent has no pre constraints
150            daoBusinessOperationsPresent1a = handleIsDaoBusinessOperationsPresent();
151            // daoBusinessOperationsPresent has no post constraints
152            this.__daoBusinessOperationsPresent1a = daoBusinessOperationsPresent1a;
153            if (isMetafacadePropertyCachingEnabled())
154            {
155                this.__daoBusinessOperationsPresent1aSet = true;
156            }
157        }
158        return daoBusinessOperationsPresent1a;
159    }
160
161   /**
162    * @see SpringEntity#isDaoImplementationRequired()
163    * @return boolean
164    */
165    protected abstract boolean handleIsDaoImplementationRequired();
166
167    private boolean __daoImplementationRequired2a;
168    private boolean __daoImplementationRequired2aSet = false;
169
170    /**
171     * True if an implementation is required for the dao class, this is the case when there are
172     * business operations or value-object transformation.
173     * @return (boolean)handleIsDaoImplementationRequired()
174     */
175    public final boolean isDaoImplementationRequired()
176    {
177        boolean daoImplementationRequired2a = this.__daoImplementationRequired2a;
178        if (!this.__daoImplementationRequired2aSet)
179        {
180            // daoImplementationRequired has no pre constraints
181            daoImplementationRequired2a = handleIsDaoImplementationRequired();
182            // daoImplementationRequired has no post constraints
183            this.__daoImplementationRequired2a = daoImplementationRequired2a;
184            if (isMetafacadePropertyCachingEnabled())
185            {
186                this.__daoImplementationRequired2aSet = true;
187            }
188        }
189        return daoImplementationRequired2a;
190    }
191
192   /**
193    * @see SpringEntity#getDaoNoTransformationConstantName()
194    * @return String
195    */
196    protected abstract String handleGetDaoNoTransformationConstantName();
197
198    private String __daoNoTransformationConstantName3a;
199    private boolean __daoNoTransformationConstantName3aSet = false;
200
201    /**
202     * The constant name denoting no transformation is to be applied.
203     * @return (String)handleGetDaoNoTransformationConstantName()
204     */
205    public final String getDaoNoTransformationConstantName()
206    {
207        String daoNoTransformationConstantName3a = this.__daoNoTransformationConstantName3a;
208        if (!this.__daoNoTransformationConstantName3aSet)
209        {
210            // daoNoTransformationConstantName has no pre constraints
211            daoNoTransformationConstantName3a = handleGetDaoNoTransformationConstantName();
212            // daoNoTransformationConstantName has no post constraints
213            this.__daoNoTransformationConstantName3a = daoNoTransformationConstantName3a;
214            if (isMetafacadePropertyCachingEnabled())
215            {
216                this.__daoNoTransformationConstantName3aSet = true;
217            }
218        }
219        return daoNoTransformationConstantName3a;
220    }
221
222   /**
223    * @see SpringEntity#isHibernateInheritanceClass()
224    * @return boolean
225    */
226    protected abstract boolean handleIsHibernateInheritanceClass();
227
228    private boolean __hibernateInheritanceClass4a;
229    private boolean __hibernateInheritanceClass4aSet = false;
230
231    /**
232     * Return true if the hibernate inheritance strategy is class.
233     * @return (boolean)handleIsHibernateInheritanceClass()
234     */
235    public final boolean isHibernateInheritanceClass()
236    {
237        boolean hibernateInheritanceClass4a = this.__hibernateInheritanceClass4a;
238        if (!this.__hibernateInheritanceClass4aSet)
239        {
240            // hibernateInheritanceClass has no pre constraints
241            hibernateInheritanceClass4a = handleIsHibernateInheritanceClass();
242            // hibernateInheritanceClass has no post constraints
243            this.__hibernateInheritanceClass4a = hibernateInheritanceClass4a;
244            if (isMetafacadePropertyCachingEnabled())
245            {
246                this.__hibernateInheritanceClass4aSet = true;
247            }
248        }
249        return hibernateInheritanceClass4a;
250    }
251
252   /**
253    * @see SpringEntity#isHibernateInheritanceConcrete()
254    * @return boolean
255    */
256    protected abstract boolean handleIsHibernateInheritanceConcrete();
257
258    private boolean __hibernateInheritanceConcrete5a;
259    private boolean __hibernateInheritanceConcrete5aSet = false;
260
261    /**
262     * Return true if the hibernate inheritance strategy is concrete.
263     * @return (boolean)handleIsHibernateInheritanceConcrete()
264     */
265    public final boolean isHibernateInheritanceConcrete()
266    {
267        boolean hibernateInheritanceConcrete5a = this.__hibernateInheritanceConcrete5a;
268        if (!this.__hibernateInheritanceConcrete5aSet)
269        {
270            // hibernateInheritanceConcrete has no pre constraints
271            hibernateInheritanceConcrete5a = handleIsHibernateInheritanceConcrete();
272            // hibernateInheritanceConcrete has no post constraints
273            this.__hibernateInheritanceConcrete5a = hibernateInheritanceConcrete5a;
274            if (isMetafacadePropertyCachingEnabled())
275            {
276                this.__hibernateInheritanceConcrete5aSet = true;
277            }
278        }
279        return hibernateInheritanceConcrete5a;
280    }
281
282   /**
283    * @see SpringEntity#isHibernateInheritanceInterface()
284    * @return boolean
285    */
286    protected abstract boolean handleIsHibernateInheritanceInterface();
287
288    private boolean __hibernateInheritanceInterface6a;
289    private boolean __hibernateInheritanceInterface6aSet = false;
290
291    /**
292     * Return true if the hibernate inheritance strategy is interface.
293     * @return (boolean)handleIsHibernateInheritanceInterface()
294     */
295    public final boolean isHibernateInheritanceInterface()
296    {
297        boolean hibernateInheritanceInterface6a = this.__hibernateInheritanceInterface6a;
298        if (!this.__hibernateInheritanceInterface6aSet)
299        {
300            // hibernateInheritanceInterface has no pre constraints
301            hibernateInheritanceInterface6a = handleIsHibernateInheritanceInterface();
302            // hibernateInheritanceInterface has no post constraints
303            this.__hibernateInheritanceInterface6a = hibernateInheritanceInterface6a;
304            if (isMetafacadePropertyCachingEnabled())
305            {
306                this.__hibernateInheritanceInterface6aSet = true;
307            }
308        }
309        return hibernateInheritanceInterface6a;
310    }
311
312   /**
313    * @see SpringEntity#isHibernateInheritanceSubclass()
314    * @return boolean
315    */
316    protected abstract boolean handleIsHibernateInheritanceSubclass();
317
318    private boolean __hibernateInheritanceSubclass7a;
319    private boolean __hibernateInheritanceSubclass7aSet = false;
320
321    /**
322     * Return true if the hibernate inheritance strategy is subclass.
323     * @return (boolean)handleIsHibernateInheritanceSubclass()
324     */
325    public final boolean isHibernateInheritanceSubclass()
326    {
327        boolean hibernateInheritanceSubclass7a = this.__hibernateInheritanceSubclass7a;
328        if (!this.__hibernateInheritanceSubclass7aSet)
329        {
330            // hibernateInheritanceSubclass has no pre constraints
331            hibernateInheritanceSubclass7a = handleIsHibernateInheritanceSubclass();
332            // hibernateInheritanceSubclass has no post constraints
333            this.__hibernateInheritanceSubclass7a = hibernateInheritanceSubclass7a;
334            if (isMetafacadePropertyCachingEnabled())
335            {
336                this.__hibernateInheritanceSubclass7aSet = true;
337            }
338        }
339        return hibernateInheritanceSubclass7a;
340    }
341
342   /**
343    * @see SpringEntity#getHibernateInheritanceStrategy()
344    * @return String
345    */
346    protected abstract String handleGetHibernateInheritanceStrategy();
347
348    private String __hibernateInheritanceStrategy8a;
349    private boolean __hibernateInheritanceStrategy8aSet = false;
350
351    /**
352     * Return the value of the tagged value andromda_hibernate_inheritance.
353     * @return (String)handleGetHibernateInheritanceStrategy()
354     */
355    public final String getHibernateInheritanceStrategy()
356    {
357        String hibernateInheritanceStrategy8a = this.__hibernateInheritanceStrategy8a;
358        if (!this.__hibernateInheritanceStrategy8aSet)
359        {
360            // hibernateInheritanceStrategy has no pre constraints
361            hibernateInheritanceStrategy8a = handleGetHibernateInheritanceStrategy();
362            // hibernateInheritanceStrategy has no post constraints
363            this.__hibernateInheritanceStrategy8a = hibernateInheritanceStrategy8a;
364            if (isMetafacadePropertyCachingEnabled())
365            {
366                this.__hibernateInheritanceStrategy8aSet = true;
367            }
368        }
369        return hibernateInheritanceStrategy8a;
370    }
371
372   /**
373    * @see SpringEntity#getFullyQualifiedEntityName()
374    * @return String
375    */
376    protected abstract String handleGetFullyQualifiedEntityName();
377
378    private String __fullyQualifiedEntityName9a;
379    private boolean __fullyQualifiedEntityName9aSet = false;
380
381    /**
382     * The fully qualified name of the entity class.
383     * @return (String)handleGetFullyQualifiedEntityName()
384     */
385    public final String getFullyQualifiedEntityName()
386    {
387        String fullyQualifiedEntityName9a = this.__fullyQualifiedEntityName9a;
388        if (!this.__fullyQualifiedEntityName9aSet)
389        {
390            // fullyQualifiedEntityName has no pre constraints
391            fullyQualifiedEntityName9a = handleGetFullyQualifiedEntityName();
392            // fullyQualifiedEntityName has no post constraints
393            this.__fullyQualifiedEntityName9a = fullyQualifiedEntityName9a;
394            if (isMetafacadePropertyCachingEnabled())
395            {
396                this.__fullyQualifiedEntityName9aSet = true;
397            }
398        }
399        return fullyQualifiedEntityName9a;
400    }
401
402   /**
403    * @see SpringEntity#getFullyQualifiedEntityImplementationName()
404    * @return String
405    */
406    protected abstract String handleGetFullyQualifiedEntityImplementationName();
407
408    private String __fullyQualifiedEntityImplementationName10a;
409    private boolean __fullyQualifiedEntityImplementationName10aSet = false;
410
411    /**
412     * The fully qualified name of the entity implementation class.
413     * @return (String)handleGetFullyQualifiedEntityImplementationName()
414     */
415    public final String getFullyQualifiedEntityImplementationName()
416    {
417        String fullyQualifiedEntityImplementationName10a = this.__fullyQualifiedEntityImplementationName10a;
418        if (!this.__fullyQualifiedEntityImplementationName10aSet)
419        {
420            // fullyQualifiedEntityImplementationName has no pre constraints
421            fullyQualifiedEntityImplementationName10a = handleGetFullyQualifiedEntityImplementationName();
422            // fullyQualifiedEntityImplementationName has no post constraints
423            this.__fullyQualifiedEntityImplementationName10a = fullyQualifiedEntityImplementationName10a;
424            if (isMetafacadePropertyCachingEnabled())
425            {
426                this.__fullyQualifiedEntityImplementationName10aSet = true;
427            }
428        }
429        return fullyQualifiedEntityImplementationName10a;
430    }
431
432   /**
433    * @see SpringEntity#getDaoBaseName()
434    * @return String
435    */
436    protected abstract String handleGetDaoBaseName();
437
438    private String __daoBaseName11a;
439    private boolean __daoBaseName11aSet = false;
440
441    /**
442     * The DAO base class name.  This is the abstract DAO that contains CRUD operations
443     * as well as any generated finders defined on an entity.
444     * @return (String)handleGetDaoBaseName()
445     */
446    public final String getDaoBaseName()
447    {
448        String daoBaseName11a = this.__daoBaseName11a;
449        if (!this.__daoBaseName11aSet)
450        {
451            // daoBaseName has no pre constraints
452            daoBaseName11a = handleGetDaoBaseName();
453            // daoBaseName has no post constraints
454            this.__daoBaseName11a = daoBaseName11a;
455            if (isMetafacadePropertyCachingEnabled())
456            {
457                this.__daoBaseName11aSet = true;
458            }
459        }
460        return daoBaseName11a;
461    }
462
463   /**
464    * @see SpringEntity#getDaoName()
465    * @return String
466    */
467    protected abstract String handleGetDaoName();
468
469    private String __daoName12a;
470    private boolean __daoName12aSet = false;
471
472    /**
473     * The name of the DAO for the specified entity.
474     * @return (String)handleGetDaoName()
475     */
476    public final String getDaoName()
477    {
478        String daoName12a = this.__daoName12a;
479        if (!this.__daoName12aSet)
480        {
481            // daoName has no pre constraints
482            daoName12a = handleGetDaoName();
483            // daoName has no post constraints
484            this.__daoName12a = daoName12a;
485            if (isMetafacadePropertyCachingEnabled())
486            {
487                this.__daoName12aSet = true;
488            }
489        }
490        return daoName12a;
491    }
492
493   /**
494    * @see SpringEntity#getDaoImplementationName()
495    * @return String
496    */
497    protected abstract String handleGetDaoImplementationName();
498
499    private String __daoImplementationName13a;
500    private boolean __daoImplementationName13aSet = false;
501
502    /**
503     * The DAO implementation class name.
504     * @return (String)handleGetDaoImplementationName()
505     */
506    public final String getDaoImplementationName()
507    {
508        String daoImplementationName13a = this.__daoImplementationName13a;
509        if (!this.__daoImplementationName13aSet)
510        {
511            // daoImplementationName has no pre constraints
512            daoImplementationName13a = handleGetDaoImplementationName();
513            // daoImplementationName has no post constraints
514            this.__daoImplementationName13a = daoImplementationName13a;
515            if (isMetafacadePropertyCachingEnabled())
516            {
517                this.__daoImplementationName13aSet = true;
518            }
519        }
520        return daoImplementationName13a;
521    }
522
523   /**
524    * @see SpringEntity#getEntityImplementationName()
525    * @return String
526    */
527    protected abstract String handleGetEntityImplementationName();
528
529    private String __entityImplementationName14a;
530    private boolean __entityImplementationName14aSet = false;
531
532    /**
533     * The implementation name for the entity.
534     * @return (String)handleGetEntityImplementationName()
535     */
536    public final String getEntityImplementationName()
537    {
538        String entityImplementationName14a = this.__entityImplementationName14a;
539        if (!this.__entityImplementationName14aSet)
540        {
541            // entityImplementationName has no pre constraints
542            entityImplementationName14a = handleGetEntityImplementationName();
543            // entityImplementationName has no post constraints
544            this.__entityImplementationName14a = entityImplementationName14a;
545            if (isMetafacadePropertyCachingEnabled())
546            {
547                this.__entityImplementationName14aSet = true;
548            }
549        }
550        return entityImplementationName14a;
551    }
552
553   /**
554    * @see SpringEntity#getEntityName()
555    * @return String
556    */
557    protected abstract String handleGetEntityName();
558
559    private String __entityName15a;
560    private boolean __entityName15aSet = false;
561
562    /**
563     * The name of the plain entity name.
564     * @return (String)handleGetEntityName()
565     */
566    public final String getEntityName()
567    {
568        String entityName15a = this.__entityName15a;
569        if (!this.__entityName15aSet)
570        {
571            // entityName has no pre constraints
572            entityName15a = handleGetEntityName();
573            // entityName has no post constraints
574            this.__entityName15a = entityName15a;
575            if (isMetafacadePropertyCachingEnabled())
576            {
577                this.__entityName15aSet = true;
578            }
579        }
580        return entityName15a;
581    }
582
583   /**
584    * @see SpringEntity#getFullyQualifiedDaoBaseName()
585    * @return String
586    */
587    protected abstract String handleGetFullyQualifiedDaoBaseName();
588
589    private String __fullyQualifiedDaoBaseName16a;
590    private boolean __fullyQualifiedDaoBaseName16aSet = false;
591
592    /**
593     * The fully qualified name of the base DAO.
594     * @return (String)handleGetFullyQualifiedDaoBaseName()
595     */
596    public final String getFullyQualifiedDaoBaseName()
597    {
598        String fullyQualifiedDaoBaseName16a = this.__fullyQualifiedDaoBaseName16a;
599        if (!this.__fullyQualifiedDaoBaseName16aSet)
600        {
601            // fullyQualifiedDaoBaseName has no pre constraints
602            fullyQualifiedDaoBaseName16a = handleGetFullyQualifiedDaoBaseName();
603            // fullyQualifiedDaoBaseName has no post constraints
604            this.__fullyQualifiedDaoBaseName16a = fullyQualifiedDaoBaseName16a;
605            if (isMetafacadePropertyCachingEnabled())
606            {
607                this.__fullyQualifiedDaoBaseName16aSet = true;
608            }
609        }
610        return fullyQualifiedDaoBaseName16a;
611    }
612
613   /**
614    * @see SpringEntity#getFullyQualifiedDaoImplementationName()
615    * @return String
616    */
617    protected abstract String handleGetFullyQualifiedDaoImplementationName();
618
619    private String __fullyQualifiedDaoImplementationName17a;
620    private boolean __fullyQualifiedDaoImplementationName17aSet = false;
621
622    /**
623     * The fully qualified name of the DAO implemetation.
624     * @return (String)handleGetFullyQualifiedDaoImplementationName()
625     */
626    public final String getFullyQualifiedDaoImplementationName()
627    {
628        String fullyQualifiedDaoImplementationName17a = this.__fullyQualifiedDaoImplementationName17a;
629        if (!this.__fullyQualifiedDaoImplementationName17aSet)
630        {
631            // fullyQualifiedDaoImplementationName has no pre constraints
632            fullyQualifiedDaoImplementationName17a = handleGetFullyQualifiedDaoImplementationName();
633            // fullyQualifiedDaoImplementationName has no post constraints
634            this.__fullyQualifiedDaoImplementationName17a = fullyQualifiedDaoImplementationName17a;
635            if (isMetafacadePropertyCachingEnabled())
636            {
637                this.__fullyQualifiedDaoImplementationName17aSet = true;
638            }
639        }
640        return fullyQualifiedDaoImplementationName17a;
641    }
642
643   /**
644    * @see SpringEntity#getFullyQualifiedDaoName()
645    * @return String
646    */
647    protected abstract String handleGetFullyQualifiedDaoName();
648
649    private String __fullyQualifiedDaoName18a;
650    private boolean __fullyQualifiedDaoName18aSet = false;
651
652    /**
653     * The fully qualified name of the DAO.
654     * @return (String)handleGetFullyQualifiedDaoName()
655     */
656    public final String getFullyQualifiedDaoName()
657    {
658        String fullyQualifiedDaoName18a = this.__fullyQualifiedDaoName18a;
659        if (!this.__fullyQualifiedDaoName18aSet)
660        {
661            // fullyQualifiedDaoName has no pre constraints
662            fullyQualifiedDaoName18a = handleGetFullyQualifiedDaoName();
663            // fullyQualifiedDaoName has no post constraints
664            this.__fullyQualifiedDaoName18a = fullyQualifiedDaoName18a;
665            if (isMetafacadePropertyCachingEnabled())
666            {
667                this.__fullyQualifiedDaoName18aSet = true;
668            }
669        }
670        return fullyQualifiedDaoName18a;
671    }
672
673   /**
674    * @see SpringEntity#isRequiresHibernateMapping()
675    * @return boolean
676    */
677    protected abstract boolean handleIsRequiresHibernateMapping();
678
679    private boolean __requiresHibernateMapping19a;
680    private boolean __requiresHibernateMapping19aSet = false;
681
682    /**
683     * Indicates whether or not this entity requires a Hibernate mapping cfg.xml file within the
684     * Spring application context.
685     * @return (boolean)handleIsRequiresHibernateMapping()
686     */
687    public final boolean isRequiresHibernateMapping()
688    {
689        boolean requiresHibernateMapping19a = this.__requiresHibernateMapping19a;
690        if (!this.__requiresHibernateMapping19aSet)
691        {
692            // requiresHibernateMapping has no pre constraints
693            requiresHibernateMapping19a = handleIsRequiresHibernateMapping();
694            // requiresHibernateMapping has no post constraints
695            this.__requiresHibernateMapping19a = requiresHibernateMapping19a;
696            if (isMetafacadePropertyCachingEnabled())
697            {
698                this.__requiresHibernateMapping19aSet = true;
699            }
700        }
701        return requiresHibernateMapping19a;
702    }
703
704   /**
705    * @see SpringEntity#getAttributeEmbeddedValueList()
706    * @return String
707    */
708    protected abstract String handleGetAttributeEmbeddedValueList();
709
710    private String __attributeEmbeddedValueList20a;
711    private boolean __attributeEmbeddedValueList20aSet = false;
712
713    /**
714     * A quoted comma separated list of the names of embedded values belonging to this entity (that
715     * represented as attributes)
716     * @return (String)handleGetAttributeEmbeddedValueList()
717     */
718    public final String getAttributeEmbeddedValueList()
719    {
720        String attributeEmbeddedValueList20a = this.__attributeEmbeddedValueList20a;
721        if (!this.__attributeEmbeddedValueList20aSet)
722        {
723            // attributeEmbeddedValueList has no pre constraints
724            attributeEmbeddedValueList20a = handleGetAttributeEmbeddedValueList();
725            // attributeEmbeddedValueList has no post constraints
726            this.__attributeEmbeddedValueList20a = attributeEmbeddedValueList20a;
727            if (isMetafacadePropertyCachingEnabled())
728            {
729                this.__attributeEmbeddedValueList20aSet = true;
730            }
731        }
732        return attributeEmbeddedValueList20a;
733    }
734
735   /**
736    * @see SpringEntity#isRichClient()
737    * @return boolean
738    */
739    protected abstract boolean handleIsRichClient();
740
741    private boolean __richClient21a;
742    private boolean __richClient21aSet = false;
743
744    /**
745     * Returns true if this entity is meant to be used in a richt client application.
746     * @return (boolean)handleIsRichClient()
747     */
748    public final boolean isRichClient()
749    {
750        boolean richClient21a = this.__richClient21a;
751        if (!this.__richClient21aSet)
752        {
753            // richClient has no pre constraints
754            richClient21a = handleIsRichClient();
755            // richClient has no post constraints
756            this.__richClient21a = richClient21a;
757            if (isMetafacadePropertyCachingEnabled())
758            {
759                this.__richClient21aSet = true;
760            }
761        }
762        return richClient21a;
763    }
764
765    // ---------------- business methods ----------------------
766
767    /**
768     * Method to be implemented in descendants
769     * Gets the Spring bean name, and optionally adds a target suffix, if 'targetSuffix' is set to
770     * true.
771     * @param targetSuffix
772     * @return String
773     */
774    protected abstract String handleGetBeanName(boolean targetSuffix);
775
776    /**
777     * Gets the Spring bean name, and optionally adds a target suffix, if 'targetSuffix' is set to
778     * true.
779     * @param targetSuffix boolean
780     * Whether or not to add a target suffix to the bean name.
781     * @return handleGetBeanName(targetSuffix)
782     */
783    public String getBeanName(boolean targetSuffix)
784    {
785        // getBeanName has no pre constraints
786        String returnValue = handleGetBeanName(targetSuffix);
787        // getBeanName has no post constraints
788        return returnValue;
789    }
790
791    // ------------- associations ------------------
792
793    /**
794     * Represents a Spring persistent entity
795     * @return (Collection<ClassifierFacade>)handleGetAllValueObjectReferences()
796     */
797    public final Collection<ClassifierFacade> getAllValueObjectReferences()
798    {
799        Collection<ClassifierFacade> getAllValueObjectReferences1r = null;
800        // springEntity has no pre constraints
801        Collection result = handleGetAllValueObjectReferences();
802        List shieldedResult = this.shieldedElements(result);
803        try
804        {
805            getAllValueObjectReferences1r = (Collection<ClassifierFacade>)shieldedResult;
806        }
807        catch (ClassCastException ex)
808        {
809            // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
810            SpringEntityLogic.logger.warn("incorrect metafacade cast for SpringEntityLogic.getAllValueObjectReferences Collection<ClassifierFacade> " + result + ": " + shieldedResult);
811        }
812        // springEntity has no post constraints
813        return getAllValueObjectReferences1r;
814    }
815
816    /**
817     * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
818     * @return  Collection
819     */
820    protected abstract Collection handleGetAllValueObjectReferences();
821
822    private Collection<SpringEntityOperation> __getDaoBusinessOperations2r;
823    private boolean __getDaoBusinessOperations2rSet = false;
824
825    /**
826     * Represents a Spring persistent entity
827     * @return (Collection<SpringEntityOperation>)handleGetDaoBusinessOperations()
828     */
829    public final Collection<SpringEntityOperation> getDaoBusinessOperations()
830    {
831        Collection<SpringEntityOperation> getDaoBusinessOperations2r = this.__getDaoBusinessOperations2r;
832        if (!this.__getDaoBusinessOperations2rSet)
833        {
834            // springEntity has no pre constraints
835            Collection result = handleGetDaoBusinessOperations();
836            List shieldedResult = this.shieldedElements(result);
837            try
838            {
839                getDaoBusinessOperations2r = (Collection<SpringEntityOperation>)shieldedResult;
840            }
841            catch (ClassCastException ex)
842            {
843                // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
844                SpringEntityLogic.logger.warn("incorrect metafacade cast for SpringEntityLogic.getDaoBusinessOperations Collection<SpringEntityOperation> " + result + ": " + shieldedResult);
845            }
846            // springEntity has no post constraints
847            this.__getDaoBusinessOperations2r = getDaoBusinessOperations2r;
848            if (isMetafacadePropertyCachingEnabled())
849            {
850                this.__getDaoBusinessOperations2rSet = true;
851            }
852        }
853        return getDaoBusinessOperations2r;
854    }
855
856    /**
857     * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
858     * @return  Collection
859     */
860    protected abstract Collection handleGetDaoBusinessOperations();
861
862    private SpringEntity __getRoot3r;
863    private boolean __getRoot3rSet = false;
864
865    /**
866     * Represents a Spring persistent entity
867     * @return (SpringEntity)handleGetRoot()
868     */
869    public final SpringEntity getRoot()
870    {
871        SpringEntity getRoot3r = this.__getRoot3r;
872        if (!this.__getRoot3rSet)
873        {
874            // springEntity has no pre constraints
875            Object result = handleGetRoot();
876            MetafacadeBase shieldedResult = this.shieldedElement(result);
877            try
878            {
879                getRoot3r = (SpringEntity)shieldedResult;
880            }
881            catch (ClassCastException ex)
882            {
883                // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
884                SpringEntityLogic.logger.warn("incorrect metafacade cast for SpringEntityLogic.getRoot SpringEntity " + result + ": " + shieldedResult);
885            }
886            // springEntity has no post constraints
887            this.__getRoot3r = getRoot3r;
888            if (isMetafacadePropertyCachingEnabled())
889            {
890                this.__getRoot3rSet = true;
891            }
892        }
893        return getRoot3r;
894    }
895
896    /**
897     * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type
898     * @return Object
899     */
900    protected abstract Object handleGetRoot();
901
902    /**
903     * Represents a Spring persistent entity
904     * @return (Collection<ClassifierFacade>)handleGetValueObjectReferences()
905     */
906    public final Collection<ClassifierFacade> getValueObjectReferences()
907    {
908        Collection<ClassifierFacade> getValueObjectReferences4r = null;
909        // springEntity has no pre constraints
910        Collection result = handleGetValueObjectReferences();
911        List shieldedResult = this.shieldedElements(result);
912        try
913        {
914            getValueObjectReferences4r = (Collection<ClassifierFacade>)shieldedResult;
915        }
916        catch (ClassCastException ex)
917        {
918            // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn
919            SpringEntityLogic.logger.warn("incorrect metafacade cast for SpringEntityLogic.getValueObjectReferences Collection<ClassifierFacade> " + result + ": " + shieldedResult);
920        }
921        // springEntity has no post constraints
922        return getValueObjectReferences4r;
923    }
924
925    /**
926     * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type
927     * @return  Collection
928     */
929    protected abstract Collection handleGetValueObjectReferences();
930
931    /**
932     * @return true
933     * @see Entity
934     */
935    public boolean isEntityMetaType()
936    {
937        return true;
938    }
939
940    /**
941     * @return true
942     * @see ClassifierFacade
943     */
944    public boolean isClassifierFacadeMetaType()
945    {
946        return true;
947    }
948
949    /**
950     * @return true
951     * @see GeneralizableElementFacade
952     */
953    public boolean isGeneralizableElementFacadeMetaType()
954    {
955        return true;
956    }
957
958    /**
959     * @return true
960     * @see ModelElementFacade
961     */
962    public boolean isModelElementFacadeMetaType()
963    {
964        return true;
965    }
966
967    // ----------- delegates to Entity ------------
968    /**
969     * Return the attribute which name matches the parameter
970     * @see ClassifierFacade#findAttribute(String name)
971     */
972    public AttributeFacade findAttribute(String name)
973    {
974        return this.getSuperEntity().findAttribute(name);
975    }
976
977    /**
978     * Those abstraction dependencies for which this classifier is the client.
979     * @see ClassifierFacade#getAbstractions()
980     */
981    public Collection<ClassifierFacade> getAbstractions()
982    {
983        return this.getSuperEntity().getAbstractions();
984    }
985
986    /**
987     * Lists all classes associated to this one and any ancestor classes (through generalization).
988     * There will be no duplicates. The order of the elements is predictable.
989     * @see ClassifierFacade#getAllAssociatedClasses()
990     */
991    public Collection<ClassifierFacade> getAllAssociatedClasses()
992    {
993        return this.getSuperEntity().getAllAssociatedClasses();
994    }
995
996    /**
997     * A collection containing all 'properties' of the classifier and its ancestors.  Properties are
998     * any attributes and navigable connecting association ends.
999     * @see ClassifierFacade#getAllProperties()
1000     */
1001    public Collection<ModelElementFacade> getAllProperties()
1002    {
1003        return this.getSuperEntity().getAllProperties();
1004    }
1005
1006    /**
1007     * A collection containing all required and/or read-only 'properties' of the classifier and its
1008     * ancestors. Properties are any attributes and navigable connecting association ends.
1009     * @see ClassifierFacade#getAllRequiredConstructorParameters()
1010     */
1011    public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
1012    {
1013        return this.getSuperEntity().getAllRequiredConstructorParameters();
1014    }
1015
1016    /**
1017     * Gets the array type for this classifier.  If this classifier already represents an array, it
1018     * just returns itself.
1019     * @see ClassifierFacade#getArray()
1020     */
1021    public ClassifierFacade getArray()
1022    {
1023        return this.getSuperEntity().getArray();
1024    }
1025
1026    /**
1027     * The name of the classifier as an array.
1028     * @see ClassifierFacade#getArrayName()
1029     */
1030    public String getArrayName()
1031    {
1032        return this.getSuperEntity().getArrayName();
1033    }
1034
1035    /**
1036     * Lists the classes associated to this one, there is no repitition of classes. The order of the
1037     * elements is predictable.
1038     * @see ClassifierFacade#getAssociatedClasses()
1039     */
1040    public Collection<ClassifierFacade> getAssociatedClasses()
1041    {
1042        return this.getSuperEntity().getAssociatedClasses();
1043    }
1044
1045    /**
1046     * Gets the association ends belonging to a classifier.
1047     * @see ClassifierFacade#getAssociationEnds()
1048     */
1049    public List<AssociationEndFacade> getAssociationEnds()
1050    {
1051        return this.getSuperEntity().getAssociationEnds();
1052    }
1053
1054    /**
1055     * Gets the attributes that belong to the classifier.
1056     * @see ClassifierFacade#getAttributes()
1057     */
1058    public List<AttributeFacade> getAttributes()
1059    {
1060        return this.getSuperEntity().getAttributes();
1061    }
1062
1063    /**
1064     * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
1065     * hierarchy and gets the attributes from the super classes as well.
1066     * @see ClassifierFacade#getAttributes(boolean follow)
1067     */
1068    public List<AttributeFacade> getAttributes(boolean follow)
1069    {
1070        return this.getSuperEntity().getAttributes(follow);
1071    }
1072
1073    /**
1074     * The fully qualified name of the classifier as an array.
1075     * @see ClassifierFacade#getFullyQualifiedArrayName()
1076     */
1077    public String getFullyQualifiedArrayName()
1078    {
1079        return this.getSuperEntity().getFullyQualifiedArrayName();
1080    }
1081
1082    /**
1083     * Returns all those operations that could be implemented at this classifier's level. This means
1084     * the operations owned by this classifier as well as any realized interface's operations
1085     * (recursively) in case this classifier itself is not already an interface, or generalized when
1086     * this classifier is an interface.
1087     * @see ClassifierFacade#getImplementationOperations()
1088     */
1089    public Collection<OperationFacade> getImplementationOperations()
1090    {
1091        return this.getSuperEntity().getImplementationOperations();
1092    }
1093
1094    /**
1095     * A comma separated list of the fully qualified names of all implemented interfaces.
1096     * @see ClassifierFacade#getImplementedInterfaceList()
1097     */
1098    public String getImplementedInterfaceList()
1099    {
1100        return this.getSuperEntity().getImplementedInterfaceList();
1101    }
1102
1103    /**
1104     * Those attributes that are scoped to an instance of this class.
1105     * @see ClassifierFacade#getInstanceAttributes()
1106     */
1107    public Collection<AttributeFacade> getInstanceAttributes()
1108    {
1109        return this.getSuperEntity().getInstanceAttributes();
1110    }
1111
1112    /**
1113     * Those operations that are scoped to an instance of this class.
1114     * @see ClassifierFacade#getInstanceOperations()
1115     */
1116    public List<OperationFacade> getInstanceOperations()
1117    {
1118        return this.getSuperEntity().getInstanceOperations();
1119    }
1120
1121    /**
1122     * Those interfaces that are abstractions of this classifier, this basically means this
1123     * classifier realizes them.
1124     * @see ClassifierFacade#getInterfaceAbstractions()
1125     */
1126    public Collection<ClassifierFacade> getInterfaceAbstractions()
1127    {
1128        return this.getSuperEntity().getInterfaceAbstractions();
1129    }
1130
1131    /**
1132     * A String representing a new Constructor declaration for this classifier type to be used in a
1133     * Java environment.
1134     * @see ClassifierFacade#getJavaNewString()
1135     */
1136    public String getJavaNewString()
1137    {
1138        return this.getSuperEntity().getJavaNewString();
1139    }
1140
1141    /**
1142     * A String representing the null-value for this classifier type to be used in a Java
1143     * environment.
1144     * @see ClassifierFacade#getJavaNullString()
1145     */
1146    public String getJavaNullString()
1147    {
1148        return this.getSuperEntity().getJavaNullString();
1149    }
1150
1151    /**
1152     * The other ends of this classifier's association ends which are navigable.
1153     * @see ClassifierFacade#getNavigableConnectingEnds()
1154     */
1155    public Collection<AssociationEndFacade> getNavigableConnectingEnds()
1156    {
1157        return this.getSuperEntity().getNavigableConnectingEnds();
1158    }
1159
1160    /**
1161     * Get the other ends of this classifier's association ends which are navigable and if 'follow'
1162     * is true goes up the inheritance hierarchy and gets the super association ends as well.
1163     * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
1164     */
1165    public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
1166    {
1167        return this.getSuperEntity().getNavigableConnectingEnds(follow);
1168    }
1169
1170    /**
1171     * Assuming that the classifier is an array, this will return the non array type of the
1172     * classifier from
1173     * the model.  If the classifier is NOT an array, it will just return itself.
1174     * @see ClassifierFacade#getNonArray()
1175     */
1176    public ClassifierFacade getNonArray()
1177    {
1178        return this.getSuperEntity().getNonArray();
1179    }
1180
1181    /**
1182     * The attributes from this classifier in the form of an operation call (this example would be
1183     * in Java): '(String attributeOne, String attributeTwo).  If there were no attributes on the
1184     * classifier, the result would be an empty '()'.
1185     * @see ClassifierFacade#getOperationCallFromAttributes()
1186     */
1187    public String getOperationCallFromAttributes()
1188    {
1189        return this.getSuperEntity().getOperationCallFromAttributes();
1190    }
1191
1192    /**
1193     * The operations owned by this classifier.
1194     * @see ClassifierFacade#getOperations()
1195     */
1196    public List<OperationFacade> getOperations()
1197    {
1198        return this.getSuperEntity().getOperations();
1199    }
1200
1201    /**
1202     * A collection containing all 'properties' of the classifier.  Properties are any attributes
1203     * and navigable connecting association ends.
1204     * @see ClassifierFacade#getProperties()
1205     */
1206    public List<ModelElementFacade> getProperties()
1207    {
1208        return this.getSuperEntity().getProperties();
1209    }
1210
1211    /**
1212     * Gets all properties (attributes and navigable association ends) for the classifier and if
1213     * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
1214     * classes as well.
1215     * @see ClassifierFacade#getProperties(boolean follow)
1216     */
1217    public List getProperties(boolean follow)
1218    {
1219        return this.getSuperEntity().getProperties(follow);
1220    }
1221
1222    /**
1223     * A collection containing all required and/or read-only 'properties' of the classifier. 
1224     * Properties are any attributes and navigable connecting association ends.
1225     * @see ClassifierFacade#getRequiredConstructorParameters()
1226     */
1227    public Collection<ModelElementFacade> getRequiredConstructorParameters()
1228    {
1229        return this.getSuperEntity().getRequiredConstructorParameters();
1230    }
1231
1232    /**
1233     * Returns the serial version UID of the underlying model element.
1234     * @see ClassifierFacade#getSerialVersionUID()
1235     */
1236    public long getSerialVersionUID()
1237    {
1238        return this.getSuperEntity().getSerialVersionUID();
1239    }
1240
1241    /**
1242     * Those attributes that are scoped to the definition of this class.
1243     * @see ClassifierFacade#getStaticAttributes()
1244     */
1245    public Collection<AttributeFacade> getStaticAttributes()
1246    {
1247        return this.getSuperEntity().getStaticAttributes();
1248    }
1249
1250    /**
1251     * Those operations that are scoped to the definition of this class.
1252     * @see ClassifierFacade#getStaticOperations()
1253     */
1254    public List<OperationFacade> getStaticOperations()
1255    {
1256        return this.getSuperEntity().getStaticOperations();
1257    }
1258
1259    /**
1260     * This class' superclass, returns the generalization if it is a ClassifierFacade, null
1261     * otherwise.
1262     * @see ClassifierFacade#getSuperClass()
1263     */
1264    public ClassifierFacade getSuperClass()
1265    {
1266        return this.getSuperEntity().getSuperClass();
1267    }
1268
1269    /**
1270     * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
1271     * maps to 'Long').  If the classifier doesn't have a wrapper defined for it, this method will
1272     * return a null.  Note that wrapper mappings must be defined for the namespace by defining the
1273     * 'wrapperMappingsUri', this property must point to the location of the mappings file which
1274     * maps the primitives to wrapper types.
1275     * @see ClassifierFacade#getWrapperName()
1276     */
1277    public String getWrapperName()
1278    {
1279        return this.getSuperEntity().getWrapperName();
1280    }
1281
1282    /**
1283     * Indicates if this classifier is 'abstract'.
1284     * @see ClassifierFacade#isAbstract()
1285     */
1286    public boolean isAbstract()
1287    {
1288        return this.getSuperEntity().isAbstract();
1289    }
1290
1291    /**
1292     * True if this classifier represents an array type. False otherwise.
1293     * @see ClassifierFacade#isArrayType()
1294     */
1295    public boolean isArrayType()
1296    {
1297        return this.getSuperEntity().isArrayType();
1298    }
1299
1300    /**
1301     * True if the ClassifierFacade is an AssociationClass.
1302     * @see ClassifierFacade#isAssociationClass()
1303     */
1304    public boolean isAssociationClass()
1305    {
1306        return this.getSuperEntity().isAssociationClass();
1307    }
1308
1309    /**
1310     * Returns true if this type represents a Blob type.
1311     * @see ClassifierFacade#isBlobType()
1312     */
1313    public boolean isBlobType()
1314    {
1315        return this.getSuperEntity().isBlobType();
1316    }
1317
1318    /**
1319     * Indicates if this type represents a boolean type or not.
1320     * @see ClassifierFacade#isBooleanType()
1321     */
1322    public boolean isBooleanType()
1323    {
1324        return this.getSuperEntity().isBooleanType();
1325    }
1326
1327    /**
1328     * Indicates if this type represents a char, Character, or java.lang.Character type or not.
1329     * @see ClassifierFacade#isCharacterType()
1330     */
1331    public boolean isCharacterType()
1332    {
1333        return this.getSuperEntity().isCharacterType();
1334    }
1335
1336    /**
1337     * Returns true if this type represents a Clob type.
1338     * @see ClassifierFacade#isClobType()
1339     */
1340    public boolean isClobType()
1341    {
1342        return this.getSuperEntity().isClobType();
1343    }
1344
1345    /**
1346     * True if this classifier represents a collection type. False otherwise.
1347     * @see ClassifierFacade#isCollectionType()
1348     */
1349    public boolean isCollectionType()
1350    {
1351        return this.getSuperEntity().isCollectionType();
1352    }
1353
1354    /**
1355     * True/false depending on whether or not this classifier represents a datatype. A data type is
1356     * a type whose instances are identified only by their value. A data type may contain attributes
1357     * to support the modeling of structured data types.
1358     * @see ClassifierFacade#isDataType()
1359     */
1360    public boolean isDataType()
1361    {
1362        return this.getSuperEntity().isDataType();
1363    }
1364
1365    /**
1366     * True when this classifier is a date type.
1367     * @see ClassifierFacade#isDateType()
1368     */
1369    public boolean isDateType()
1370    {
1371        return this.getSuperEntity().isDateType();
1372    }
1373
1374    /**
1375     * Indicates if this type represents a Double type or not.
1376     * @see ClassifierFacade#isDoubleType()
1377     */
1378    public boolean isDoubleType()
1379    {
1380        return this.getSuperEntity().isDoubleType();
1381    }
1382
1383    /**
1384     * Indicates whether or not this classifier represents an "EmbeddedValue'.
1385     * @see ClassifierFacade#isEmbeddedValue()
1386     */
1387    public boolean isEmbeddedValue()
1388    {
1389        return this.getSuperEntity().isEmbeddedValue();
1390    }
1391
1392    /**
1393     * True if this classifier is in fact marked as an enumeration.
1394     * @see ClassifierFacade#isEnumeration()
1395     */
1396    public boolean isEnumeration()
1397    {
1398        return this.getSuperEntity().isEnumeration();
1399    }
1400
1401    /**
1402     * Returns true if this type represents a 'file' type.
1403     * @see ClassifierFacade#isFileType()
1404     */
1405    public boolean isFileType()
1406    {
1407        return this.getSuperEntity().isFileType();
1408    }
1409
1410    /**
1411     * Indicates if this type represents a Float type or not.
1412     * @see ClassifierFacade#isFloatType()
1413     */
1414    public boolean isFloatType()
1415    {
1416        return this.getSuperEntity().isFloatType();
1417    }
1418
1419    /**
1420     * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
1421     * @see ClassifierFacade#isIntegerType()
1422     */
1423    public boolean isIntegerType()
1424    {
1425        return this.getSuperEntity().isIntegerType();
1426    }
1427
1428    /**
1429     * True/false depending on whether or not this Classifier represents an interface.
1430     * @see ClassifierFacade#isInterface()
1431     */
1432    public boolean isInterface()
1433    {
1434        return this.getSuperEntity().isInterface();
1435    }
1436
1437    /**
1438     * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
1439     * @see ClassifierFacade#isLeaf()
1440     */
1441    public boolean isLeaf()
1442    {
1443        return this.getSuperEntity().isLeaf();
1444    }
1445
1446    /**
1447     * True if this classifier represents a list type. False otherwise.
1448     * @see ClassifierFacade#isListType()
1449     */
1450    public boolean isListType()
1451    {
1452        return this.getSuperEntity().isListType();
1453    }
1454
1455    /**
1456     * Indicates if this type represents a Long type or not.
1457     * @see ClassifierFacade#isLongType()
1458     */
1459    public boolean isLongType()
1460    {
1461        return this.getSuperEntity().isLongType();
1462    }
1463
1464    /**
1465     * Indicates whether or not this classifier represents a Map type.
1466     * @see ClassifierFacade#isMapType()
1467     */
1468    public boolean isMapType()
1469    {
1470        return this.getSuperEntity().isMapType();
1471    }
1472
1473    /**
1474     * Indicates whether or not this classifier represents a primitive type.
1475     * @see ClassifierFacade#isPrimitive()
1476     */
1477    public boolean isPrimitive()
1478    {
1479        return this.getSuperEntity().isPrimitive();
1480    }
1481
1482    /**
1483     * True if this classifier represents a set type. False otherwise.
1484     * @see ClassifierFacade#isSetType()
1485     */
1486    public boolean isSetType()
1487    {
1488        return this.getSuperEntity().isSetType();
1489    }
1490
1491    /**
1492     * Indicates whether or not this classifier represents a string type.
1493     * @see ClassifierFacade#isStringType()
1494     */
1495    public boolean isStringType()
1496    {
1497        return this.getSuperEntity().isStringType();
1498    }
1499
1500    /**
1501     * Indicates whether or not this classifier represents a time type.
1502     * @see ClassifierFacade#isTimeType()
1503     */
1504    public boolean isTimeType()
1505    {
1506        return this.getSuperEntity().isTimeType();
1507    }
1508
1509    /**
1510     * Returns true if this type is a wrapped primitive type.
1511     * @see ClassifierFacade#isWrappedPrimitive()
1512     */
1513    public boolean isWrappedPrimitive()
1514    {
1515        return this.getSuperEntity().isWrappedPrimitive();
1516    }
1517
1518    /**
1519     * Returns a collection of all entities this entity and its ancestors have a relation to.
1520     * @see Entity#getAllEntityReferences()
1521     */
1522    public Collection<DependencyFacade> getAllEntityReferences()
1523    {
1524        return this.getSuperEntity().getAllEntityReferences();
1525    }
1526
1527    /**
1528     * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
1529     * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
1530     * is true, will include identifiers.
1531     * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers)
1532     */
1533    public String getAttributeNameList(boolean follow, boolean withIdentifiers)
1534    {
1535        return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers);
1536    }
1537
1538    /**
1539     * Gets a comma separated list of attribute names.  If 'follow' is true, will travel up the
1540     * inheritance hiearchy to include attributes in parent entities as well.  If 'withIdentifiers'
1541     * is true, will include identifiers  and  if 'withDerived' is set to true, will include derived
1542     * attributes.
1543     * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
1544     */
1545    public String getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
1546    {
1547        return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers, withDerived);
1548    }
1549
1550    /**
1551     * Gets a comma separated list of attribute types.  If 'follow' is true, will travel up the
1552     * inheritance hierarchy to include attributes in parent entities as well.  If 'withIdentifiers'
1553     * is true, will include identifiers.
1554     * @see Entity#getAttributeTypeList(boolean follow, boolean withIdentifiers)
1555     */
1556    public String getAttributeTypeList(boolean follow, boolean withIdentifiers)
1557    {
1558        return this.getSuperEntity().getAttributeTypeList(follow, withIdentifiers);
1559    }
1560
1561    /**
1562     * Gets all attributes of the entity, and optionally retieves the super entities attributes as
1563     * well as excludes the entity's identifiers if 'withIdentifiers' is set to false.
1564     * @see Entity#getAttributes(boolean follow, boolean withIdentifiers)
1565     */
1566    public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers)
1567    {
1568        return this.getSuperEntity().getAttributes(follow, withIdentifiers);
1569    }
1570
1571    /**
1572     * Gets all attributes of the entity, and optionally retieves the super entities attributes as
1573     * well as excludes the entity's identifiers if 'withIdentifiers' is set to false and exclude
1574     * derived attributes if 'withDerived' is set to false.
1575     * @see Entity#getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
1576     */
1577    public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
1578    {
1579        return this.getSuperEntity().getAttributes(follow, withIdentifiers, withDerived);
1580    }
1581
1582    /**
1583     * All business operations of the entity, these include any operations that aren't queries.
1584     * @see Entity#getBusinessOperations()
1585     */
1586    public Collection<OperationFacade> getBusinessOperations()
1587    {
1588        return this.getSuperEntity().getBusinessOperations();
1589    }
1590
1591    /**
1592     * Gets any children association ends (i.e. entity association ends that are participants in an
1593     * association with this entity and this entity has composite aggregation defined for those
1594     * associations).
1595     * @see Entity#getChildEnds()
1596     */
1597    public Collection<EntityAssociationEnd> getChildEnds()
1598    {
1599        return this.getSuperEntity().getChildEnds();
1600    }
1601
1602    /**
1603     * The embedded values belonging to this entity.
1604     * @see Entity#getEmbeddedValues()
1605     */
1606    public Collection<AttributeFacade> getEmbeddedValues()
1607    {
1608        return this.getSuperEntity().getEmbeddedValues();
1609    }
1610
1611    /**
1612     * All entities referenced by this entity.
1613     * @see Entity#getEntityReferences()
1614     */
1615    public Collection<DependencyFacade> getEntityReferences()
1616    {
1617        return this.getSuperEntity().getEntityReferences();
1618    }
1619
1620    /**
1621     * The full name of the type of the identifier. If composite identifier add the PK sufix to the
1622     * class name. If not, retorns the fully qualified name of the identifier.
1623     * @see Entity#getFullyQualifiedIdentifierTypeName()
1624     */
1625    public String getFullyQualifiedIdentifierTypeName()
1626    {
1627        return this.getSuperEntity().getFullyQualifiedIdentifierTypeName();
1628    }
1629
1630    /**
1631     * Gets all the associationEnds of this entity marked with the identifiers stereotype.
1632     * @see Entity#getIdentifierAssociationEnds()
1633     */
1634    public Collection<AssociationEndFacade> getIdentifierAssociationEnds()
1635    {
1636        return this.getSuperEntity().getIdentifierAssociationEnds();
1637    }
1638
1639    /**
1640     * The getter name of the identifier.
1641     * @see Entity#getIdentifierGetterName()
1642     */
1643    public String getIdentifierGetterName()
1644    {
1645        return this.getSuperEntity().getIdentifierGetterName();
1646    }
1647
1648    /**
1649     * The name of the identifier. If composite identifier add the Pk suffix. If not composite
1650     * returns the attribute name of the identifier.
1651     * @see Entity#getIdentifierName()
1652     */
1653    public String getIdentifierName()
1654    {
1655        return this.getSuperEntity().getIdentifierName();
1656    }
1657
1658    /**
1659     * The setter name of the identifier.
1660     * @see Entity#getIdentifierSetterName()
1661     */
1662    public String getIdentifierSetterName()
1663    {
1664        return this.getSuperEntity().getIdentifierSetterName();
1665    }
1666
1667    /**
1668     * The name of the type of the identifier. If composite identifier add the PK suffix to the
1669     * class name. If not, returns the name of the identifier.
1670     * @see Entity#getIdentifierTypeName()
1671     */
1672    public String getIdentifierTypeName()
1673    {
1674        return this.getSuperEntity().getIdentifierTypeName();
1675    }
1676
1677    /**
1678     * All the attributes of the entity which make up its identifier (primary key).  Will search any
1679     * super classes as well.  If no identifiers exist, a default identifier will be created if the
1680     * allowDefaultIdentifiers property is set to true.
1681     * @see Entity#getIdentifiers()
1682     */
1683    public Collection<ModelElementFacade> getIdentifiers()
1684    {
1685        return this.getSuperEntity().getIdentifiers();
1686    }
1687
1688    /**
1689     * Gets all identifiers for an entity. If 'follow' is true, and if no identifiers can be found
1690     * on the entity, a search up the inheritance chain will be performed, and the identifiers from
1691     * the first super class having them will be used.   If no identifiers exist, a default
1692     * identifier will be created if the allowDefaultIdentifiers property is set to true.
1693     * Identifiers can be on attributes or associations (composite primary key).
1694     * @see Entity#getIdentifiers(boolean follow)
1695     */
1696    public Collection<ModelElementFacade> getIdentifiers(boolean follow)
1697    {
1698        return this.getSuperEntity().getIdentifiers(follow);
1699    }
1700
1701    /**
1702     * The maximum length a SQL name may be.
1703     * @see Entity#getMaxSqlNameLength()
1704     */
1705    public short getMaxSqlNameLength()
1706    {
1707        return this.getSuperEntity().getMaxSqlNameLength();
1708    }
1709
1710    /**
1711     * Gets the attributes as a list within an operation call, optionally including the type names
1712     * and the identifier attributes.
1713     * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers)
1714     */
1715    public String getOperationCallFromAttributes(boolean withIdentifiers)
1716    {
1717        return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers);
1718    }
1719
1720    /**
1721     * Gets the attributes as a list within an operation call.  If 'withTypeNames' is true, it will
1722     * include the type names, if 'withIdentifiers' is true it will include the identifiers.  If
1723     * 'follow' is true it will follow the inheritance hierarchy and get the attributes of the super
1724     * class as well.
1725     * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
1726     */
1727    public String getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
1728    {
1729        return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers, follow);
1730    }
1731
1732    /**
1733     * Returns the parent association end of this entity if its a child entity.  The parent is the
1734     * entity that is the participant the association that has composite aggregation defined.  Will
1735     * return null if the entity has no parent.
1736     * @see Entity#getParentEnd()
1737     */
1738    public EntityAssociationEnd getParentEnd()
1739    {
1740        return this.getSuperEntity().getParentEnd();
1741    }
1742
1743    /**
1744     * Gets all properties of this entity, this includes the attributes and navigable association
1745     * ends of the entity.  The 'follow' flag indcates whether or not the inheritance hierarchy
1746     * should be followed when getting all the properties.  The 'withIdentifiers' flag indicates
1747     * whether or not identifiers should be included in the collection of properties.
1748     * @see Entity#getProperties(boolean follow, boolean withIdentifiers)
1749     */
1750    public Collection<ModelElementFacade> getProperties(boolean follow, boolean withIdentifiers)
1751    {
1752        return this.getSuperEntity().getProperties(follow, withIdentifiers);
1753    }
1754
1755    /**
1756     * Returns all the operations that can perform queries on the entity.
1757     * @see Entity#getQueryOperations()
1758     */
1759    public Collection<EntityQueryOperation> getQueryOperations()
1760    {
1761        return this.getSuperEntity().getQueryOperations();
1762    }
1763
1764    /**
1765     * Gets all query operations for an entity. If 'follow' is true, and if no query operations can
1766     * be found on the entity, a search up the inheritance chain will be performed, and the
1767     * identifiers from the first super class having them will be used.   If no identifiers exist, a
1768     * default identifier will be created if the allowDefaultIdentifiers property is set to true.
1769     * @see Entity#getQueryOperations(boolean follow)
1770     */
1771    public Collection<OperationFacade> getQueryOperations(boolean follow)
1772    {
1773        return this.getSuperEntity().getQueryOperations(follow);
1774    }
1775
1776    /**
1777     * Gets a comma separated list of required attribute names.  If 'follow' is true, will travel up
1778     * the inheritance hierarchy to include attributes in parent entities as well.  If
1779     * 'withIdentifiers' is true, will include identifiers.
1780     * @see Entity#getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
1781     */
1782    public String getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
1783    {
1784        return this.getSuperEntity().getRequiredAttributeNameList(follow, withIdentifiers);
1785    }
1786
1787    /**
1788     * Gets a comma separated list of attribute types with are required.  If 'follow' is true, will
1789     * travel up the inheritance hierarchy to include attributes in parent entities as well.  If
1790     * 'withIdentifiers' is true, will include identifiers.
1791     * @see Entity#getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
1792     */
1793    public String getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
1794    {
1795        return this.getSuperEntity().getRequiredAttributeTypeList(follow, withIdentifiers);
1796    }
1797
1798    /**
1799     * Returns all attributes that are specified as 'required' in the model.  If 'follow' is true,
1800     * then required attributes in super classes will also be returned, if false, just the ones
1801     * directly on the entity will be returned.  If 'withIdentifiers' is true, the identifiers will
1802     * be include, if false, no identifiers will be included.
1803     * @see Entity#getRequiredAttributes(boolean follow, boolean withIdentifiers)
1804     */
1805    public Collection<AttributeFacade> getRequiredAttributes(boolean follow, boolean withIdentifiers)
1806    {
1807        return this.getSuperEntity().getRequiredAttributes(follow, withIdentifiers);
1808    }
1809
1810    /**
1811     * Gets all required properties for this entity.  These consist of any required attributes as
1812     * well as navigable associations that are marked as 'required'.  If 'follow' is true, then the
1813     * inheritance hierchy will be followed and all required properties from super classes will be
1814     * included as well.
1815     * If 'withIdentifiers' is true, the identifiers will be include, if false, no identifiers will
1816     * be included.
1817     * @see Entity#getRequiredProperties(boolean follow, boolean withIdentifiers)
1818     */
1819    public Collection<ModelElementFacade> getRequiredProperties(boolean follow, boolean withIdentifiers)
1820    {
1821        return this.getSuperEntity().getRequiredProperties(follow, withIdentifiers);
1822    }
1823
1824    /**
1825     * Creates a comma separated list of the required property names.
1826     * @see Entity#getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
1827     */
1828    public String getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
1829    {
1830        return this.getSuperEntity().getRequiredPropertyNameList(follow, withIdentifiers);
1831    }
1832
1833    /**
1834     * A comma separated list of the required property types.
1835     * @see Entity#getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
1836     */
1837    public String getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
1838    {
1839        return this.getSuperEntity().getRequiredPropertyTypeList(follow, withIdentifiers);
1840    }
1841
1842    /**
1843     * The name of the schema that contains the database table
1844     * @see Entity#getSchema()
1845     */
1846    public String getSchema()
1847    {
1848        return this.getSuperEntity().getSchema();
1849    }
1850
1851    /**
1852     * The name of the database table to which this entity is persisted.
1853     * @see Entity#getTableName()
1854     */
1855    public String getTableName()
1856    {
1857        return this.getSuperEntity().getTableName();
1858    }
1859
1860    /**
1861     * Returns true/false depending on whether or not this entity represetns a child in an
1862     * association (this occurs when this entity is on the opposite end of an assocation end defined
1863     * as composite).
1864     * @see Entity#isChild()
1865     */
1866    public boolean isChild()
1867    {
1868        return this.getSuperEntity().isChild();
1869    }
1870
1871    /**
1872     * True if this entity identifier is a composite (consists of multiple key columns, typically
1873     * abstracted into an external composite identifier class)
1874     * @see Entity#isCompositeIdentifier()
1875     */
1876    public boolean isCompositeIdentifier()
1877    {
1878        return this.getSuperEntity().isCompositeIdentifier();
1879    }
1880
1881    /**
1882     * True if the entity has its identifiers dynamically added, false otherwise.
1883     * @see Entity#isDynamicIdentifiersPresent()
1884     */
1885    public boolean isDynamicIdentifiersPresent()
1886    {
1887        return this.getSuperEntity().isDynamicIdentifiersPresent();
1888    }
1889
1890    /**
1891     * True if the entity has any identifiers defined, false otherwise.
1892     * @see Entity#isIdentifiersPresent()
1893     */
1894    public boolean isIdentifiersPresent()
1895    {
1896        return this.getSuperEntity().isIdentifiersPresent();
1897    }
1898
1899    /**
1900     * Indiciates if this entity is using an assigned identifier or not.
1901     * @see Entity#isUsingAssignedIdentifier()
1902     */
1903    public boolean isUsingAssignedIdentifier()
1904    {
1905        return this.getSuperEntity().isUsingAssignedIdentifier();
1906    }
1907
1908    /**
1909     * Indicates whether or not this entity is using a foreign identifier as its identifiers.  That
1910     * is: the foreignIdentifier flag was set on an incoming association end and the entity is
1911     * therefore using the related foreign parent entity's identifier.
1912     * @see Entity#isUsingForeignIdentifier()
1913     */
1914    public boolean isUsingForeignIdentifier()
1915    {
1916        return this.getSuperEntity().isUsingForeignIdentifier();
1917    }
1918
1919    /**
1920     * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
1921     * to true.
1922     * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
1923     */
1924    public Object findTaggedValue(String tagName, boolean follow)
1925    {
1926        return this.getSuperEntity().findTaggedValue(tagName, follow);
1927    }
1928
1929    /**
1930     * All generalizations for this generalizable element, goes up the inheritance tree.
1931     * @see GeneralizableElementFacade#getAllGeneralizations()
1932     */
1933    public Collection<GeneralizableElementFacade> getAllGeneralizations()
1934    {
1935        return this.getSuperEntity().getAllGeneralizations();
1936    }
1937
1938    /**
1939     * All specializations (travels down the inheritance hierarchy).
1940     * @see GeneralizableElementFacade#getAllSpecializations()
1941     */
1942    public Collection<GeneralizableElementFacade> getAllSpecializations()
1943    {
1944        return this.getSuperEntity().getAllSpecializations();
1945    }
1946
1947    /**
1948     * Gets the direct generalization for this generalizable element.
1949     * @see GeneralizableElementFacade#getGeneralization()
1950     */
1951    public GeneralizableElementFacade getGeneralization()
1952    {
1953        return this.getSuperEntity().getGeneralization();
1954    }
1955
1956    /**
1957     * Gets the actual links that this generalization element is part of (it plays either the
1958     * specialization or generalization).
1959     * @see GeneralizableElementFacade#getGeneralizationLinks()
1960     */
1961    public Collection<GeneralizationFacade> getGeneralizationLinks()
1962    {
1963        return this.getSuperEntity().getGeneralizationLinks();
1964    }
1965
1966    /**
1967     * A comma separated list of the fully qualified names of all generalizations.
1968     * @see GeneralizableElementFacade#getGeneralizationList()
1969     */
1970    public String getGeneralizationList()
1971    {
1972        return this.getSuperEntity().getGeneralizationList();
1973    }
1974
1975    /**
1976     * The element found when you recursively follow the generalization path up to the root. If an
1977     * element has no generalization itself will be considered the root.
1978     * @see GeneralizableElementFacade#getGeneralizationRoot()
1979     */
1980    public GeneralizableElementFacade getGeneralizationRoot()
1981    {
1982        return this.getSuperEntity().getGeneralizationRoot();
1983    }
1984
1985    /**
1986     * Return all generalizations (ancestors) from this generalizable element.
1987     * @see GeneralizableElementFacade#getGeneralizations()
1988     */
1989    public Collection<GeneralizableElementFacade> getGeneralizations()
1990    {
1991        return this.getSuperEntity().getGeneralizations();
1992    }
1993
1994    /**
1995     * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
1996     * @see GeneralizableElementFacade#getSpecializations()
1997     */
1998    public Collection<GeneralizableElementFacade> getSpecializations()
1999    {
2000        return this.getSuperEntity().getSpecializations();
2001    }
2002
2003    /**
2004     * Copies all tagged values from the given ModelElementFacade to this model element facade.
2005     * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
2006     */
2007    public void copyTaggedValues(ModelElementFacade element)
2008    {
2009        this.getSuperEntity().copyTaggedValues(element);
2010    }
2011
2012    /**
2013     * Finds the tagged value with the specified 'tagName'. In case there are more values the first
2014     * one found will be returned.
2015     * @see ModelElementFacade#findTaggedValue(String tagName)
2016     */
2017    public Object findTaggedValue(String tagName)
2018    {
2019        return this.getSuperEntity().findTaggedValue(tagName);
2020    }
2021
2022    /**
2023     * Returns all the values for the tagged value with the specified name. The returned collection
2024     * will contains only String instances, or will be empty. Never null.
2025     * @see ModelElementFacade#findTaggedValues(String tagName)
2026     */
2027    public Collection<Object> findTaggedValues(String tagName)
2028    {
2029        return this.getSuperEntity().findTaggedValues(tagName);
2030    }
2031
2032    /**
2033     * Returns the fully qualified name of the model element. The fully qualified name includes
2034     * complete package qualified name of the underlying model element. The templates parameter will
2035     * be replaced by the correct one given the binding relation of the parameter to this element.
2036     * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2037     */
2038    public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2039    {
2040        return this.getSuperEntity().getBindedFullyQualifiedName(bindedElement);
2041    }
2042
2043    /**
2044     * Gets all constraints belonging to the model element.
2045     * @see ModelElementFacade#getConstraints()
2046     */
2047    public Collection<ConstraintFacade> getConstraints()
2048    {
2049        return this.getSuperEntity().getConstraints();
2050    }
2051
2052    /**
2053     * Returns the constraints of the argument kind that have been placed onto this model. Typical
2054     * kinds are "inv", "pre" and "post". Other kinds are possible.
2055     * @see ModelElementFacade#getConstraints(String kind)
2056     */
2057    public Collection<ConstraintFacade> getConstraints(String kind)
2058    {
2059        return this.getSuperEntity().getConstraints(kind);
2060    }
2061
2062    /**
2063     * Gets the documentation for the model element, The indent argument is prefixed to each line.
2064     * By default this method wraps lines after 64 characters.
2065     * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
2066     * @see ModelElementFacade#getDocumentation(String indent)
2067     */
2068    public String getDocumentation(String indent)
2069    {
2070        return this.getSuperEntity().getDocumentation(indent);
2071    }
2072
2073    /**
2074     * This method returns the documentation for this model element, with the lines wrapped after
2075     * the specified number of characters, values of less than 1 will indicate no line wrapping is
2076     * required. By default paragraphs are returned as HTML.
2077     * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
2078     * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
2079     */
2080    public String getDocumentation(String indent, int lineLength)
2081    {
2082        return this.getSuperEntity().getDocumentation(indent, lineLength);
2083    }
2084
2085    /**
2086     * This method returns the documentation for this model element, with the lines wrapped after
2087     * the specified number of characters, values of less than 1 will indicate no line wrapping is
2088     * required. HTML style determines if HTML Escaping is applied.
2089     * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
2090     */
2091    public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
2092    {
2093        return this.getSuperEntity().getDocumentation(indent, lineLength, htmlStyle);
2094    }
2095
2096    /**
2097     * The fully qualified name of this model element.
2098     * @see ModelElementFacade#getFullyQualifiedName()
2099     */
2100    public String getFullyQualifiedName()
2101    {
2102        return this.getSuperEntity().getFullyQualifiedName();
2103    }
2104
2105    /**
2106     * Returns the fully qualified name of the model element. The fully qualified name includes
2107     * complete package qualified name of the underlying model element.  If modelName is true, then
2108     * the original name of the model element (the name contained within the model) will be the name
2109     * returned, otherwise a name from a language mapping will be returned.
2110     * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
2111     */
2112    public String getFullyQualifiedName(boolean modelName)
2113    {
2114        return this.getSuperEntity().getFullyQualifiedName(modelName);
2115    }
2116
2117    /**
2118     * Returns the fully qualified name as a path, the returned value always starts with out a slash
2119     * '/'.
2120     * @see ModelElementFacade#getFullyQualifiedNamePath()
2121     */
2122    public String getFullyQualifiedNamePath()
2123    {
2124        return this.getSuperEntity().getFullyQualifiedNamePath();
2125    }
2126
2127    /**
2128     * Gets the unique identifier of the underlying model element.
2129     * @see ModelElementFacade#getId()
2130     */
2131    public String getId()
2132    {
2133        return this.getSuperEntity().getId();
2134    }
2135
2136    /**
2137     * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
2138     * are not represented by other properties, i.e. native, transient, volatile, synchronized,
2139     * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
2140     * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
2141     * JDK5 compiler level.
2142     * @see ModelElementFacade#getKeywords()
2143     */
2144    public Collection<String> getKeywords()
2145    {
2146        return this.getSuperEntity().getKeywords();
2147    }
2148
2149    /**
2150     * UML2: Retrieves a localized label for this named element.
2151     * @see ModelElementFacade#getLabel()
2152     */
2153    public String getLabel()
2154    {
2155        return this.getSuperEntity().getLabel();
2156    }
2157
2158    /**
2159     * The language mappings that have been set for this model element.
2160     * @see ModelElementFacade#getLanguageMappings()
2161     */
2162    public TypeMappings getLanguageMappings()
2163    {
2164        return this.getSuperEntity().getLanguageMappings();
2165    }
2166
2167    /**
2168     * Return the model containing this model element (multiple models may be loaded and processed
2169     * at the same time).
2170     * @see ModelElementFacade#getModel()
2171     */
2172    public ModelFacade getModel()
2173    {
2174        return this.getSuperEntity().getModel();
2175    }
2176
2177    /**
2178     * The name of the model element.
2179     * @see ModelElementFacade#getName()
2180     */
2181    public String getName()
2182    {
2183        return this.getSuperEntity().getName();
2184    }
2185
2186    /**
2187     * Gets the package to which this model element belongs.
2188     * @see ModelElementFacade#getPackage()
2189     */
2190    public ModelElementFacade getPackage()
2191    {
2192        return this.getSuperEntity().getPackage();
2193    }
2194
2195    /**
2196     * The name of this model element's package.
2197     * @see ModelElementFacade#getPackageName()
2198     */
2199    public String getPackageName()
2200    {
2201        return this.getSuperEntity().getPackageName();
2202    }
2203
2204    /**
2205     * Gets the package name (optionally providing the ability to retrieve the model name and not
2206     * the mapped name).
2207     * @see ModelElementFacade#getPackageName(boolean modelName)
2208     */
2209    public String getPackageName(boolean modelName)
2210    {
2211        return this.getSuperEntity().getPackageName(modelName);
2212    }
2213
2214    /**
2215     * Returns the package as a path, the returned value always starts with out a slash '/'.
2216     * @see ModelElementFacade#getPackagePath()
2217     */
2218    public String getPackagePath()
2219    {
2220        return this.getSuperEntity().getPackagePath();
2221    }
2222
2223    /**
2224     * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
2225     * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
2226     * the names of the containing namespaces starting at the root of the hierarchy and ending with
2227     * the name of the NamedElement itself.
2228     * @see ModelElementFacade#getQualifiedName()
2229     */
2230    public String getQualifiedName()
2231    {
2232        return this.getSuperEntity().getQualifiedName();
2233    }
2234
2235    /**
2236     * Gets the root package for the model element.
2237     * @see ModelElementFacade#getRootPackage()
2238     */
2239    public PackageFacade getRootPackage()
2240    {
2241        return this.getSuperEntity().getRootPackage();
2242    }
2243
2244    /**
2245     * Gets the dependencies for which this model element is the source.
2246     * @see ModelElementFacade#getSourceDependencies()
2247     */
2248    public Collection<DependencyFacade> getSourceDependencies()
2249    {
2250        return this.getSuperEntity().getSourceDependencies();
2251    }
2252
2253    /**
2254     * If this model element is the context of an activity graph, this represents that activity
2255     * graph.
2256     * @see ModelElementFacade#getStateMachineContext()
2257     */
2258    public StateMachineFacade getStateMachineContext()
2259    {
2260        return this.getSuperEntity().getStateMachineContext();
2261    }
2262
2263    /**
2264     * The collection of ALL stereotype names for this model element.
2265     * @see ModelElementFacade#getStereotypeNames()
2266     */
2267    public Collection<String> getStereotypeNames()
2268    {
2269        return this.getSuperEntity().getStereotypeNames();
2270    }
2271
2272    /**
2273     * Gets all stereotypes for this model element.
2274     * @see ModelElementFacade#getStereotypes()
2275     */
2276    public Collection<StereotypeFacade> getStereotypes()
2277    {
2278        return this.getSuperEntity().getStereotypes();
2279    }
2280
2281    /**
2282     * Return the TaggedValues associated with this model element, under all stereotypes.
2283     * @see ModelElementFacade#getTaggedValues()
2284     */
2285    public Collection<TaggedValueFacade> getTaggedValues()
2286    {
2287        return this.getSuperEntity().getTaggedValues();
2288    }
2289
2290    /**
2291     * Gets the dependencies for which this model element is the target.
2292     * @see ModelElementFacade#getTargetDependencies()
2293     */
2294    public Collection<DependencyFacade> getTargetDependencies()
2295    {
2296        return this.getSuperEntity().getTargetDependencies();
2297    }
2298
2299    /**
2300     * Get the template parameter for this model element having the parameterName
2301     * @see ModelElementFacade#getTemplateParameter(String parameterName)
2302     */
2303    public Object getTemplateParameter(String parameterName)
2304    {
2305        return this.getSuperEntity().getTemplateParameter(parameterName);
2306    }
2307
2308    /**
2309     * Get the template parameters for this model element
2310     * @see ModelElementFacade#getTemplateParameters()
2311     */
2312    public Collection<TemplateParameterFacade> getTemplateParameters()
2313    {
2314        return this.getSuperEntity().getTemplateParameters();
2315    }
2316
2317    /**
2318     * The visibility (i.e. public, private, protected or package) of the model element, will
2319     * attempt a lookup for these values in the language mappings (if any).
2320     * @see ModelElementFacade#getVisibility()
2321     */
2322    public String getVisibility()
2323    {
2324        return this.getSuperEntity().getVisibility();
2325    }
2326
2327    /**
2328     * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
2329     * is taken into account when searching for the stereotype), false otherwise.
2330     * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
2331     */
2332    public boolean hasExactStereotype(String stereotypeName)
2333    {
2334        return this.getSuperEntity().hasExactStereotype(stereotypeName);
2335    }
2336
2337    /**
2338     * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
2339     * pipe, semicolon, or << >>
2340     * @see ModelElementFacade#hasKeyword(String keywordName)
2341     */
2342    public boolean hasKeyword(String keywordName)
2343    {
2344        return this.getSuperEntity().hasKeyword(keywordName);
2345    }
2346
2347    /**
2348     * Returns true if the model element has the specified stereotype.  If the stereotype itself
2349     * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
2350     * one of the stereotype's ancestors has a matching name this method will return true, false
2351     * otherwise.
2352     * For example, if we have a certain stereotype called <<exception>> and a model element has a
2353     * stereotype called <<applicationException>> which extends <<exception>>, when calling this
2354     * method with 'stereotypeName' defined as 'exception' the method would return true since
2355     * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
2356     * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
2357     * @see ModelElementFacade#hasStereotype(String stereotypeName)
2358     */
2359    public boolean hasStereotype(String stereotypeName)
2360    {
2361        return this.getSuperEntity().hasStereotype(stereotypeName);
2362    }
2363
2364    /**
2365     * True if there are target dependencies from this element that are instances of BindingFacade.
2366     * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
2367     * @see ModelElementFacade#isBindingDependenciesPresent()
2368     */
2369    public boolean isBindingDependenciesPresent()
2370    {
2371        return this.getSuperEntity().isBindingDependenciesPresent();
2372    }
2373
2374    /**
2375     * Indicates if any constraints are present on this model element.
2376     * @see ModelElementFacade#isConstraintsPresent()
2377     */
2378    public boolean isConstraintsPresent()
2379    {
2380        return this.getSuperEntity().isConstraintsPresent();
2381    }
2382
2383    /**
2384     * Indicates if any documentation is present on this model element.
2385     * @see ModelElementFacade#isDocumentationPresent()
2386     */
2387    public boolean isDocumentationPresent()
2388    {
2389        return this.getSuperEntity().isDocumentationPresent();
2390    }
2391
2392    /**
2393     * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
2394     * @see ModelElementFacade#isReservedWord()
2395     */
2396    public boolean isReservedWord()
2397    {
2398        return this.getSuperEntity().isReservedWord();
2399    }
2400
2401    /**
2402     * True is there are template parameters on this model element. For UML2, applies to Class,
2403     * Operation, Property, and Parameter.
2404     * @see ModelElementFacade#isTemplateParametersPresent()
2405     */
2406    public boolean isTemplateParametersPresent()
2407    {
2408        return this.getSuperEntity().isTemplateParametersPresent();
2409    }
2410
2411    /**
2412     * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
2413     * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
2414     * Enumerations and Interfaces, optionally applies on other model elements.
2415     * @see ModelElementFacade#isValidIdentifierName()
2416     */
2417    public boolean isValidIdentifierName()
2418    {
2419        return this.getSuperEntity().isValidIdentifierName();
2420    }
2421
2422    /**
2423     * Searches for the constraint with the specified 'name' on this model element, and if found
2424     * translates it using the specified 'translation' from a translation library discovered by the
2425     * framework.
2426     * @see ModelElementFacade#translateConstraint(String name, String translation)
2427     */
2428    public String translateConstraint(String name, String translation)
2429    {
2430        return this.getSuperEntity().translateConstraint(name, translation);
2431    }
2432
2433    /**
2434     * Translates all constraints belonging to this model element with the given 'translation'.
2435     * @see ModelElementFacade#translateConstraints(String translation)
2436     */
2437    public String[] translateConstraints(String translation)
2438    {
2439        return this.getSuperEntity().translateConstraints(translation);
2440    }
2441
2442    /**
2443     * Translates the constraints of the specified 'kind' belonging to this model element.
2444     * @see ModelElementFacade#translateConstraints(String kind, String translation)
2445     */
2446    public String[] translateConstraints(String kind, String translation)
2447    {
2448        return this.getSuperEntity().translateConstraints(kind, translation);
2449    }
2450
2451    /**
2452     * @see MetafacadeBase#initialize()
2453     */
2454    @Override
2455    public void initialize()
2456    {
2457        this.getSuperEntity().initialize();
2458    }
2459
2460    /**
2461     * @return Object getSuperEntity().getValidationOwner()
2462     * @see MetafacadeBase#getValidationOwner()
2463     */
2464    @Override
2465    public Object getValidationOwner()
2466    {
2467        Object owner = this.getSuperEntity().getValidationOwner();
2468        return owner;
2469    }
2470
2471    /**
2472     * @return String getSuperEntity().getValidationName()
2473     * @see MetafacadeBase#getValidationName()
2474     */
2475    @Override
2476    public String getValidationName()
2477    {
2478        String name = this.getSuperEntity().getValidationName();
2479        return name;
2480    }
2481
2482    /**
2483     * @param validationMessages Collection<ModelValidationMessage>
2484     * @see MetafacadeBase#validateInvariants(Collection validationMessages)
2485     */
2486    @Override
2487    public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
2488    {
2489        this.getSuperEntity().validateInvariants(validationMessages);
2490    }
2491
2492    /**
2493     * The property that stores the name of the metafacade.
2494     */
2495    private static final String NAME_PROPERTY = "name";
2496    private static final String FQNAME_PROPERTY = "fullyQualifiedName";
2497
2498    /**
2499     * @see Object#toString()
2500     */
2501    @Override
2502    public String toString()
2503    {
2504        final StringBuilder toString = new StringBuilder(this.getClass().getName());
2505        toString.append("[");
2506        try
2507        {
2508            toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
2509        }
2510        catch (final Throwable tryAgain)
2511        {
2512            try
2513            {
2514                toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
2515            }
2516            catch (final Throwable ignore)
2517            {
2518                // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
2519            }
2520        }
2521        toString.append("]");
2522        return toString.toString();
2523    }
2524}