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