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