View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.hibernate.metafacades;
6   
7   import java.util.Collection;
8   import java.util.List;
9   import org.andromda.core.common.Introspector;
10  import org.andromda.core.metafacade.MetafacadeBase;
11  import org.andromda.core.metafacade.MetafacadeFactory;
12  import org.andromda.core.metafacade.ModelValidationMessage;
13  import org.andromda.metafacades.uml.AssociationEndFacade;
14  import org.andromda.metafacades.uml.AttributeFacade;
15  import org.andromda.metafacades.uml.ClassifierFacade;
16  import org.andromda.metafacades.uml.ConstraintFacade;
17  import org.andromda.metafacades.uml.DependencyFacade;
18  import org.andromda.metafacades.uml.Entity;
19  import org.andromda.metafacades.uml.EntityAssociationEnd;
20  import org.andromda.metafacades.uml.EntityQueryOperation;
21  import org.andromda.metafacades.uml.GeneralizableElementFacade;
22  import org.andromda.metafacades.uml.GeneralizationFacade;
23  import org.andromda.metafacades.uml.ModelElementFacade;
24  import org.andromda.metafacades.uml.ModelFacade;
25  import org.andromda.metafacades.uml.OperationFacade;
26  import org.andromda.metafacades.uml.PackageFacade;
27  import org.andromda.metafacades.uml.StateMachineFacade;
28  import org.andromda.metafacades.uml.StereotypeFacade;
29  import org.andromda.metafacades.uml.TaggedValueFacade;
30  import org.andromda.metafacades.uml.TemplateParameterFacade;
31  import org.andromda.metafacades.uml.TypeMappings;
32  import org.andromda.translation.ocl.validation.OCLCollections;
33  import org.andromda.translation.ocl.validation.OCLExpressions;
34  import org.andromda.translation.ocl.validation.OCLIntrospector;
35  import org.andromda.translation.ocl.validation.OCLResultEnsurer;
36  import org.apache.commons.collections.Predicate;
37  import org.apache.log4j.Logger;
38  
39  /**
40   * Represents an hibernate persistent entity.
41   * MetafacadeLogic for HibernateEntity
42   *
43   * @see HibernateEntity
44   */
45  public abstract class HibernateEntityLogic
46      extends MetafacadeBase
47      implements HibernateEntity
48  {
49      /**
50       * The underlying UML object
51       * @see Object
52       */
53      protected Object metaObject;
54  
55      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
56       * @param metaObjectIn
57       * @param context
58       */
59      protected HibernateEntityLogic(Object metaObjectIn, String context)
60      {
61          super(metaObjectIn, getContext(context));
62          this.superEntity =
63             (Entity)
64              MetafacadeFactory.getInstance().createFacadeImpl(
65                      "org.andromda.metafacades.uml.Entity",
66                      metaObjectIn,
67                      getContext(context));
68          this.metaObject = metaObjectIn;
69      }
70  
71      /**
72       * The logger instance.
73       */
74      private static final Logger logger = Logger.getLogger(HibernateEntityLogic.class);
75  
76      /**
77       * Gets the context for this metafacade logic instance.
78       * @param context String. Set to HibernateEntity if null
79       * @return context String
80       */
81      private static String getContext(String context)
82      {
83          if (context == null)
84          {
85              context = "org.andromda.cartridges.hibernate.metafacades.HibernateEntity";
86          }
87          return context;
88      }
89  
90      private Entity superEntity;
91      private boolean superEntityInitialized = false;
92  
93      /**
94       * Gets the Entity parent instance.
95       * @return this.superEntity Entity
96       */
97      private Entity getSuperEntity()
98      {
99          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
2960 inv : 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
2964 inv : 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
2968 inv: 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
2972 inv: 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
2976 inv: 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 }