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 }