View Javadoc
1   // license-header java merge-point
2   //
3   // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4   //
5   package org.andromda.cartridges.hibernate.metafacades;
6   
7   import java.util.Collection;
8   import org.andromda.core.common.Introspector;
9   import org.andromda.core.metafacade.MetafacadeBase;
10  import org.andromda.core.metafacade.MetafacadeFactory;
11  import org.andromda.core.metafacade.ModelValidationMessage;
12  import org.andromda.metafacades.uml.AssociationEndFacade;
13  import org.andromda.metafacades.uml.AssociationFacade;
14  import org.andromda.metafacades.uml.ClassifierFacade;
15  import org.andromda.metafacades.uml.ConstraintFacade;
16  import org.andromda.metafacades.uml.DependencyFacade;
17  import org.andromda.metafacades.uml.EntityAssociationEnd;
18  import org.andromda.metafacades.uml.ModelElementFacade;
19  import org.andromda.metafacades.uml.ModelFacade;
20  import org.andromda.metafacades.uml.PackageFacade;
21  import org.andromda.metafacades.uml.StateMachineFacade;
22  import org.andromda.metafacades.uml.StereotypeFacade;
23  import org.andromda.metafacades.uml.TaggedValueFacade;
24  import org.andromda.metafacades.uml.TemplateParameterFacade;
25  import org.andromda.metafacades.uml.TypeMappings;
26  import org.andromda.translation.ocl.validation.OCLCollections;
27  import org.andromda.translation.ocl.validation.OCLIntrospector;
28  import org.andromda.translation.ocl.validation.OCLResultEnsurer;
29  import org.apache.log4j.Logger;
30  
31  /**
32   * Represents an association end between Hibernate entities.
33   * MetafacadeLogic for HibernateAssociationEnd
34   *
35   * @see HibernateAssociationEnd
36   */
37  public abstract class HibernateAssociationEndLogic
38      extends MetafacadeBase
39      implements HibernateAssociationEnd
40  {
41      /**
42       * The underlying UML object
43       * @see Object
44       */
45      protected Object metaObject;
46  
47      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
48       * @param metaObjectIn
49       * @param context
50       */
51      protected HibernateAssociationEndLogic(Object metaObjectIn, String context)
52      {
53          super(metaObjectIn, getContext(context));
54          this.superEntityAssociationEnd =
55             (EntityAssociationEnd)
56              MetafacadeFactory.getInstance().createFacadeImpl(
57                      "org.andromda.metafacades.uml.EntityAssociationEnd",
58                      metaObjectIn,
59                      getContext(context));
60          this.metaObject = metaObjectIn;
61      }
62  
63      /**
64       * The logger instance.
65       */
66      private static final Logger logger = Logger.getLogger(HibernateAssociationEndLogic.class);
67  
68      /**
69       * Gets the context for this metafacade logic instance.
70       * @param context String. Set to HibernateAssociationEnd if null
71       * @return context String
72       */
73      private static String getContext(String context)
74      {
75          if (context == null)
76          {
77              context = "org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd";
78          }
79          return context;
80      }
81  
82      private EntityAssociationEnd superEntityAssociationEnd;
83      private boolean superEntityAssociationEndInitialized = false;
84  
85      /**
86       * Gets the EntityAssociationEnd parent instance.
87       * @return this.superEntityAssociationEnd EntityAssociationEnd
88       */
89      private EntityAssociationEnd getSuperEntityAssociationEnd()
90      {
91          if (!this.superEntityAssociationEndInitialized)
92          {
93              ((MetafacadeBase)this.superEntityAssociationEnd).setMetafacadeContext(this.getMetafacadeContext());
94              this.superEntityAssociationEndInitialized = true;
95          }
96          return this.superEntityAssociationEnd;
97      }
98  
99      /** Reset context only for non-root metafacades
100      * @param context
101      * @see MetafacadeBase#resetMetafacadeContext(String context)
102      */
103     @Override
104     public void resetMetafacadeContext(String context)
105     {
106         if (!this.contextRoot) // reset context only for non-root metafacades
107         {
108             context = getContext(context);  // to have same value as in original constructor call
109             setMetafacadeContext (context);
110             if (this.superEntityAssociationEndInitialized)
111             {
112                 ((MetafacadeBase)this.superEntityAssociationEnd).resetMetafacadeContext(context);
113             }
114         }
115     }
116 
117     /**
118      * @return boolean true always
119      * @see HibernateAssociationEnd
120      */
121     public boolean isHibernateAssociationEndMetaType()
122     {
123         return true;
124     }
125 
126     // --------------- attributes ---------------------
127 
128    /**
129     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isLazy()
130     * @return boolean
131     */
132     protected abstract boolean handleIsLazy();
133 
134     private boolean __lazy1a;
135     private boolean __lazy1aSet = false;
136 
137     /**
138      * TODO: Model Documentation for
139      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.lazy
140      * @return (boolean)handleIsLazy()
141      */
142     public final boolean isLazy()
143     {
144         boolean lazy1a = this.__lazy1a;
145         if (!this.__lazy1aSet)
146         {
147             // lazy has no pre constraints
148             lazy1a = handleIsLazy();
149             // lazy has no post constraints
150             this.__lazy1a = lazy1a;
151             if (isMetafacadePropertyCachingEnabled())
152             {
153                 this.__lazy1aSet = true;
154             }
155         }
156         return lazy1a;
157     }
158 
159    /**
160     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getOuterJoin()
161     * @return String
162     */
163     protected abstract String handleGetOuterJoin();
164 
165     private String __outerJoin2a;
166     private boolean __outerJoin2aSet = false;
167 
168     /**
169      * This value will determine how Hibernate manages the asocciation on a many to one and one to
170      * one relation. It will tell hibernate how  to use outerJoins. Values: auto,false,true
171      * @return (String)handleGetOuterJoin()
172      */
173     public final String getOuterJoin()
174     {
175         String outerJoin2a = this.__outerJoin2a;
176         if (!this.__outerJoin2aSet)
177         {
178             // outerJoin has no pre constraints
179             outerJoin2a = handleGetOuterJoin();
180             // outerJoin has no post constraints
181             this.__outerJoin2a = outerJoin2a;
182             if (isMetafacadePropertyCachingEnabled())
183             {
184                 this.__outerJoin2aSet = true;
185             }
186         }
187         return outerJoin2a;
188     }
189 
190    /**
191     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isHibernateInverse()
192     * @return boolean
193     */
194     protected abstract boolean handleIsHibernateInverse();
195 
196     private boolean __hibernateInverse3a;
197     private boolean __hibernateInverse3aSet = false;
198 
199     /**
200      * Whether or not the hibernate inverse attribute is true or false.
201      * @return (boolean)handleIsHibernateInverse()
202      */
203     public final boolean isHibernateInverse()
204     {
205         boolean hibernateInverse3a = this.__hibernateInverse3a;
206         if (!this.__hibernateInverse3aSet)
207         {
208             // hibernateInverse has no pre constraints
209             hibernateInverse3a = handleIsHibernateInverse();
210             // hibernateInverse has no post constraints
211             this.__hibernateInverse3a = hibernateInverse3a;
212             if (isMetafacadePropertyCachingEnabled())
213             {
214                 this.__hibernateInverse3aSet = true;
215             }
216         }
217         return hibernateInverse3a;
218     }
219 
220    /**
221     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getHibernateCascade()
222     * @return String
223     */
224     protected abstract String handleGetHibernateCascade();
225 
226     private String __hibernateCascade4a;
227     private boolean __hibernateCascade4aSet = false;
228 
229     /**
230      * Stores the hibernate cascade attribute of this association end.
231      * @return (String)handleGetHibernateCascade()
232      */
233     public final String getHibernateCascade()
234     {
235         String hibernateCascade4a = this.__hibernateCascade4a;
236         if (!this.__hibernateCascade4aSet)
237         {
238             // hibernateCascade has no pre constraints
239             hibernateCascade4a = handleGetHibernateCascade();
240             // hibernateCascade has no post constraints
241             this.__hibernateCascade4a = hibernateCascade4a;
242             if (isMetafacadePropertyCachingEnabled())
243             {
244                 this.__hibernateCascade4aSet = true;
245             }
246         }
247         return hibernateCascade4a;
248     }
249 
250    /**
251     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isOne2OnePrimary()
252     * @return boolean
253     */
254     protected abstract boolean handleIsOne2OnePrimary();
255 
256     private boolean __one2OnePrimary5a;
257     private boolean __one2OnePrimary5aSet = false;
258 
259     /**
260      * Returns whether or not a one-to-one mapping should be the "primary" mapping for the one2one.
261      * It returns a true if this one2one end is an aggregation or a composite. If using the foriegn
262      * key association approach, this end will get the foreign key column definition. If using the
263      * primary key association approach, this end will get the independent primary key and the other
264      * end will get the dependent primary key (i.e. its primary key will be a foreign key to this
265      * table).
266      * @return (boolean)handleIsOne2OnePrimary()
267      */
268     public final boolean isOne2OnePrimary()
269     {
270         boolean one2OnePrimary5a = this.__one2OnePrimary5a;
271         if (!this.__one2OnePrimary5aSet)
272         {
273             // one2OnePrimary has no pre constraints
274             one2OnePrimary5a = handleIsOne2OnePrimary();
275             // one2OnePrimary has no post constraints
276             this.__one2OnePrimary5a = one2OnePrimary5a;
277             if (isMetafacadePropertyCachingEnabled())
278             {
279                 this.__one2OnePrimary5aSet = true;
280             }
281         }
282         return one2OnePrimary5a;
283     }
284 
285    /**
286     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getCollectionType()
287     * @return String
288     */
289     protected abstract String handleGetCollectionType();
290 
291     private String __collectionType6a;
292     private boolean __collectionType6aSet = false;
293 
294     /**
295      * TODO: Model Documentation for
296      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.collectionType
297      * @return (String)handleGetCollectionType()
298      */
299     public final String getCollectionType()
300     {
301         String collectionType6a = this.__collectionType6a;
302         if (!this.__collectionType6aSet)
303         {
304             // collectionType has no pre constraints
305             collectionType6a = handleGetCollectionType();
306             // collectionType has no post constraints
307             this.__collectionType6a = collectionType6a;
308             if (isMetafacadePropertyCachingEnabled())
309             {
310                 this.__collectionType6aSet = true;
311             }
312         }
313         return collectionType6a;
314     }
315 
316    /**
317     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getSortType()
318     * @return String
319     */
320     protected abstract String handleGetSortType();
321 
322     private String __sortType7a;
323     private boolean __sortType7aSet = false;
324 
325     /**
326      * TODO: Model Documentation for
327      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.sortType
328      * @return (String)handleGetSortType()
329      */
330     public final String getSortType()
331     {
332         String sortType7a = this.__sortType7a;
333         if (!this.__sortType7aSet)
334         {
335             // sortType has no pre constraints
336             sortType7a = handleGetSortType();
337             // sortType has no post constraints
338             this.__sortType7a = sortType7a;
339             if (isMetafacadePropertyCachingEnabled())
340             {
341                 this.__sortType7aSet = true;
342             }
343         }
344         return sortType7a;
345     }
346 
347    /**
348     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getOrderByColumns()
349     * @return String
350     */
351     protected abstract String handleGetOrderByColumns();
352 
353     private String __orderByColumns8a;
354     private boolean __orderByColumns8aSet = false;
355 
356     /**
357      * TODO: Model Documentation for
358      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.orderByColumns
359      * @return (String)handleGetOrderByColumns()
360      */
361     public final String getOrderByColumns()
362     {
363         String orderByColumns8a = this.__orderByColumns8a;
364         if (!this.__orderByColumns8aSet)
365         {
366             // orderByColumns has no pre constraints
367             orderByColumns8a = handleGetOrderByColumns();
368             // orderByColumns has no post constraints
369             this.__orderByColumns8a = orderByColumns8a;
370             if (isMetafacadePropertyCachingEnabled())
371             {
372                 this.__orderByColumns8aSet = true;
373             }
374         }
375         return orderByColumns8a;
376     }
377 
378    /**
379     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getWhereClause()
380     * @return String
381     */
382     protected abstract String handleGetWhereClause();
383 
384     private String __whereClause9a;
385     private boolean __whereClause9aSet = false;
386 
387     /**
388      * TODO: Model Documentation for
389      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.whereClause
390      * @return (String)handleGetWhereClause()
391      */
392     public final String getWhereClause()
393     {
394         String whereClause9a = this.__whereClause9a;
395         if (!this.__whereClause9aSet)
396         {
397             // whereClause has no pre constraints
398             whereClause9a = handleGetWhereClause();
399             // whereClause has no post constraints
400             this.__whereClause9a = whereClause9a;
401             if (isMetafacadePropertyCachingEnabled())
402             {
403                 this.__whereClause9aSet = true;
404             }
405         }
406         return whereClause9a;
407     }
408 
409    /**
410     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isIndexedCollection()
411     * @return boolean
412     */
413     protected abstract boolean handleIsIndexedCollection();
414 
415     private boolean __indexedCollection10a;
416     private boolean __indexedCollection10aSet = false;
417 
418     /**
419      * TODO: Model Documentation for
420      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.indexedCollection
421      * @return (boolean)handleIsIndexedCollection()
422      */
423     public final boolean isIndexedCollection()
424     {
425         boolean indexedCollection10a = this.__indexedCollection10a;
426         if (!this.__indexedCollection10aSet)
427         {
428             // indexedCollection has no pre constraints
429             indexedCollection10a = handleIsIndexedCollection();
430             // indexedCollection has no post constraints
431             this.__indexedCollection10a = indexedCollection10a;
432             if (isMetafacadePropertyCachingEnabled())
433             {
434                 this.__indexedCollection10aSet = true;
435             }
436         }
437         return indexedCollection10a;
438     }
439 
440    /**
441     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getCollectionIndexName()
442     * @return String
443     */
444     protected abstract String handleGetCollectionIndexName();
445 
446     private String __collectionIndexName11a;
447     private boolean __collectionIndexName11aSet = false;
448 
449     /**
450      * TODO: Model Documentation for
451      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.collectionIndexName
452      * @return (String)handleGetCollectionIndexName()
453      */
454     public final String getCollectionIndexName()
455     {
456         String collectionIndexName11a = this.__collectionIndexName11a;
457         if (!this.__collectionIndexName11aSet)
458         {
459             // collectionIndexName has no pre constraints
460             collectionIndexName11a = handleGetCollectionIndexName();
461             // collectionIndexName has no post constraints
462             this.__collectionIndexName11a = collectionIndexName11a;
463             if (isMetafacadePropertyCachingEnabled())
464             {
465                 this.__collectionIndexName11aSet = true;
466             }
467         }
468         return collectionIndexName11a;
469     }
470 
471    /**
472     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isMap()
473     * @return boolean
474     */
475     protected abstract boolean handleIsMap();
476 
477     private boolean __map12a;
478     private boolean __map12aSet = false;
479 
480     /**
481      * TODO: Model Documentation for
482      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.map
483      * @return (boolean)handleIsMap()
484      */
485     public final boolean isMap()
486     {
487         boolean map12a = this.__map12a;
488         if (!this.__map12aSet)
489         {
490             // map has no pre constraints
491             map12a = handleIsMap();
492             // map has no post constraints
493             this.__map12a = map12a;
494             if (isMetafacadePropertyCachingEnabled())
495             {
496                 this.__map12aSet = true;
497             }
498         }
499         return map12a;
500     }
501 
502    /**
503     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isList()
504     * @return boolean
505     */
506     protected abstract boolean handleIsList();
507 
508     private boolean __list13a;
509     private boolean __list13aSet = false;
510 
511     /**
512      * TODO: Model Documentation for
513      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.list
514      * @return (boolean)handleIsList()
515      */
516     public final boolean isList()
517     {
518         boolean list13a = this.__list13a;
519         if (!this.__list13aSet)
520         {
521             // list has no pre constraints
522             list13a = handleIsList();
523             // list has no post constraints
524             this.__list13a = list13a;
525             if (isMetafacadePropertyCachingEnabled())
526             {
527                 this.__list13aSet = true;
528             }
529         }
530         return list13a;
531     }
532 
533    /**
534     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isSet()
535     * @return boolean
536     */
537     protected abstract boolean handleIsSet();
538 
539     private boolean __set14a;
540     private boolean __set14aSet = false;
541 
542     /**
543      * TODO: Model Documentation for
544      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.set
545      * @return (boolean)handleIsSet()
546      */
547     public final boolean isSet()
548     {
549         boolean set14a = this.__set14a;
550         if (!this.__set14aSet)
551         {
552             // set has no pre constraints
553             set14a = handleIsSet();
554             // set has no post constraints
555             this.__set14a = set14a;
556             if (isMetafacadePropertyCachingEnabled())
557             {
558                 this.__set14aSet = true;
559             }
560         }
561         return set14a;
562     }
563 
564    /**
565     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isBag()
566     * @return boolean
567     */
568     protected abstract boolean handleIsBag();
569 
570     private boolean __bag15a;
571     private boolean __bag15aSet = false;
572 
573     /**
574      * TODO: Model Documentation for
575      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.bag
576      * @return (boolean)handleIsBag()
577      */
578     public final boolean isBag()
579     {
580         boolean bag15a = this.__bag15a;
581         if (!this.__bag15aSet)
582         {
583             // bag has no pre constraints
584             bag15a = handleIsBag();
585             // bag has no post constraints
586             this.__bag15a = bag15a;
587             if (isMetafacadePropertyCachingEnabled())
588             {
589                 this.__bag15aSet = true;
590             }
591         }
592         return bag15a;
593     }
594 
595    /**
596     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getCollectionIndexType()
597     * @return String
598     */
599     protected abstract String handleGetCollectionIndexType();
600 
601     private String __collectionIndexType16a;
602     private boolean __collectionIndexType16aSet = false;
603 
604     /**
605      * this will only apply for Maps, it will return the type of the attribute specified on the
606      * CollectionIndexName tagged value
607      * @return (String)handleGetCollectionIndexType()
608      */
609     public final String getCollectionIndexType()
610     {
611         String collectionIndexType16a = this.__collectionIndexType16a;
612         if (!this.__collectionIndexType16aSet)
613         {
614             // collectionIndexType has no pre constraints
615             collectionIndexType16a = handleGetCollectionIndexType();
616             // collectionIndexType has no post constraints
617             this.__collectionIndexType16a = collectionIndexType16a;
618             if (isMetafacadePropertyCachingEnabled())
619             {
620                 this.__collectionIndexType16aSet = true;
621             }
622         }
623         return collectionIndexType16a;
624     }
625 
626    /**
627     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getCollectionTypeImplementation()
628     * @return String
629     */
630     protected abstract String handleGetCollectionTypeImplementation();
631 
632     private String __collectionTypeImplementation17a;
633     private boolean __collectionTypeImplementation17aSet = false;
634 
635     /**
636      * The actual implementation of the collection type.
637      * @return (String)handleGetCollectionTypeImplementation()
638      */
639     public final String getCollectionTypeImplementation()
640     {
641         String collectionTypeImplementation17a = this.__collectionTypeImplementation17a;
642         if (!this.__collectionTypeImplementation17aSet)
643         {
644             // collectionTypeImplementation has no pre constraints
645             collectionTypeImplementation17a = handleGetCollectionTypeImplementation();
646             // collectionTypeImplementation has no post constraints
647             this.__collectionTypeImplementation17a = collectionTypeImplementation17a;
648             if (isMetafacadePropertyCachingEnabled())
649             {
650                 this.__collectionTypeImplementation17aSet = true;
651             }
652         }
653         return collectionTypeImplementation17a;
654     }
655 
656    /**
657     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getHibernateAggregationCascade()
658     * @return String
659     */
660     protected abstract String handleGetHibernateAggregationCascade();
661 
662     private String __hibernateAggregationCascade18a;
663     private boolean __hibernateAggregationCascade18aSet = false;
664 
665     /**
666      * Stores the value indicating how a UML aggregation should be interpreted as cascade.
667      * @return (String)handleGetHibernateAggregationCascade()
668      */
669     public final String getHibernateAggregationCascade()
670     {
671         String hibernateAggregationCascade18a = this.__hibernateAggregationCascade18a;
672         if (!this.__hibernateAggregationCascade18aSet)
673         {
674             // hibernateAggregationCascade has no pre constraints
675             hibernateAggregationCascade18a = handleGetHibernateAggregationCascade();
676             // hibernateAggregationCascade has no post constraints
677             this.__hibernateAggregationCascade18a = hibernateAggregationCascade18a;
678             if (isMetafacadePropertyCachingEnabled())
679             {
680                 this.__hibernateAggregationCascade18aSet = true;
681             }
682         }
683         return hibernateAggregationCascade18a;
684     }
685 
686    /**
687     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getHibernateCompositionCascade()
688     * @return String
689     */
690     protected abstract String handleGetHibernateCompositionCascade();
691 
692     private String __hibernateCompositionCascade19a;
693     private boolean __hibernateCompositionCascade19aSet = false;
694 
695     /**
696      * Stores the value indicating how a UML composition should be interpreted as cascade.
697      * @return (String)handleGetHibernateCompositionCascade()
698      */
699     public final String getHibernateCompositionCascade()
700     {
701         String hibernateCompositionCascade19a = this.__hibernateCompositionCascade19a;
702         if (!this.__hibernateCompositionCascade19aSet)
703         {
704             // hibernateCompositionCascade has no pre constraints
705             hibernateCompositionCascade19a = handleGetHibernateCompositionCascade();
706             // hibernateCompositionCascade has no post constraints
707             this.__hibernateCompositionCascade19a = hibernateCompositionCascade19a;
708             if (isMetafacadePropertyCachingEnabled())
709             {
710                 this.__hibernateCompositionCascade19aSet = true;
711             }
712         }
713         return hibernateCompositionCascade19a;
714     }
715 
716    /**
717     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isBidirectionalOrderedListChild()
718     * @return boolean
719     */
720     protected abstract boolean handleIsBidirectionalOrderedListChild();
721 
722     private boolean __bidirectionalOrderedListChild20a;
723     private boolean __bidirectionalOrderedListChild20aSet = false;
724 
725     /**
726      * TODO: Model Documentation for
727      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.bidirectionalOrderedListChild
728      * @return (boolean)handleIsBidirectionalOrderedListChild()
729      */
730     public final boolean isBidirectionalOrderedListChild()
731     {
732         boolean bidirectionalOrderedListChild20a = this.__bidirectionalOrderedListChild20a;
733         if (!this.__bidirectionalOrderedListChild20aSet)
734         {
735             // bidirectionalOrderedListChild has no pre constraints
736             bidirectionalOrderedListChild20a = handleIsBidirectionalOrderedListChild();
737             // bidirectionalOrderedListChild has no post constraints
738             this.__bidirectionalOrderedListChild20a = bidirectionalOrderedListChild20a;
739             if (isMetafacadePropertyCachingEnabled())
740             {
741                 this.__bidirectionalOrderedListChild20aSet = true;
742             }
743         }
744         return bidirectionalOrderedListChild20a;
745     }
746 
747    /**
748     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isBidirectionalOrderedListParent()
749     * @return boolean
750     */
751     protected abstract boolean handleIsBidirectionalOrderedListParent();
752 
753     private boolean __bidirectionalOrderedListParent21a;
754     private boolean __bidirectionalOrderedListParent21aSet = false;
755 
756     /**
757      * TODO: Model Documentation for
758      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.bidirectionalOrderedListParent
759      * @return (boolean)handleIsBidirectionalOrderedListParent()
760      */
761     public final boolean isBidirectionalOrderedListParent()
762     {
763         boolean bidirectionalOrderedListParent21a = this.__bidirectionalOrderedListParent21a;
764         if (!this.__bidirectionalOrderedListParent21aSet)
765         {
766             // bidirectionalOrderedListParent has no pre constraints
767             bidirectionalOrderedListParent21a = handleIsBidirectionalOrderedListParent();
768             // bidirectionalOrderedListParent has no post constraints
769             this.__bidirectionalOrderedListParent21a = bidirectionalOrderedListParent21a;
770             if (isMetafacadePropertyCachingEnabled())
771             {
772                 this.__bidirectionalOrderedListParent21aSet = true;
773             }
774         }
775         return bidirectionalOrderedListParent21a;
776     }
777 
778    /**
779     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getEmbedXML()
780     * @return String
781     */
782     protected abstract String handleGetEmbedXML();
783 
784     private String __embedXML22a;
785     private boolean __embedXML22aSet = false;
786 
787     /**
788      * TODO: Model Documentation for
789      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.embedXML
790      * @return (String)handleGetEmbedXML()
791      */
792     public final String getEmbedXML()
793     {
794         String embedXML22a = this.__embedXML22a;
795         if (!this.__embedXML22aSet)
796         {
797             // embedXML has no pre constraints
798             embedXML22a = handleGetEmbedXML();
799             // embedXML has no post constraints
800             this.__embedXML22a = embedXML22a;
801             if (isMetafacadePropertyCachingEnabled())
802             {
803                 this.__embedXML22aSet = true;
804             }
805         }
806         return embedXML22a;
807     }
808 
809    /**
810     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#getXmlTagName()
811     * @return String
812     */
813     protected abstract String handleGetXmlTagName();
814 
815     private String __xmlTagName23a;
816     private boolean __xmlTagName23aSet = false;
817 
818     /**
819      * TODO: Model Documentation for
820      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.xmlTagName
821      * @return (String)handleGetXmlTagName()
822      */
823     public final String getXmlTagName()
824     {
825         String xmlTagName23a = this.__xmlTagName23a;
826         if (!this.__xmlTagName23aSet)
827         {
828             // xmlTagName has no pre constraints
829             xmlTagName23a = handleGetXmlTagName();
830             // xmlTagName has no post constraints
831             this.__xmlTagName23a = xmlTagName23a;
832             if (isMetafacadePropertyCachingEnabled())
833             {
834                 this.__xmlTagName23aSet = true;
835             }
836         }
837         return xmlTagName23a;
838     }
839 
840    /**
841     * @see org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd#isOwning()
842     * @return boolean
843     */
844     protected abstract boolean handleIsOwning();
845 
846     private boolean __owning24a;
847     private boolean __owning24aSet = false;
848 
849     /**
850      * TODO: Model Documentation for
851      * org.andromda.cartridges.hibernate.metafacades.HibernateAssociationEnd.owning
852      * @return (boolean)handleIsOwning()
853      */
854     public final boolean isOwning()
855     {
856         boolean owning24a = this.__owning24a;
857         if (!this.__owning24aSet)
858         {
859             // owning has no pre constraints
860             owning24a = handleIsOwning();
861             // owning has no post constraints
862             this.__owning24a = owning24a;
863             if (isMetafacadePropertyCachingEnabled())
864             {
865                 this.__owning24aSet = true;
866             }
867         }
868         return owning24a;
869     }
870 
871     /**
872      * @return true
873      * @see EntityAssociationEnd
874      */
875     public boolean isEntityAssociationEndMetaType()
876     {
877         return true;
878     }
879 
880     /**
881      * @return true
882      * @see AssociationEndFacade
883      */
884     public boolean isAssociationEndFacadeMetaType()
885     {
886         return true;
887     }
888 
889     /**
890      * @return true
891      * @see ModelElementFacade
892      */
893     public boolean isModelElementFacadeMetaType()
894     {
895         return true;
896     }
897 
898     // ----------- delegates to EntityAssociationEnd ------------
899     /**
900      * A name suitable for use when adding new elements to this association end in programming code.
901      * @see AssociationEndFacade#getAdderName()
902      */
903     public String getAdderName()
904     {
905         return this.getSuperEntityAssociationEnd().getAdderName();
906     }
907 
908     /**
909      * Returns the value of the 'Aggregation' attribute (none, shared, composite). The default value
910      * is "none". The literals are from the enumeration org.eclipse.uml2.uml.AggregationKind.
911      * Specifies the kind of aggregation that applies to the Property.
912      * @see AssociationEndFacade#getAggregationKind()
913      */
914     public String getAggregationKind()
915     {
916         return this.getSuperEntityAssociationEnd().getAggregationKind();
917     }
918 
919     /**
920      * The association owning this association end.
921      * @see AssociationEndFacade#getAssociation()
922      */
923     public AssociationFacade getAssociation()
924     {
925         return this.getSuperEntityAssociationEnd().getAssociation();
926     }
927 
928     /**
929      * UML2: Returns the value of the 'Default' attribute. Specifies a String that represents a
930      * value to be used when no argument is supplied for the Property. A String that is evaluated to
931      * give a default value for the Property when an object of the owning Classifier is
932      * instantiated.  Can be something like: new ValueObject(values);
933      * @see AssociationEndFacade#getDefault()
934      */
935     public String getDefault()
936     {
937         return this.getSuperEntityAssociationEnd().getDefault();
938     }
939 
940     /**
941      * A name suitable for use when accessing this association end in programming code.
942      * @see AssociationEndFacade#getGetterName()
943      */
944     public String getGetterName()
945     {
946         return this.getSuperEntityAssociationEnd().getGetterName();
947     }
948 
949     /**
950      * The name of the type that is returned on the accessor and mutator operations,  determined in
951      * part by the multiplicity.
952      * @see AssociationEndFacade#getGetterSetterTypeName()
953      */
954     public String getGetterSetterTypeName()
955     {
956         return this.getSuperEntityAssociationEnd().getGetterSetterTypeName();
957     }
958 
959     /**
960      * the lower value for the multiplicity
961      * -only applicable for UML2
962      * @see AssociationEndFacade#getLower()
963      */
964     public int getLower()
965     {
966         return this.getSuperEntityAssociationEnd().getLower();
967     }
968 
969     /**
970      * The other association end owned by this end's association.
971      * @see AssociationEndFacade#getOtherEnd()
972      */
973     public AssociationEndFacade getOtherEnd()
974     {
975         return this.getSuperEntityAssociationEnd().getOtherEnd();
976     }
977 
978     /**
979      * A name suitable for use when removing element from this association end in programming code.
980      * @see AssociationEndFacade#getRemoverName()
981      */
982     public String getRemoverName()
983     {
984         return this.getSuperEntityAssociationEnd().getRemoverName();
985     }
986 
987     /**
988      * A name suitable for use when accessing this association end in programming code.
989      * @see AssociationEndFacade#getSetterName()
990      */
991     public String getSetterName()
992     {
993         return this.getSuperEntityAssociationEnd().getSetterName();
994     }
995 
996     /**
997      * The classifier attached to this association end.
998      * @see AssociationEndFacade#getType()
999      */
1000     public ClassifierFacade getType()
1001     {
1002         return this.getSuperEntityAssociationEnd().getType();
1003     }
1004 
1005     /**
1006      * the upper value for the multiplicity (will be -1 for *)
1007      * -only applicable for UML2
1008      * @see AssociationEndFacade#getUpper()
1009      */
1010     public int getUpper()
1011     {
1012         return this.getSuperEntityAssociationEnd().getUpper();
1013     }
1014 
1015     /**
1016      * True if this association end represents an aggregation relationship.
1017      * @see AssociationEndFacade#isAggregation()
1018      */
1019     public boolean isAggregation()
1020     {
1021         return this.getSuperEntityAssociationEnd().isAggregation();
1022     }
1023 
1024     /**
1025      * Is true if update of one side of the association should also update the other side. false if
1026      * not.
1027      * @see AssociationEndFacade#isBidirectional()
1028      */
1029     public boolean isBidirectional()
1030     {
1031         return this.getSuperEntityAssociationEnd().isBidirectional();
1032     }
1033 
1034     /**
1035      * Returns whether or not (true/false) this association end is the child end of the assocation
1036      * (i.e. the other end's aggregation is composition).
1037      * @see AssociationEndFacade#isChild()
1038      */
1039     public boolean isChild()
1040     {
1041         return this.getSuperEntityAssociationEnd().isChild();
1042     }
1043 
1044     /**
1045      * True if this association end represents a composition relationship.
1046      * @see AssociationEndFacade#isComposition()
1047      */
1048     public boolean isComposition()
1049     {
1050         return this.getSuperEntityAssociationEnd().isComposition();
1051     }
1052 
1053     /**
1054      * If the association end is derived (its value is computed). UML2 only. UML14 always returns
1055      * false. Default=false.
1056      * @see AssociationEndFacade#isDerived()
1057      */
1058     public boolean isDerived()
1059     {
1060         return this.getSuperEntityAssociationEnd().isDerived();
1061     }
1062 
1063     /**
1064      * IsLeaf property in the association end property. If true, attribute is final, cannot be
1065      * extended or implemented by a descendant. Default=false.
1066      * @see AssociationEndFacade#isLeaf()
1067      */
1068     public boolean isLeaf()
1069     {
1070         return this.getSuperEntityAssociationEnd().isLeaf();
1071     }
1072 
1073     /**
1074      * True if this association end's multiplicity is greater than one.
1075      * @see AssociationEndFacade#isMany()
1076      */
1077     public boolean isMany()
1078     {
1079         return this.getSuperEntityAssociationEnd().isMany();
1080     }
1081 
1082     /**
1083      * True if this association end's and the other end's multiplicities are both many.
1084      * @see AssociationEndFacade#isMany2Many()
1085      */
1086     public boolean isMany2Many()
1087     {
1088         return this.getSuperEntityAssociationEnd().isMany2Many();
1089     }
1090 
1091     /**
1092      * True if this association end's multiplicity is many while the other end's is one.
1093      * @see AssociationEndFacade#isMany2One()
1094      */
1095     public boolean isMany2One()
1096     {
1097         return this.getSuperEntityAssociationEnd().isMany2One();
1098     }
1099 
1100     /**
1101      * True if it is possible to navigate from the other end to this association end .
1102      * @see AssociationEndFacade#isNavigable()
1103      */
1104     public boolean isNavigable()
1105     {
1106         return this.getSuperEntityAssociationEnd().isNavigable();
1107     }
1108 
1109     /**
1110      * True if this association end's multiplicity is one while the other end's is many.
1111      * @see AssociationEndFacade#isOne2Many()
1112      */
1113     public boolean isOne2Many()
1114     {
1115         return this.getSuperEntityAssociationEnd().isOne2Many();
1116     }
1117 
1118     /**
1119      * True if this association end's and the other end's multiplicities are both one.
1120      * @see AssociationEndFacade#isOne2One()
1121      */
1122     public boolean isOne2One()
1123     {
1124         return this.getSuperEntityAssociationEnd().isOne2One();
1125     }
1126 
1127     /**
1128      * Indicates whether or not the association ends are ordered (if multiplicity is greater than
1129      * 1).
1130      * @see AssociationEndFacade#isOrdered()
1131      */
1132     public boolean isOrdered()
1133     {
1134         return this.getSuperEntityAssociationEnd().isOrdered();
1135     }
1136 
1137     /**
1138      * True if the association end cannot be changed.
1139      * @see AssociationEndFacade#isReadOnly()
1140      */
1141     public boolean isReadOnly()
1142     {
1143         return this.getSuperEntityAssociationEnd().isReadOnly();
1144     }
1145 
1146     /**
1147      * True if this association end's multiplicity is strictly greater than zero.
1148      * @see AssociationEndFacade#isRequired()
1149      */
1150     public boolean isRequired()
1151     {
1152         return this.getSuperEntityAssociationEnd().isRequired();
1153     }
1154 
1155     /**
1156      * Indicates if this associationEnd is 'static', meaning it has a classifier scope.
1157      * @see AssociationEndFacade#isStatic()
1158      */
1159     public boolean isStatic()
1160     {
1161         return this.getSuperEntityAssociationEnd().isStatic();
1162     }
1163 
1164     /**
1165      * UML2: If the association attribute is unique within the Collection type. UML14 always returns
1166      * false. Unique+Ordered determines the implementation Collection type. Default=false.
1167      * @see AssociationEndFacade#isUnique()
1168      */
1169     public boolean isUnique()
1170     {
1171         return this.getSuperEntityAssociationEnd().isUnique();
1172     }
1173 
1174     /**
1175      * The name of the index to create on a column that persists the foreign key attribute.
1176      * @see EntityAssociationEnd#getColumnIndex()
1177      */
1178     public String getColumnIndex()
1179     {
1180         return this.getSuperEntityAssociationEnd().getColumnIndex();
1181     }
1182 
1183     /**
1184      * The name of the column that makes up the foreign key.
1185      * @see EntityAssociationEnd#getColumnName()
1186      */
1187     public String getColumnName()
1188     {
1189         return this.getSuperEntityAssociationEnd().getColumnName();
1190     }
1191 
1192     /**
1193      * The name of the foreign key constraint to use for databases.
1194      * @see EntityAssociationEnd#getForeignKeyConstraintName()
1195      */
1196     public String getForeignKeyConstraintName()
1197     {
1198         return this.getSuperEntityAssociationEnd().getForeignKeyConstraintName();
1199     }
1200 
1201     /**
1202      * The current foreign key suffix specified for this entity association end facade.
1203      * @see EntityAssociationEnd#getForeignKeySuffix()
1204      */
1205     public String getForeignKeySuffix()
1206     {
1207         return this.getSuperEntityAssociationEnd().getForeignKeySuffix();
1208     }
1209 
1210     /**
1211      * The SQL type for this the foreign key column of this association end.
1212      * @see EntityAssociationEnd#getSqlType()
1213      */
1214     public String getSqlType()
1215     {
1216         return this.getSuperEntityAssociationEnd().getSqlType();
1217     }
1218 
1219     /**
1220      * The name of the unique-key that this unique association end belongs
1221      * @see EntityAssociationEnd#getUniqueGroup()
1222      */
1223     public String getUniqueGroup()
1224     {
1225         return this.getSuperEntityAssociationEnd().getUniqueGroup();
1226     }
1227 
1228     /**
1229      * Indicates whether or not a foreign identifier should be used for the entity that owns this
1230      * association end.  This would only make sense in the case of a child in a one-to-one
1231      * parent-child association.  If this flag is true, then the identifier of this entity should
1232      * also be used as the foreign key to the related parent entity.
1233      * @see EntityAssociationEnd#isForeignIdentifier()
1234      */
1235     public boolean isForeignIdentifier()
1236     {
1237         return this.getSuperEntityAssociationEnd().isForeignIdentifier();
1238     }
1239 
1240     /**
1241      * True if this association is an identifier for its entity.
1242      * @see EntityAssociationEnd#isIdentifier()
1243      */
1244     public boolean isIdentifier()
1245     {
1246         return this.getSuperEntityAssociationEnd().isIdentifier();
1247     }
1248 
1249     /**
1250      * True if the associationEnd is marked with identifiers stereotype, false otherwise.
1251      * @see EntityAssociationEnd#isIdentifiersPresent()
1252      */
1253     public boolean isIdentifiersPresent()
1254     {
1255         return this.getSuperEntityAssociationEnd().isIdentifiersPresent();
1256     }
1257 
1258     /**
1259      * Indicates this association end should be ignored by the persistence layer.
1260      * @see EntityAssociationEnd#isTransient()
1261      */
1262     public boolean isTransient()
1263     {
1264         return this.getSuperEntityAssociationEnd().isTransient();
1265     }
1266 
1267     /**
1268      * Copies all tagged values from the given ModelElementFacade to this model element facade.
1269      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
1270      */
1271     public void copyTaggedValues(ModelElementFacade element)
1272     {
1273         this.getSuperEntityAssociationEnd().copyTaggedValues(element);
1274     }
1275 
1276     /**
1277      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
1278      * one found will be returned.
1279      * @see ModelElementFacade#findTaggedValue(String tagName)
1280      */
1281     public Object findTaggedValue(String tagName)
1282     {
1283         return this.getSuperEntityAssociationEnd().findTaggedValue(tagName);
1284     }
1285 
1286     /**
1287      * Returns all the values for the tagged value with the specified name. The returned collection
1288      * will contains only String instances, or will be empty. Never null.
1289      * @see ModelElementFacade#findTaggedValues(String tagName)
1290      */
1291     public Collection<Object> findTaggedValues(String tagName)
1292     {
1293         return this.getSuperEntityAssociationEnd().findTaggedValues(tagName);
1294     }
1295 
1296     /**
1297      * Returns the fully qualified name of the model element. The fully qualified name includes
1298      * complete package qualified name of the underlying model element. The templates parameter will
1299      * be replaced by the correct one given the binding relation of the parameter to this element.
1300      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1301      */
1302     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
1303     {
1304         return this.getSuperEntityAssociationEnd().getBindedFullyQualifiedName(bindedElement);
1305     }
1306 
1307     /**
1308      * Gets all constraints belonging to the model element.
1309      * @see ModelElementFacade#getConstraints()
1310      */
1311     public Collection<ConstraintFacade> getConstraints()
1312     {
1313         return this.getSuperEntityAssociationEnd().getConstraints();
1314     }
1315 
1316     /**
1317      * Returns the constraints of the argument kind that have been placed onto this model. Typical
1318      * kinds are "inv", "pre" and "post". Other kinds are possible.
1319      * @see ModelElementFacade#getConstraints(String kind)
1320      */
1321     public Collection<ConstraintFacade> getConstraints(String kind)
1322     {
1323         return this.getSuperEntityAssociationEnd().getConstraints(kind);
1324     }
1325 
1326     /**
1327      * Gets the documentation for the model element, The indent argument is prefixed to each line.
1328      * By default this method wraps lines after 64 characters.
1329      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
1330      * @see ModelElementFacade#getDocumentation(String indent)
1331      */
1332     public String getDocumentation(String indent)
1333     {
1334         return this.getSuperEntityAssociationEnd().getDocumentation(indent);
1335     }
1336 
1337     /**
1338      * This method returns the documentation for this model element, with the lines wrapped after
1339      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1340      * required. By default paragraphs are returned as HTML.
1341      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
1342      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
1343      */
1344     public String getDocumentation(String indent, int lineLength)
1345     {
1346         return this.getSuperEntityAssociationEnd().getDocumentation(indent, lineLength);
1347     }
1348 
1349     /**
1350      * This method returns the documentation for this model element, with the lines wrapped after
1351      * the specified number of characters, values of less than 1 will indicate no line wrapping is
1352      * required. HTML style determines if HTML Escaping is applied.
1353      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1354      */
1355     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1356     {
1357         return this.getSuperEntityAssociationEnd().getDocumentation(indent, lineLength, htmlStyle);
1358     }
1359 
1360     /**
1361      * The fully qualified name of this model element.
1362      * @see ModelElementFacade#getFullyQualifiedName()
1363      */
1364     public String getFullyQualifiedName()
1365     {
1366         return this.getSuperEntityAssociationEnd().getFullyQualifiedName();
1367     }
1368 
1369     /**
1370      * Returns the fully qualified name of the model element. The fully qualified name includes
1371      * complete package qualified name of the underlying model element.  If modelName is true, then
1372      * the original name of the model element (the name contained within the model) will be the name
1373      * returned, otherwise a name from a language mapping will be returned.
1374      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1375      */
1376     public String getFullyQualifiedName(boolean modelName)
1377     {
1378         return this.getSuperEntityAssociationEnd().getFullyQualifiedName(modelName);
1379     }
1380 
1381     /**
1382      * Returns the fully qualified name as a path, the returned value always starts with out a slash
1383      * '/'.
1384      * @see ModelElementFacade#getFullyQualifiedNamePath()
1385      */
1386     public String getFullyQualifiedNamePath()
1387     {
1388         return this.getSuperEntityAssociationEnd().getFullyQualifiedNamePath();
1389     }
1390 
1391     /**
1392      * Gets the unique identifier of the underlying model element.
1393      * @see ModelElementFacade#getId()
1394      */
1395     public String getId()
1396     {
1397         return this.getSuperEntityAssociationEnd().getId();
1398     }
1399 
1400     /**
1401      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1402      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1403      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1404      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1405      * JDK5 compiler level.
1406      * @see ModelElementFacade#getKeywords()
1407      */
1408     public Collection<String> getKeywords()
1409     {
1410         return this.getSuperEntityAssociationEnd().getKeywords();
1411     }
1412 
1413     /**
1414      * UML2: Retrieves a localized label for this named element.
1415      * @see ModelElementFacade#getLabel()
1416      */
1417     public String getLabel()
1418     {
1419         return this.getSuperEntityAssociationEnd().getLabel();
1420     }
1421 
1422     /**
1423      * The language mappings that have been set for this model element.
1424      * @see ModelElementFacade#getLanguageMappings()
1425      */
1426     public TypeMappings getLanguageMappings()
1427     {
1428         return this.getSuperEntityAssociationEnd().getLanguageMappings();
1429     }
1430 
1431     /**
1432      * Return the model containing this model element (multiple models may be loaded and processed
1433      * at the same time).
1434      * @see ModelElementFacade#getModel()
1435      */
1436     public ModelFacade getModel()
1437     {
1438         return this.getSuperEntityAssociationEnd().getModel();
1439     }
1440 
1441     /**
1442      * The name of the model element.
1443      * @see ModelElementFacade#getName()
1444      */
1445     public String getName()
1446     {
1447         return this.getSuperEntityAssociationEnd().getName();
1448     }
1449 
1450     /**
1451      * Gets the package to which this model element belongs.
1452      * @see ModelElementFacade#getPackage()
1453      */
1454     public ModelElementFacade getPackage()
1455     {
1456         return this.getSuperEntityAssociationEnd().getPackage();
1457     }
1458 
1459     /**
1460      * The name of this model element's package.
1461      * @see ModelElementFacade#getPackageName()
1462      */
1463     public String getPackageName()
1464     {
1465         return this.getSuperEntityAssociationEnd().getPackageName();
1466     }
1467 
1468     /**
1469      * Gets the package name (optionally providing the ability to retrieve the model name and not
1470      * the mapped name).
1471      * @see ModelElementFacade#getPackageName(boolean modelName)
1472      */
1473     public String getPackageName(boolean modelName)
1474     {
1475         return this.getSuperEntityAssociationEnd().getPackageName(modelName);
1476     }
1477 
1478     /**
1479      * Returns the package as a path, the returned value always starts with out a slash '/'.
1480      * @see ModelElementFacade#getPackagePath()
1481      */
1482     public String getPackagePath()
1483     {
1484         return this.getSuperEntityAssociationEnd().getPackagePath();
1485     }
1486 
1487     /**
1488      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1489      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1490      * the names of the containing namespaces starting at the root of the hierarchy and ending with
1491      * the name of the NamedElement itself.
1492      * @see ModelElementFacade#getQualifiedName()
1493      */
1494     public String getQualifiedName()
1495     {
1496         return this.getSuperEntityAssociationEnd().getQualifiedName();
1497     }
1498 
1499     /**
1500      * Gets the root package for the model element.
1501      * @see ModelElementFacade#getRootPackage()
1502      */
1503     public PackageFacade getRootPackage()
1504     {
1505         return this.getSuperEntityAssociationEnd().getRootPackage();
1506     }
1507 
1508     /**
1509      * Gets the dependencies for which this model element is the source.
1510      * @see ModelElementFacade#getSourceDependencies()
1511      */
1512     public Collection<DependencyFacade> getSourceDependencies()
1513     {
1514         return this.getSuperEntityAssociationEnd().getSourceDependencies();
1515     }
1516 
1517     /**
1518      * If this model element is the context of an activity graph, this represents that activity
1519      * graph.
1520      * @see ModelElementFacade#getStateMachineContext()
1521      */
1522     public StateMachineFacade getStateMachineContext()
1523     {
1524         return this.getSuperEntityAssociationEnd().getStateMachineContext();
1525     }
1526 
1527     /**
1528      * The collection of ALL stereotype names for this model element.
1529      * @see ModelElementFacade#getStereotypeNames()
1530      */
1531     public Collection<String> getStereotypeNames()
1532     {
1533         return this.getSuperEntityAssociationEnd().getStereotypeNames();
1534     }
1535 
1536     /**
1537      * Gets all stereotypes for this model element.
1538      * @see ModelElementFacade#getStereotypes()
1539      */
1540     public Collection<StereotypeFacade> getStereotypes()
1541     {
1542         return this.getSuperEntityAssociationEnd().getStereotypes();
1543     }
1544 
1545     /**
1546      * Return the TaggedValues associated with this model element, under all stereotypes.
1547      * @see ModelElementFacade#getTaggedValues()
1548      */
1549     public Collection<TaggedValueFacade> getTaggedValues()
1550     {
1551         return this.getSuperEntityAssociationEnd().getTaggedValues();
1552     }
1553 
1554     /**
1555      * Gets the dependencies for which this model element is the target.
1556      * @see ModelElementFacade#getTargetDependencies()
1557      */
1558     public Collection<DependencyFacade> getTargetDependencies()
1559     {
1560         return this.getSuperEntityAssociationEnd().getTargetDependencies();
1561     }
1562 
1563     /**
1564      * Get the template parameter for this model element having the parameterName
1565      * @see ModelElementFacade#getTemplateParameter(String parameterName)
1566      */
1567     public Object getTemplateParameter(String parameterName)
1568     {
1569         return this.getSuperEntityAssociationEnd().getTemplateParameter(parameterName);
1570     }
1571 
1572     /**
1573      * Get the template parameters for this model element
1574      * @see ModelElementFacade#getTemplateParameters()
1575      */
1576     public Collection<TemplateParameterFacade> getTemplateParameters()
1577     {
1578         return this.getSuperEntityAssociationEnd().getTemplateParameters();
1579     }
1580 
1581     /**
1582      * The visibility (i.e. public, private, protected or package) of the model element, will
1583      * attempt a lookup for these values in the language mappings (if any).
1584      * @see ModelElementFacade#getVisibility()
1585      */
1586     public String getVisibility()
1587     {
1588         return this.getSuperEntityAssociationEnd().getVisibility();
1589     }
1590 
1591     /**
1592      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1593      * is taken into account when searching for the stereotype), false otherwise.
1594      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1595      */
1596     public boolean hasExactStereotype(String stereotypeName)
1597     {
1598         return this.getSuperEntityAssociationEnd().hasExactStereotype(stereotypeName);
1599     }
1600 
1601     /**
1602      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1603      * pipe, semicolon, or << >>
1604      * @see ModelElementFacade#hasKeyword(String keywordName)
1605      */
1606     public boolean hasKeyword(String keywordName)
1607     {
1608         return this.getSuperEntityAssociationEnd().hasKeyword(keywordName);
1609     }
1610 
1611     /**
1612      * Returns true if the model element has the specified stereotype.  If the stereotype itself
1613      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1614      * one of the stereotype's ancestors has a matching name this method will return true, false
1615      * otherwise.
1616      * For example, if we have a certain stereotype called <<exception>> and a model element has a
1617      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1618      * method with 'stereotypeName' defined as 'exception' the method would return true since
1619      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
1620      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1621      * @see ModelElementFacade#hasStereotype(String stereotypeName)
1622      */
1623     public boolean hasStereotype(String stereotypeName)
1624     {
1625         return this.getSuperEntityAssociationEnd().hasStereotype(stereotypeName);
1626     }
1627 
1628     /**
1629      * True if there are target dependencies from this element that are instances of BindingFacade.
1630      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1631      * @see ModelElementFacade#isBindingDependenciesPresent()
1632      */
1633     public boolean isBindingDependenciesPresent()
1634     {
1635         return this.getSuperEntityAssociationEnd().isBindingDependenciesPresent();
1636     }
1637 
1638     /**
1639      * Indicates if any constraints are present on this model element.
1640      * @see ModelElementFacade#isConstraintsPresent()
1641      */
1642     public boolean isConstraintsPresent()
1643     {
1644         return this.getSuperEntityAssociationEnd().isConstraintsPresent();
1645     }
1646 
1647     /**
1648      * Indicates if any documentation is present on this model element.
1649      * @see ModelElementFacade#isDocumentationPresent()
1650      */
1651     public boolean isDocumentationPresent()
1652     {
1653         return this.getSuperEntityAssociationEnd().isDocumentationPresent();
1654     }
1655 
1656     /**
1657      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1658      * @see ModelElementFacade#isReservedWord()
1659      */
1660     public boolean isReservedWord()
1661     {
1662         return this.getSuperEntityAssociationEnd().isReservedWord();
1663     }
1664 
1665     /**
1666      * True is there are template parameters on this model element. For UML2, applies to Class,
1667      * Operation, Property, and Parameter.
1668      * @see ModelElementFacade#isTemplateParametersPresent()
1669      */
1670     public boolean isTemplateParametersPresent()
1671     {
1672         return this.getSuperEntityAssociationEnd().isTemplateParametersPresent();
1673     }
1674 
1675     /**
1676      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1677      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1678      * Enumerations and Interfaces, optionally applies on other model elements.
1679      * @see ModelElementFacade#isValidIdentifierName()
1680      */
1681     public boolean isValidIdentifierName()
1682     {
1683         return this.getSuperEntityAssociationEnd().isValidIdentifierName();
1684     }
1685 
1686     /**
1687      * Searches for the constraint with the specified 'name' on this model element, and if found
1688      * translates it using the specified 'translation' from a translation library discovered by the
1689      * framework.
1690      * @see ModelElementFacade#translateConstraint(String name, String translation)
1691      */
1692     public String translateConstraint(String name, String translation)
1693     {
1694         return this.getSuperEntityAssociationEnd().translateConstraint(name, translation);
1695     }
1696 
1697     /**
1698      * Translates all constraints belonging to this model element with the given 'translation'.
1699      * @see ModelElementFacade#translateConstraints(String translation)
1700      */
1701     public String[] translateConstraints(String translation)
1702     {
1703         return this.getSuperEntityAssociationEnd().translateConstraints(translation);
1704     }
1705 
1706     /**
1707      * Translates the constraints of the specified 'kind' belonging to this model element.
1708      * @see ModelElementFacade#translateConstraints(String kind, String translation)
1709      */
1710     public String[] translateConstraints(String kind, String translation)
1711     {
1712         return this.getSuperEntityAssociationEnd().translateConstraints(kind, translation);
1713     }
1714 
1715     /**
1716      * @see MetafacadeBase#initialize()
1717      */
1718     @Override
1719     public void initialize()
1720     {
1721         this.getSuperEntityAssociationEnd().initialize();
1722     }
1723 
1724     /**
1725      * @return Object getSuperEntityAssociationEnd().getValidationOwner()
1726      * @see MetafacadeBase#getValidationOwner()
1727      */
1728     @Override
1729     public Object getValidationOwner()
1730     {
1731         Object owner = this.getSuperEntityAssociationEnd().getValidationOwner();
1732         return owner;
1733     }
1734 
1735     /**
1736      * @return String getSuperEntityAssociationEnd().getValidationName()
1737      * @see MetafacadeBase#getValidationName()
1738      */
1739     @Override
1740     public String getValidationName()
1741     {
1742         String name = this.getSuperEntityAssociationEnd().getValidationName();
1743         return name;
1744     }
1745 
1746     /**
1747      * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::one-to-one associations must have aggregation on one side</p>
1748      * <p><b>Error:</b> One-to-one associations must either have one side flagged as primary (using andromda_persistence_associationEnd_primary) or have one side of the association indicating aggregation (aggregation defines the parent owning entity)</p>
1749      * <p><b>OCL:</b> context HibernateAssociationEnd inv: otherEnd.type.oclIsKindOf(HibernateEntity) and one2One  implies (one2OnePrimary or otherEnd.one2OnePrimary)</p>
1750      * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::ordered collections must have an index defined</p>
1751      * <p><b>Error:</b> Ordered collections (i.e. lists) must have an index defined.  You can define this with either the associationEndCollectionIndexName (to apply to all ordered collections in your model(s)), or andromda_hibernate_collection_index
1752 to apply to a single ordered collection.</p>
1753      * <p><b>OCL:</b> context HibernateAssociationEnd 
1754 inv: otherEnd.type.oclIsKindOf(HibernateEntity) and otherEnd.list implies otherEnd.collectionIndexName -> notEmpty()</p>
1755      * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::map collecions must have the index type defined.</p>
1756      * <p><b>Error:</b> Collections defined as maps must have an index and index type defined., you can define each with the associationEndCollectionIndexName and associationEndCollectionIndexType (to apply to all mapped collections in your model(s)), or andromda_hibernate_collection_index and andromda_hibernate_collection_index_type
1757 to apply to a single ordered collection.</p>
1758      * <p><b>OCL:</b> context HibernateAssociationEnd 
1759 inv: otherEnd.type.oclIsKindOf(HibernateEntity) and otherEnd.map implies (otherEnd.collectionIndexType -> notEmpty() and otherEnd.collectionIndexName -> notEmpty())</p>
1760      * @param validationMessages Collection<ModelValidationMessage>
1761      * @see MetafacadeBase#validateInvariants(Collection validationMessages)
1762      */
1763     @Override
1764     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1765     {
1766         this.getSuperEntityAssociationEnd().validateInvariants(validationMessages);
1767         try
1768         {
1769             final Object contextElement = this.THIS();
1770             boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"otherEnd.type") instanceof HibernateEntity&&Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"one2One"))).booleanValue())).booleanValue()?(Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"one2OnePrimary"))).booleanValue()||Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"otherEnd.one2OnePrimary"))).booleanValue()):true));
1771             if (!constraintValid)
1772             {
1773                 validationMessages.add(
1774                     new ModelValidationMessage(
1775                         (MetafacadeBase)contextElement ,
1776                         "org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::one-to-one associations must have aggregation on one side",
1777                         "One-to-one associations must either have one side flagged as primary (using andromda_persistence_associationEnd_primary) or have one side of the association indicating aggregation (aggregation defines the parent owning entity)"));
1778             }
1779         }
1780         catch (Throwable th)
1781         {
1782             Throwable cause = th.getCause();
1783             int depth = 0; // Some throwables have infinite recursion
1784             while (cause != null && depth < 7)
1785             {
1786                 th = cause;
1787                 depth++;
1788             }
1789             logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::one-to-one associations must have aggregation on one side' ON "
1790                 + this.THIS().toString() + ": " + th.getMessage(), th);
1791         }
1792         try
1793         {
1794             final Object contextElement = this.THIS();
1795             boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"otherEnd.type") instanceof HibernateEntity&&Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"otherEnd.list"))).booleanValue())).booleanValue()?OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"otherEnd.collectionIndexName")):true));
1796             if (!constraintValid)
1797             {
1798                 validationMessages.add(
1799                     new ModelValidationMessage(
1800                         (MetafacadeBase)contextElement ,
1801                         "org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::ordered collections must have an index defined",
1802                         "Ordered collections (i.e. lists) must have an index defined.  You can define this with either the associationEndCollectionIndexName (to apply to all ordered collections in your model(s)), or andromda_hibernate_collection_index\nto apply to a single ordered collection."));
1803             }
1804         }
1805         catch (Throwable th)
1806         {
1807             Throwable cause = th.getCause();
1808             int depth = 0; // Some throwables have infinite recursion
1809             while (cause != null && depth < 7)
1810             {
1811                 th = cause;
1812                 depth++;
1813             }
1814             logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::ordered collections must have an index defined' ON "
1815                 + this.THIS().toString() + ": " + th.getMessage(), th);
1816         }
1817         try
1818         {
1819             final Object contextElement = this.THIS();
1820             boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"otherEnd.type") instanceof HibernateEntity&&Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"otherEnd.map"))).booleanValue())).booleanValue()?(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"otherEnd.collectionIndexType"))&&OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"otherEnd.collectionIndexName"))):true));
1821             if (!constraintValid)
1822             {
1823                 validationMessages.add(
1824                     new ModelValidationMessage(
1825                         (MetafacadeBase)contextElement ,
1826                         "org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::map collecions must have the index type defined.",
1827                         "Collections defined as maps must have an index and index type defined., you can define each with the associationEndCollectionIndexName and associationEndCollectionIndexType (to apply to all mapped collections in your model(s)), or andromda_hibernate_collection_index and andromda_hibernate_collection_index_type\nto apply to a single ordered collection."));
1828             }
1829         }
1830         catch (Throwable th)
1831         {
1832             Throwable cause = th.getCause();
1833             int depth = 0; // Some throwables have infinite recursion
1834             while (cause != null && depth < 7)
1835             {
1836                 th = cause;
1837                 depth++;
1838             }
1839             logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateAssociationEnd::map collecions must have the index type defined.' ON "
1840                 + this.THIS().toString() + ": " + th.getMessage(), th);
1841         }
1842     }
1843 
1844     /**
1845      * The property that stores the name of the metafacade.
1846      */
1847     private static final String NAME_PROPERTY = "name";
1848     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1849 
1850     /**
1851      * @see Object#toString()
1852      */
1853     @Override
1854     public String toString()
1855     {
1856         final StringBuilder toString = new StringBuilder(this.getClass().getName());
1857         toString.append("[");
1858         try
1859         {
1860             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1861         }
1862         catch (final Throwable tryAgain)
1863         {
1864             try
1865             {
1866                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1867             }
1868             catch (final Throwable ignore)
1869             {
1870                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1871             }
1872         }
1873         toString.append("]");
1874         return toString.toString();
1875     }
1876 }