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