1 // license-header java merge-point
2 //
3 // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4 //
5 package org.andromda.cartridges.hibernate.metafacades;
6
7 import java.util.Collection;
8 import java.util.List;
9 import org.andromda.core.common.Introspector;
10 import org.andromda.core.metafacade.MetafacadeBase;
11 import org.andromda.core.metafacade.MetafacadeFactory;
12 import org.andromda.core.metafacade.ModelValidationMessage;
13 import org.andromda.metafacades.uml.AssociationEndFacade;
14 import org.andromda.metafacades.uml.AttributeFacade;
15 import org.andromda.metafacades.uml.ClassifierFacade;
16 import org.andromda.metafacades.uml.ConstraintFacade;
17 import org.andromda.metafacades.uml.DependencyFacade;
18 import org.andromda.metafacades.uml.Entity;
19 import org.andromda.metafacades.uml.EntityAssociationEnd;
20 import org.andromda.metafacades.uml.EntityQueryOperation;
21 import org.andromda.metafacades.uml.GeneralizableElementFacade;
22 import org.andromda.metafacades.uml.GeneralizationFacade;
23 import org.andromda.metafacades.uml.ModelElementFacade;
24 import org.andromda.metafacades.uml.ModelFacade;
25 import org.andromda.metafacades.uml.OperationFacade;
26 import org.andromda.metafacades.uml.PackageFacade;
27 import org.andromda.metafacades.uml.StateMachineFacade;
28 import org.andromda.metafacades.uml.StereotypeFacade;
29 import org.andromda.metafacades.uml.TaggedValueFacade;
30 import org.andromda.metafacades.uml.TemplateParameterFacade;
31 import org.andromda.metafacades.uml.TypeMappings;
32 import org.andromda.translation.ocl.validation.OCLCollections;
33 import org.andromda.translation.ocl.validation.OCLExpressions;
34 import org.andromda.translation.ocl.validation.OCLIntrospector;
35 import org.andromda.translation.ocl.validation.OCLResultEnsurer;
36 import org.apache.commons.collections.Predicate;
37 import org.apache.log4j.Logger;
38
39 /**
40 * Represents an hibernate persistent entity.
41 * MetafacadeLogic for HibernateEntity
42 *
43 * @see HibernateEntity
44 */
45 public abstract class HibernateEntityLogic
46 extends MetafacadeBase
47 implements HibernateEntity
48 {
49 /**
50 * The underlying UML object
51 * @see Object
52 */
53 protected Object metaObject;
54
55 /** Create Metafacade implementation instance using the MetafacadeFactory from the context
56 * @param metaObjectIn
57 * @param context
58 */
59 protected HibernateEntityLogic(Object metaObjectIn, String context)
60 {
61 super(metaObjectIn, getContext(context));
62 this.superEntity =
63 (Entity)
64 MetafacadeFactory.getInstance().createFacadeImpl(
65 "org.andromda.metafacades.uml.Entity",
66 metaObjectIn,
67 getContext(context));
68 this.metaObject = metaObjectIn;
69 }
70
71 /**
72 * The logger instance.
73 */
74 private static final Logger logger = Logger.getLogger(HibernateEntityLogic.class);
75
76 /**
77 * Gets the context for this metafacade logic instance.
78 * @param context String. Set to HibernateEntity if null
79 * @return context String
80 */
81 private static String getContext(String context)
82 {
83 if (context == null)
84 {
85 context = "org.andromda.cartridges.hibernate.metafacades.HibernateEntity";
86 }
87 return context;
88 }
89
90 private Entity superEntity;
91 private boolean superEntityInitialized = false;
92
93 /**
94 * Gets the Entity parent instance.
95 * @return this.superEntity Entity
96 */
97 private Entity getSuperEntity()
98 {
99 if (!this.superEntityInitialized)
100 {
101 ((MetafacadeBase)this.superEntity).setMetafacadeContext(this.getMetafacadeContext());
102 this.superEntityInitialized = true;
103 }
104 return this.superEntity;
105 }
106
107 /** Reset context only for non-root metafacades
108 * @param context
109 * @see MetafacadeBase#resetMetafacadeContext(String context)
110 */
111 @Override
112 public void resetMetafacadeContext(String context)
113 {
114 if (!this.contextRoot) // reset context only for non-root metafacades
115 {
116 context = getContext(context); // to have same value as in original constructor call
117 setMetafacadeContext (context);
118 if (this.superEntityInitialized)
119 {
120 ((MetafacadeBase)this.superEntity).resetMetafacadeContext(context);
121 }
122 }
123 }
124
125 /**
126 * @return boolean true always
127 * @see HibernateEntity
128 */
129 public boolean isHibernateEntityMetaType()
130 {
131 return true;
132 }
133
134 // --------------- attributes ---------------------
135
136 /**
137 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isHibernateInheritanceClass()
138 * @return boolean
139 */
140 protected abstract boolean handleIsHibernateInheritanceClass();
141
142 private boolean __hibernateInheritanceClass1a;
143 private boolean __hibernateInheritanceClass1aSet = false;
144
145 /**
146 * Return true if the hibernate inheritance strategy as specified by the tagged value
147 * andromda_inheritance_strategy is defined as class.
148 * @return (boolean)handleIsHibernateInheritanceClass()
149 */
150 public final boolean isHibernateInheritanceClass()
151 {
152 boolean hibernateInheritanceClass1a = this.__hibernateInheritanceClass1a;
153 if (!this.__hibernateInheritanceClass1aSet)
154 {
155 // hibernateInheritanceClass has no pre constraints
156 hibernateInheritanceClass1a = handleIsHibernateInheritanceClass();
157 // hibernateInheritanceClass has no post constraints
158 this.__hibernateInheritanceClass1a = hibernateInheritanceClass1a;
159 if (isMetafacadePropertyCachingEnabled())
160 {
161 this.__hibernateInheritanceClass1aSet = true;
162 }
163 }
164 return hibernateInheritanceClass1a;
165 }
166
167 /**
168 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isHibernateInheritanceConcrete()
169 * @return boolean
170 */
171 protected abstract boolean handleIsHibernateInheritanceConcrete();
172
173 private boolean __hibernateInheritanceConcrete2a;
174 private boolean __hibernateInheritanceConcrete2aSet = false;
175
176 /**
177 * Return true if the hibernate inheritance strategy as specified by the tagged value
178 * andromda_inheritance_strategy is defined as concrete.
179 * @return (boolean)handleIsHibernateInheritanceConcrete()
180 */
181 public final boolean isHibernateInheritanceConcrete()
182 {
183 boolean hibernateInheritanceConcrete2a = this.__hibernateInheritanceConcrete2a;
184 if (!this.__hibernateInheritanceConcrete2aSet)
185 {
186 // hibernateInheritanceConcrete has no pre constraints
187 hibernateInheritanceConcrete2a = handleIsHibernateInheritanceConcrete();
188 // hibernateInheritanceConcrete has no post constraints
189 this.__hibernateInheritanceConcrete2a = hibernateInheritanceConcrete2a;
190 if (isMetafacadePropertyCachingEnabled())
191 {
192 this.__hibernateInheritanceConcrete2aSet = true;
193 }
194 }
195 return hibernateInheritanceConcrete2a;
196 }
197
198 /**
199 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isHibernateInheritanceSubclass()
200 * @return boolean
201 */
202 protected abstract boolean handleIsHibernateInheritanceSubclass();
203
204 private boolean __hibernateInheritanceSubclass3a;
205 private boolean __hibernateInheritanceSubclass3aSet = false;
206
207 /**
208 * Return true if the hibernate inheritance strategy as specified by the tagged value
209 * andromda_inheritance_strategy is defined as subclass.
210 * @return (boolean)handleIsHibernateInheritanceSubclass()
211 */
212 public final boolean isHibernateInheritanceSubclass()
213 {
214 boolean hibernateInheritanceSubclass3a = this.__hibernateInheritanceSubclass3a;
215 if (!this.__hibernateInheritanceSubclass3aSet)
216 {
217 // hibernateInheritanceSubclass has no pre constraints
218 hibernateInheritanceSubclass3a = handleIsHibernateInheritanceSubclass();
219 // hibernateInheritanceSubclass has no post constraints
220 this.__hibernateInheritanceSubclass3a = hibernateInheritanceSubclass3a;
221 if (isMetafacadePropertyCachingEnabled())
222 {
223 this.__hibernateInheritanceSubclass3aSet = true;
224 }
225 }
226 return hibernateInheritanceSubclass3a;
227 }
228
229 /**
230 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isHibernateInheritanceInterface()
231 * @return boolean
232 */
233 protected abstract boolean handleIsHibernateInheritanceInterface();
234
235 private boolean __hibernateInheritanceInterface4a;
236 private boolean __hibernateInheritanceInterface4aSet = false;
237
238 /**
239 * Return true if the hibernate inheritance strategy as specified by the tagged value
240 * andromda_inheritance_strategy is defined as interface.
241 * @return (boolean)handleIsHibernateInheritanceInterface()
242 */
243 public final boolean isHibernateInheritanceInterface()
244 {
245 boolean hibernateInheritanceInterface4a = this.__hibernateInheritanceInterface4a;
246 if (!this.__hibernateInheritanceInterface4aSet)
247 {
248 // hibernateInheritanceInterface has no pre constraints
249 hibernateInheritanceInterface4a = handleIsHibernateInheritanceInterface();
250 // hibernateInheritanceInterface has no post constraints
251 this.__hibernateInheritanceInterface4a = hibernateInheritanceInterface4a;
252 if (isMetafacadePropertyCachingEnabled())
253 {
254 this.__hibernateInheritanceInterface4aSet = true;
255 }
256 }
257 return hibernateInheritanceInterface4a;
258 }
259
260 /**
261 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateInheritanceStrategy()
262 * @return String
263 */
264 protected abstract String handleGetHibernateInheritanceStrategy();
265
266 private String __hibernateInheritanceStrategy5a;
267 private boolean __hibernateInheritanceStrategy5aSet = false;
268
269 /**
270 * Return the value of andromda.hibernate.inheritance tagged value.
271 * @return (String)handleGetHibernateInheritanceStrategy()
272 */
273 public final String getHibernateInheritanceStrategy()
274 {
275 String hibernateInheritanceStrategy5a = this.__hibernateInheritanceStrategy5a;
276 if (!this.__hibernateInheritanceStrategy5aSet)
277 {
278 // hibernateInheritanceStrategy has no pre constraints
279 hibernateInheritanceStrategy5a = handleGetHibernateInheritanceStrategy();
280 // hibernateInheritanceStrategy has no post constraints
281 this.__hibernateInheritanceStrategy5a = hibernateInheritanceStrategy5a;
282 if (isMetafacadePropertyCachingEnabled())
283 {
284 this.__hibernateInheritanceStrategy5aSet = true;
285 }
286 }
287 return hibernateInheritanceStrategy5a;
288 }
289
290 /**
291 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateCacheType()
292 * @return String
293 */
294 protected abstract String handleGetHibernateCacheType();
295
296 private String __hibernateCacheType6a;
297 private boolean __hibernateCacheType6aSet = false;
298
299 /**
300 * Cache policy for the entity. Posible values are read-write, nonstrict-read-write, read-only
301 * @return (String)handleGetHibernateCacheType()
302 */
303 public final String getHibernateCacheType()
304 {
305 String hibernateCacheType6a = this.__hibernateCacheType6a;
306 if (!this.__hibernateCacheType6aSet)
307 {
308 // hibernateCacheType has no pre constraints
309 hibernateCacheType6a = handleGetHibernateCacheType();
310 // hibernateCacheType has no post constraints
311 this.__hibernateCacheType6a = hibernateCacheType6a;
312 if (isMetafacadePropertyCachingEnabled())
313 {
314 this.__hibernateCacheType6aSet = true;
315 }
316 }
317 return hibernateCacheType6a;
318 }
319
320 /**
321 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getFullyQualifiedEntityName()
322 * @return String
323 */
324 protected abstract String handleGetFullyQualifiedEntityName();
325
326 private String __fullyQualifiedEntityName7a;
327 private boolean __fullyQualifiedEntityName7aSet = false;
328
329 /**
330 * TODO: Model Documentation for
331 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.fullyQualifiedEntityName
332 * @return (String)handleGetFullyQualifiedEntityName()
333 */
334 public final String getFullyQualifiedEntityName()
335 {
336 String fullyQualifiedEntityName7a = this.__fullyQualifiedEntityName7a;
337 if (!this.__fullyQualifiedEntityName7aSet)
338 {
339 // fullyQualifiedEntityName has no pre constraints
340 fullyQualifiedEntityName7a = handleGetFullyQualifiedEntityName();
341 // fullyQualifiedEntityName has no post constraints
342 this.__fullyQualifiedEntityName7a = fullyQualifiedEntityName7a;
343 if (isMetafacadePropertyCachingEnabled())
344 {
345 this.__fullyQualifiedEntityName7aSet = true;
346 }
347 }
348 return fullyQualifiedEntityName7a;
349 }
350
351 /**
352 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getFullyQualifiedEntityImplementationName()
353 * @return String
354 */
355 protected abstract String handleGetFullyQualifiedEntityImplementationName();
356
357 private String __fullyQualifiedEntityImplementationName8a;
358 private boolean __fullyQualifiedEntityImplementationName8aSet = false;
359
360 /**
361 * TODO: Model Documentation for
362 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.fullyQualifiedEntityImplementationName
363 * @return (String)handleGetFullyQualifiedEntityImplementationName()
364 */
365 public final String getFullyQualifiedEntityImplementationName()
366 {
367 String fullyQualifiedEntityImplementationName8a = this.__fullyQualifiedEntityImplementationName8a;
368 if (!this.__fullyQualifiedEntityImplementationName8aSet)
369 {
370 // fullyQualifiedEntityImplementationName has no pre constraints
371 fullyQualifiedEntityImplementationName8a = handleGetFullyQualifiedEntityImplementationName();
372 // fullyQualifiedEntityImplementationName has no post constraints
373 this.__fullyQualifiedEntityImplementationName8a = fullyQualifiedEntityImplementationName8a;
374 if (isMetafacadePropertyCachingEnabled())
375 {
376 this.__fullyQualifiedEntityImplementationName8aSet = true;
377 }
378 }
379 return fullyQualifiedEntityImplementationName8a;
380 }
381
382 /**
383 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateDefaultCascade()
384 * @return String
385 */
386 protected abstract String handleGetHibernateDefaultCascade();
387
388 private String __hibernateDefaultCascade9a;
389 private boolean __hibernateDefaultCascade9aSet = false;
390
391 /**
392 * TODO: Model Documentation for
393 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.hibernateDefaultCascade
394 * @return (String)handleGetHibernateDefaultCascade()
395 */
396 public final String getHibernateDefaultCascade()
397 {
398 String hibernateDefaultCascade9a = this.__hibernateDefaultCascade9a;
399 if (!this.__hibernateDefaultCascade9aSet)
400 {
401 // hibernateDefaultCascade has no pre constraints
402 hibernateDefaultCascade9a = handleGetHibernateDefaultCascade();
403 // hibernateDefaultCascade has no post constraints
404 this.__hibernateDefaultCascade9a = hibernateDefaultCascade9a;
405 if (isMetafacadePropertyCachingEnabled())
406 {
407 this.__hibernateDefaultCascade9aSet = true;
408 }
409 }
410 return hibernateDefaultCascade9a;
411 }
412
413 /**
414 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateGeneratorClass()
415 * @return String
416 */
417 protected abstract String handleGetHibernateGeneratorClass();
418
419 private String __hibernateGeneratorClass10a;
420 private boolean __hibernateGeneratorClass10aSet = false;
421
422 /**
423 * TODO: Model Documentation for
424 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.hibernateGeneratorClass
425 * @return (String)handleGetHibernateGeneratorClass()
426 */
427 public final String getHibernateGeneratorClass()
428 {
429 String hibernateGeneratorClass10a = this.__hibernateGeneratorClass10a;
430 if (!this.__hibernateGeneratorClass10aSet)
431 {
432 // hibernateGeneratorClass has no pre constraints
433 hibernateGeneratorClass10a = handleGetHibernateGeneratorClass();
434 // hibernateGeneratorClass has no post constraints
435 this.__hibernateGeneratorClass10a = hibernateGeneratorClass10a;
436 if (isMetafacadePropertyCachingEnabled())
437 {
438 this.__hibernateGeneratorClass10aSet = true;
439 }
440 }
441 return hibernateGeneratorClass10a;
442 }
443
444 /**
445 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isForeignHibernateGeneratorClass()
446 * @return boolean
447 */
448 protected abstract boolean handleIsForeignHibernateGeneratorClass();
449
450 private boolean __foreignHibernateGeneratorClass11a;
451 private boolean __foreignHibernateGeneratorClass11aSet = false;
452
453 /**
454 * Indicates whether or not hibernate generator class for this SpringEntity is foreign or not.
455 * @return (boolean)handleIsForeignHibernateGeneratorClass()
456 */
457 public final boolean isForeignHibernateGeneratorClass()
458 {
459 boolean foreignHibernateGeneratorClass11a = this.__foreignHibernateGeneratorClass11a;
460 if (!this.__foreignHibernateGeneratorClass11aSet)
461 {
462 // foreignHibernateGeneratorClass has no pre constraints
463 foreignHibernateGeneratorClass11a = handleIsForeignHibernateGeneratorClass();
464 // foreignHibernateGeneratorClass has no post constraints
465 this.__foreignHibernateGeneratorClass11a = foreignHibernateGeneratorClass11a;
466 if (isMetafacadePropertyCachingEnabled())
467 {
468 this.__foreignHibernateGeneratorClass11aSet = true;
469 }
470 }
471 return foreignHibernateGeneratorClass11a;
472 }
473
474 /**
475 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateDiscriminatorColumn()
476 * @return String
477 */
478 protected abstract String handleGetHibernateDiscriminatorColumn();
479
480 private String __hibernateDiscriminatorColumn12a;
481 private boolean __hibernateDiscriminatorColumn12aSet = false;
482
483 /**
484 * The name of the discriminator column. Default is class.
485 * @return (String)handleGetHibernateDiscriminatorColumn()
486 */
487 public final String getHibernateDiscriminatorColumn()
488 {
489 String hibernateDiscriminatorColumn12a = this.__hibernateDiscriminatorColumn12a;
490 if (!this.__hibernateDiscriminatorColumn12aSet)
491 {
492 // hibernateDiscriminatorColumn has no pre constraints
493 hibernateDiscriminatorColumn12a = handleGetHibernateDiscriminatorColumn();
494 // hibernateDiscriminatorColumn has no post constraints
495 this.__hibernateDiscriminatorColumn12a = hibernateDiscriminatorColumn12a;
496 if (isMetafacadePropertyCachingEnabled())
497 {
498 this.__hibernateDiscriminatorColumn12aSet = true;
499 }
500 }
501 return hibernateDiscriminatorColumn12a;
502 }
503
504 /**
505 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateDiscriminatorType()
506 * @return String
507 */
508 protected abstract String handleGetHibernateDiscriminatorType();
509
510 private String __hibernateDiscriminatorType13a;
511 private boolean __hibernateDiscriminatorType13aSet = false;
512
513 /**
514 * The type of the hibernate discriminator column. Default is string.
515 * @return (String)handleGetHibernateDiscriminatorType()
516 */
517 public final String getHibernateDiscriminatorType()
518 {
519 String hibernateDiscriminatorType13a = this.__hibernateDiscriminatorType13a;
520 if (!this.__hibernateDiscriminatorType13aSet)
521 {
522 // hibernateDiscriminatorType has no pre constraints
523 hibernateDiscriminatorType13a = handleGetHibernateDiscriminatorType();
524 // hibernateDiscriminatorType has no post constraints
525 this.__hibernateDiscriminatorType13a = hibernateDiscriminatorType13a;
526 if (isMetafacadePropertyCachingEnabled())
527 {
528 this.__hibernateDiscriminatorType13aSet = true;
529 }
530 }
531 return hibernateDiscriminatorType13a;
532 }
533
534 /**
535 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateDiscriminatorLength()
536 * @return int
537 */
538 protected abstract int handleGetHibernateDiscriminatorLength();
539
540 private int __hibernateDiscriminatorLength14a;
541 private boolean __hibernateDiscriminatorLength14aSet = false;
542
543 /**
544 * The standard length of a discriminator value. Default is 1.
545 * @return (int)handleGetHibernateDiscriminatorLength()
546 */
547 public final int getHibernateDiscriminatorLength()
548 {
549 int hibernateDiscriminatorLength14a = this.__hibernateDiscriminatorLength14a;
550 if (!this.__hibernateDiscriminatorLength14aSet)
551 {
552 // hibernateDiscriminatorLength has no pre constraints
553 hibernateDiscriminatorLength14a = handleGetHibernateDiscriminatorLength();
554 // hibernateDiscriminatorLength has no post constraints
555 this.__hibernateDiscriminatorLength14a = hibernateDiscriminatorLength14a;
556 if (isMetafacadePropertyCachingEnabled())
557 {
558 this.__hibernateDiscriminatorLength14aSet = true;
559 }
560 }
561 return hibernateDiscriminatorLength14a;
562 }
563
564 /**
565 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getEntityName()
566 * @return String
567 */
568 protected abstract String handleGetEntityName();
569
570 private String __entityName15a;
571 private boolean __entityName15aSet = false;
572
573 /**
574 * The name used for the hibernate entity.
575 * @return (String)handleGetEntityName()
576 */
577 public final String getEntityName()
578 {
579 String entityName15a = this.__entityName15a;
580 if (!this.__entityName15aSet)
581 {
582 // entityName has no pre constraints
583 entityName15a = handleGetEntityName();
584 // entityName has no post constraints
585 this.__entityName15a = entityName15a;
586 if (isMetafacadePropertyCachingEnabled())
587 {
588 this.__entityName15aSet = true;
589 }
590 }
591 return entityName15a;
592 }
593
594 /**
595 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getEntityImplementationName()
596 * @return String
597 */
598 protected abstract String handleGetEntityImplementationName();
599
600 private String __entityImplementationName16a;
601 private boolean __entityImplementationName16aSet = false;
602
603 /**
604 * The name of the implementation class.
605 * @return (String)handleGetEntityImplementationName()
606 */
607 public final String getEntityImplementationName()
608 {
609 String entityImplementationName16a = this.__entityImplementationName16a;
610 if (!this.__entityImplementationName16aSet)
611 {
612 // entityImplementationName has no pre constraints
613 entityImplementationName16a = handleGetEntityImplementationName();
614 // entityImplementationName has no post constraints
615 this.__entityImplementationName16a = entityImplementationName16a;
616 if (isMetafacadePropertyCachingEnabled())
617 {
618 this.__entityImplementationName16aSet = true;
619 }
620 }
621 return entityImplementationName16a;
622 }
623
624 /**
625 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isBusinessOperationsPresent()
626 * @return boolean
627 */
628 protected abstract boolean handleIsBusinessOperationsPresent();
629
630 private boolean __businessOperationsPresent17a;
631 private boolean __businessOperationsPresent17aSet = false;
632
633 /**
634 * Indicates whether or not any entity operations are present.
635 * @return (boolean)handleIsBusinessOperationsPresent()
636 */
637 public final boolean isBusinessOperationsPresent()
638 {
639 boolean businessOperationsPresent17a = this.__businessOperationsPresent17a;
640 if (!this.__businessOperationsPresent17aSet)
641 {
642 // businessOperationsPresent has no pre constraints
643 businessOperationsPresent17a = handleIsBusinessOperationsPresent();
644 // businessOperationsPresent has no post constraints
645 this.__businessOperationsPresent17a = businessOperationsPresent17a;
646 if (isMetafacadePropertyCachingEnabled())
647 {
648 this.__businessOperationsPresent17aSet = true;
649 }
650 }
651 return businessOperationsPresent17a;
652 }
653
654 /**
655 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isHibernateProxy()
656 * @return boolean
657 */
658 protected abstract boolean handleIsHibernateProxy();
659
660 private boolean __hibernateProxy18a;
661 private boolean __hibernateProxy18aSet = false;
662
663 /**
664 * TODO: Model Documentation for
665 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.hibernateProxy
666 * @return (boolean)handleIsHibernateProxy()
667 */
668 public final boolean isHibernateProxy()
669 {
670 boolean hibernateProxy18a = this.__hibernateProxy18a;
671 if (!this.__hibernateProxy18aSet)
672 {
673 // hibernateProxy has no pre constraints
674 hibernateProxy18a = handleIsHibernateProxy();
675 // hibernateProxy has no post constraints
676 this.__hibernateProxy18a = hibernateProxy18a;
677 if (isMetafacadePropertyCachingEnabled())
678 {
679 this.__hibernateProxy18aSet = true;
680 }
681 }
682 return hibernateProxy18a;
683 }
684
685 /**
686 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getEhCacheMaxElementsInMemory()
687 * @return int
688 */
689 protected abstract int handleGetEhCacheMaxElementsInMemory();
690
691 private int __ehCacheMaxElementsInMemory19a;
692 private boolean __ehCacheMaxElementsInMemory19aSet = false;
693
694 /**
695 * EhCache property. Defines the maximum number of objects that will be created in memory.
696 * @return (int)handleGetEhCacheMaxElementsInMemory()
697 */
698 public final int getEhCacheMaxElementsInMemory()
699 {
700 int ehCacheMaxElementsInMemory19a = this.__ehCacheMaxElementsInMemory19a;
701 if (!this.__ehCacheMaxElementsInMemory19aSet)
702 {
703 // ehCacheMaxElementsInMemory has no pre constraints
704 ehCacheMaxElementsInMemory19a = handleGetEhCacheMaxElementsInMemory();
705 // ehCacheMaxElementsInMemory has no post constraints
706 this.__ehCacheMaxElementsInMemory19a = ehCacheMaxElementsInMemory19a;
707 if (isMetafacadePropertyCachingEnabled())
708 {
709 this.__ehCacheMaxElementsInMemory19aSet = true;
710 }
711 }
712 return ehCacheMaxElementsInMemory19a;
713 }
714
715 /**
716 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isEhCacheEternal()
717 * @return boolean
718 */
719 protected abstract boolean handleIsEhCacheEternal();
720
721 private boolean __ehCacheEternal20a;
722 private boolean __ehCacheEternal20aSet = false;
723
724 /**
725 * EhCache property. Defines if elements are eternal.
726 * @return (boolean)handleIsEhCacheEternal()
727 */
728 public final boolean isEhCacheEternal()
729 {
730 boolean ehCacheEternal20a = this.__ehCacheEternal20a;
731 if (!this.__ehCacheEternal20aSet)
732 {
733 // ehCacheEternal has no pre constraints
734 ehCacheEternal20a = handleIsEhCacheEternal();
735 // ehCacheEternal has no post constraints
736 this.__ehCacheEternal20a = ehCacheEternal20a;
737 if (isMetafacadePropertyCachingEnabled())
738 {
739 this.__ehCacheEternal20aSet = true;
740 }
741 }
742 return ehCacheEternal20a;
743 }
744
745 /**
746 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getEhCacheTimeToIdleSeconds()
747 * @return int
748 */
749 protected abstract int handleGetEhCacheTimeToIdleSeconds();
750
751 private int __ehCacheTimeToIdleSeconds21a;
752 private boolean __ehCacheTimeToIdleSeconds21aSet = false;
753
754 /**
755 * EhCache property. Defines the time to idle for an element before it expires.
756 * @return (int)handleGetEhCacheTimeToIdleSeconds()
757 */
758 public final int getEhCacheTimeToIdleSeconds()
759 {
760 int ehCacheTimeToIdleSeconds21a = this.__ehCacheTimeToIdleSeconds21a;
761 if (!this.__ehCacheTimeToIdleSeconds21aSet)
762 {
763 // ehCacheTimeToIdleSeconds has no pre constraints
764 ehCacheTimeToIdleSeconds21a = handleGetEhCacheTimeToIdleSeconds();
765 // ehCacheTimeToIdleSeconds has no post constraints
766 this.__ehCacheTimeToIdleSeconds21a = ehCacheTimeToIdleSeconds21a;
767 if (isMetafacadePropertyCachingEnabled())
768 {
769 this.__ehCacheTimeToIdleSeconds21aSet = true;
770 }
771 }
772 return ehCacheTimeToIdleSeconds21a;
773 }
774
775 /**
776 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getEhCacheTimeToLiveSeconds()
777 * @return int
778 */
779 protected abstract int handleGetEhCacheTimeToLiveSeconds();
780
781 private int __ehCacheTimeToLiveSeconds22a;
782 private boolean __ehCacheTimeToLiveSeconds22aSet = false;
783
784 /**
785 * EhCache property. Defines the time to live for an element before it expires.
786 * @return (int)handleGetEhCacheTimeToLiveSeconds()
787 */
788 public final int getEhCacheTimeToLiveSeconds()
789 {
790 int ehCacheTimeToLiveSeconds22a = this.__ehCacheTimeToLiveSeconds22a;
791 if (!this.__ehCacheTimeToLiveSeconds22aSet)
792 {
793 // ehCacheTimeToLiveSeconds has no pre constraints
794 ehCacheTimeToLiveSeconds22a = handleGetEhCacheTimeToLiveSeconds();
795 // ehCacheTimeToLiveSeconds has no post constraints
796 this.__ehCacheTimeToLiveSeconds22a = ehCacheTimeToLiveSeconds22a;
797 if (isMetafacadePropertyCachingEnabled())
798 {
799 this.__ehCacheTimeToLiveSeconds22aSet = true;
800 }
801 }
802 return ehCacheTimeToLiveSeconds22a;
803 }
804
805 /**
806 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isEhCacheOverflowToDisk()
807 * @return boolean
808 */
809 protected abstract boolean handleIsEhCacheOverflowToDisk();
810
811 private boolean __ehCacheOverflowToDisk23a;
812 private boolean __ehCacheOverflowToDisk23aSet = false;
813
814 /**
815 * EhCache property. Defines if elements can overflow to disk
816 * @return (boolean)handleIsEhCacheOverflowToDisk()
817 */
818 public final boolean isEhCacheOverflowToDisk()
819 {
820 boolean ehCacheOverflowToDisk23a = this.__ehCacheOverflowToDisk23a;
821 if (!this.__ehCacheOverflowToDisk23aSet)
822 {
823 // ehCacheOverflowToDisk has no pre constraints
824 ehCacheOverflowToDisk23a = handleIsEhCacheOverflowToDisk();
825 // ehCacheOverflowToDisk has no post constraints
826 this.__ehCacheOverflowToDisk23a = ehCacheOverflowToDisk23a;
827 if (isMetafacadePropertyCachingEnabled())
828 {
829 this.__ehCacheOverflowToDisk23aSet = true;
830 }
831 }
832 return ehCacheOverflowToDisk23a;
833 }
834
835 /**
836 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isSequenceHibernateGeneratorClass()
837 * @return boolean
838 */
839 protected abstract boolean handleIsSequenceHibernateGeneratorClass();
840
841 private boolean __sequenceHibernateGeneratorClass24a;
842 private boolean __sequenceHibernateGeneratorClass24aSet = false;
843
844 /**
845 * Indicates whether or not the hibernate generator class is specified as "sequence".
846 * @return (boolean)handleIsSequenceHibernateGeneratorClass()
847 */
848 public final boolean isSequenceHibernateGeneratorClass()
849 {
850 boolean sequenceHibernateGeneratorClass24a = this.__sequenceHibernateGeneratorClass24a;
851 if (!this.__sequenceHibernateGeneratorClass24aSet)
852 {
853 // sequenceHibernateGeneratorClass has no pre constraints
854 sequenceHibernateGeneratorClass24a = handleIsSequenceHibernateGeneratorClass();
855 // sequenceHibernateGeneratorClass has no post constraints
856 this.__sequenceHibernateGeneratorClass24a = sequenceHibernateGeneratorClass24a;
857 if (isMetafacadePropertyCachingEnabled())
858 {
859 this.__sequenceHibernateGeneratorClass24aSet = true;
860 }
861 }
862 return sequenceHibernateGeneratorClass24a;
863 }
864
865 /**
866 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isTableRequired()
867 * @return boolean
868 */
869 protected abstract boolean handleIsTableRequired();
870
871 private boolean __tableRequired25a;
872 private boolean __tableRequired25aSet = false;
873
874 /**
875 * Indicates if a table is required for this entity (sometimes it will not be depending on the
876 * inheritance strategy used).
877 * @return (boolean)handleIsTableRequired()
878 */
879 public final boolean isTableRequired()
880 {
881 boolean tableRequired25a = this.__tableRequired25a;
882 if (!this.__tableRequired25aSet)
883 {
884 // tableRequired has no pre constraints
885 tableRequired25a = handleIsTableRequired();
886 // tableRequired has no post constraints
887 this.__tableRequired25a = tableRequired25a;
888 if (isMetafacadePropertyCachingEnabled())
889 {
890 this.__tableRequired25aSet = true;
891 }
892 }
893 return tableRequired25a;
894 }
895
896 /**
897 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getMappingClassName()
898 * @return String
899 */
900 protected abstract String handleGetMappingClassName();
901
902 private String __mappingClassName26a;
903 private boolean __mappingClassName26aSet = false;
904
905 /**
906 * Returns the mapping class name to use (this is will be 'class', 'subclass', etc) depending on
907 * whether the entity is a specialization and what type of inheritance strategy is employed.
908 * @return (String)handleGetMappingClassName()
909 */
910 public final String getMappingClassName()
911 {
912 String mappingClassName26a = this.__mappingClassName26a;
913 if (!this.__mappingClassName26aSet)
914 {
915 // mappingClassName has no pre constraints
916 mappingClassName26a = handleGetMappingClassName();
917 // mappingClassName has no post constraints
918 this.__mappingClassName26a = mappingClassName26a;
919 if (isMetafacadePropertyCachingEnabled())
920 {
921 this.__mappingClassName26aSet = true;
922 }
923 }
924 return mappingClassName26a;
925 }
926
927 /**
928 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getSubclassKeyColumn()
929 * @return String
930 */
931 protected abstract String handleGetSubclassKeyColumn();
932
933 private String __subclassKeyColumn27a;
934 private boolean __subclassKeyColumn27aSet = false;
935
936 /**
937 * Gets the name of the key column if the inheritance strategy is "subclass". If the strategy
938 * is not "subclass" this returns null.
939 * @return (String)handleGetSubclassKeyColumn()
940 */
941 public final String getSubclassKeyColumn()
942 {
943 String subclassKeyColumn27a = this.__subclassKeyColumn27a;
944 if (!this.__subclassKeyColumn27aSet)
945 {
946 // subclassKeyColumn has no pre constraints
947 subclassKeyColumn27a = handleGetSubclassKeyColumn();
948 // subclassKeyColumn has no post constraints
949 this.__subclassKeyColumn27a = subclassKeyColumn27a;
950 if (isMetafacadePropertyCachingEnabled())
951 {
952 this.__subclassKeyColumn27aSet = true;
953 }
954 }
955 return subclassKeyColumn27a;
956 }
957
958 /**
959 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isRequiresMapping()
960 * @return boolean
961 */
962 protected abstract boolean handleIsRequiresMapping();
963
964 private boolean __requiresMapping28a;
965 private boolean __requiresMapping28aSet = false;
966
967 /**
968 * Indicates if this entity requires a mapping of its own.
969 * @return (boolean)handleIsRequiresMapping()
970 */
971 public final boolean isRequiresMapping()
972 {
973 boolean requiresMapping28a = this.__requiresMapping28a;
974 if (!this.__requiresMapping28aSet)
975 {
976 // requiresMapping has no pre constraints
977 requiresMapping28a = handleIsRequiresMapping();
978 // requiresMapping has no post constraints
979 this.__requiresMapping28a = requiresMapping28a;
980 if (isMetafacadePropertyCachingEnabled())
981 {
982 this.__requiresMapping28aSet = true;
983 }
984 }
985 return requiresMapping28a;
986 }
987
988 /**
989 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isRequiresSpecializationMapping()
990 * @return boolean
991 */
992 protected abstract boolean handleIsRequiresSpecializationMapping();
993
994 private boolean __requiresSpecializationMapping29a;
995 private boolean __requiresSpecializationMapping29aSet = false;
996
997 /**
998 * Indicates if the entity requires specialization mappng. This happens when the inheritance
999 * strategy is "subclass", or "class".
1000 * @return (boolean)handleIsRequiresSpecializationMapping()
1001 */
1002 public final boolean isRequiresSpecializationMapping()
1003 {
1004 boolean requiresSpecializationMapping29a = this.__requiresSpecializationMapping29a;
1005 if (!this.__requiresSpecializationMapping29aSet)
1006 {
1007 // requiresSpecializationMapping has no pre constraints
1008 requiresSpecializationMapping29a = handleIsRequiresSpecializationMapping();
1009 // requiresSpecializationMapping has no post constraints
1010 this.__requiresSpecializationMapping29a = requiresSpecializationMapping29a;
1011 if (isMetafacadePropertyCachingEnabled())
1012 {
1013 this.__requiresSpecializationMapping29aSet = true;
1014 }
1015 }
1016 return requiresSpecializationMapping29a;
1017 }
1018
1019 /**
1020 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isDynamicInsert()
1021 * @return boolean
1022 */
1023 protected abstract boolean handleIsDynamicInsert();
1024
1025 private boolean __dynamicInsert30a;
1026 private boolean __dynamicInsert30aSet = false;
1027
1028 /**
1029 * Specifies if hibernate dynamic-insert will be enabled / disabled for this entity
1030 * @return (boolean)handleIsDynamicInsert()
1031 */
1032 public final boolean isDynamicInsert()
1033 {
1034 boolean dynamicInsert30a = this.__dynamicInsert30a;
1035 if (!this.__dynamicInsert30aSet)
1036 {
1037 // dynamicInsert has no pre constraints
1038 dynamicInsert30a = handleIsDynamicInsert();
1039 // dynamicInsert has no post constraints
1040 this.__dynamicInsert30a = dynamicInsert30a;
1041 if (isMetafacadePropertyCachingEnabled())
1042 {
1043 this.__dynamicInsert30aSet = true;
1044 }
1045 }
1046 return dynamicInsert30a;
1047 }
1048
1049 /**
1050 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isDynamicUpdate()
1051 * @return boolean
1052 */
1053 protected abstract boolean handleIsDynamicUpdate();
1054
1055 private boolean __dynamicUpdate31a;
1056 private boolean __dynamicUpdate31aSet = false;
1057
1058 /**
1059 * Specifies if hibernate dynamic-update will be enabled / disabled for this entity
1060 * @return (boolean)handleIsDynamicUpdate()
1061 */
1062 public final boolean isDynamicUpdate()
1063 {
1064 boolean dynamicUpdate31a = this.__dynamicUpdate31a;
1065 if (!this.__dynamicUpdate31aSet)
1066 {
1067 // dynamicUpdate has no pre constraints
1068 dynamicUpdate31a = handleIsDynamicUpdate();
1069 // dynamicUpdate has no post constraints
1070 this.__dynamicUpdate31a = dynamicUpdate31a;
1071 if (isMetafacadePropertyCachingEnabled())
1072 {
1073 this.__dynamicUpdate31aSet = true;
1074 }
1075 }
1076 return dynamicUpdate31a;
1077 }
1078
1079 /**
1080 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isMappingRequiresSuperProperties()
1081 * @return boolean
1082 */
1083 protected abstract boolean handleIsMappingRequiresSuperProperties();
1084
1085 private boolean __mappingRequiresSuperProperties32a;
1086 private boolean __mappingRequiresSuperProperties32aSet = false;
1087
1088 /**
1089 * Indicates whether or not the mapping for the the entity requires the properties of the super
1090 * entity to be included within the mapping. If this evalutes to true, then the properties of
1091 * this entity would be rendered into the specialization's mapping file.
1092 * @return (boolean)handleIsMappingRequiresSuperProperties()
1093 */
1094 public final boolean isMappingRequiresSuperProperties()
1095 {
1096 boolean mappingRequiresSuperProperties32a = this.__mappingRequiresSuperProperties32a;
1097 if (!this.__mappingRequiresSuperProperties32aSet)
1098 {
1099 // mappingRequiresSuperProperties has no pre constraints
1100 mappingRequiresSuperProperties32a = handleIsMappingRequiresSuperProperties();
1101 // mappingRequiresSuperProperties has no post constraints
1102 this.__mappingRequiresSuperProperties32a = mappingRequiresSuperProperties32a;
1103 if (isMetafacadePropertyCachingEnabled())
1104 {
1105 this.__mappingRequiresSuperProperties32aSet = true;
1106 }
1107 }
1108 return mappingRequiresSuperProperties32a;
1109 }
1110
1111 /**
1112 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateVersionProperty()
1113 * @return String
1114 */
1115 protected abstract String handleGetHibernateVersionProperty();
1116
1117 private String __hibernateVersionProperty33a;
1118 private boolean __hibernateVersionProperty33aSet = false;
1119
1120 /**
1121 * Stores the value of the Hibernate version property.
1122 * @return (String)handleGetHibernateVersionProperty()
1123 */
1124 public final String getHibernateVersionProperty()
1125 {
1126 String hibernateVersionProperty33a = this.__hibernateVersionProperty33a;
1127 if (!this.__hibernateVersionProperty33aSet)
1128 {
1129 // hibernateVersionProperty has no pre constraints
1130 hibernateVersionProperty33a = handleGetHibernateVersionProperty();
1131 // hibernateVersionProperty has no post constraints
1132 this.__hibernateVersionProperty33a = hibernateVersionProperty33a;
1133 if (isMetafacadePropertyCachingEnabled())
1134 {
1135 this.__hibernateVersionProperty33aSet = true;
1136 }
1137 }
1138 return hibernateVersionProperty33a;
1139 }
1140
1141 /**
1142 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isHibernateInheritanceUnionSubClass()
1143 * @return boolean
1144 */
1145 protected abstract boolean handleIsHibernateInheritanceUnionSubClass();
1146
1147 private boolean __hibernateInheritanceUnionSubClass34a;
1148 private boolean __hibernateInheritanceUnionSubClass34aSet = false;
1149
1150 /**
1151 * TODO: Model Documentation for
1152 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.hibernateInheritanceUnionSubClass
1153 * @return (boolean)handleIsHibernateInheritanceUnionSubClass()
1154 */
1155 public final boolean isHibernateInheritanceUnionSubClass()
1156 {
1157 boolean hibernateInheritanceUnionSubClass34a = this.__hibernateInheritanceUnionSubClass34a;
1158 if (!this.__hibernateInheritanceUnionSubClass34aSet)
1159 {
1160 // hibernateInheritanceUnionSubClass has no pre constraints
1161 hibernateInheritanceUnionSubClass34a = handleIsHibernateInheritanceUnionSubClass();
1162 // hibernateInheritanceUnionSubClass has no post constraints
1163 this.__hibernateInheritanceUnionSubClass34a = hibernateInheritanceUnionSubClass34a;
1164 if (isMetafacadePropertyCachingEnabled())
1165 {
1166 this.__hibernateInheritanceUnionSubClass34aSet = true;
1167 }
1168 }
1169 return hibernateInheritanceUnionSubClass34a;
1170 }
1171
1172 /**
1173 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isLazy()
1174 * @return boolean
1175 */
1176 protected abstract boolean handleIsLazy();
1177
1178 private boolean __lazy35a;
1179 private boolean __lazy35aSet = false;
1180
1181 /**
1182 * Specifies whether the entity should be loaded lazily.
1183 * @return (boolean)handleIsLazy()
1184 */
1185 public final boolean isLazy()
1186 {
1187 boolean lazy35a = this.__lazy35a;
1188 if (!this.__lazy35aSet)
1189 {
1190 // lazy has no pre constraints
1191 lazy35a = handleIsLazy();
1192 // lazy has no post constraints
1193 this.__lazy35a = lazy35a;
1194 if (isMetafacadePropertyCachingEnabled())
1195 {
1196 this.__lazy35aSet = true;
1197 }
1198 }
1199 return lazy35a;
1200 }
1201
1202 /**
1203 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getXmlTagName()
1204 * @return String
1205 */
1206 protected abstract String handleGetXmlTagName();
1207
1208 private String __xmlTagName36a;
1209 private boolean __xmlTagName36aSet = false;
1210
1211 /**
1212 * TODO: Model Documentation for
1213 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.xmlTagName
1214 * @return (String)handleGetXmlTagName()
1215 */
1216 public final String getXmlTagName()
1217 {
1218 String xmlTagName36a = this.__xmlTagName36a;
1219 if (!this.__xmlTagName36aSet)
1220 {
1221 // xmlTagName has no pre constraints
1222 xmlTagName36a = handleGetXmlTagName();
1223 // xmlTagName has no post constraints
1224 this.__xmlTagName36a = xmlTagName36a;
1225 if (isMetafacadePropertyCachingEnabled())
1226 {
1227 this.__xmlTagName36aSet = true;
1228 }
1229 }
1230 return xmlTagName36a;
1231 }
1232
1233 /**
1234 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getVersion()
1235 * @return int
1236 */
1237 protected abstract int handleGetVersion();
1238
1239 private int __version37a;
1240 private boolean __version37aSet = false;
1241
1242 /**
1243 * TODO: Model Documentation for
1244 * org.andromda.cartridges.hibernate.metafacades.HibernateEntity.version
1245 * @return (int)handleGetVersion()
1246 */
1247 public final int getVersion()
1248 {
1249 int version37a = this.__version37a;
1250 if (!this.__version37aSet)
1251 {
1252 // version has no pre constraints
1253 version37a = handleGetVersion();
1254 // version has no post constraints
1255 this.__version37a = version37a;
1256 if (isMetafacadePropertyCachingEnabled())
1257 {
1258 this.__version37aSet = true;
1259 }
1260 }
1261 return version37a;
1262 }
1263
1264 /**
1265 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#isHibernateCacheDistributed()
1266 * @return boolean
1267 */
1268 protected abstract boolean handleIsHibernateCacheDistributed();
1269
1270 private boolean __hibernateCacheDistributed38a;
1271 private boolean __hibernateCacheDistributed38aSet = false;
1272
1273 /**
1274 * Specifies whether the cache for this entity is to be distributed.
1275 * @return (boolean)handleIsHibernateCacheDistributed()
1276 */
1277 public final boolean isHibernateCacheDistributed()
1278 {
1279 boolean hibernateCacheDistributed38a = this.__hibernateCacheDistributed38a;
1280 if (!this.__hibernateCacheDistributed38aSet)
1281 {
1282 // hibernateCacheDistributed has no pre constraints
1283 hibernateCacheDistributed38a = handleIsHibernateCacheDistributed();
1284 // hibernateCacheDistributed has no post constraints
1285 this.__hibernateCacheDistributed38a = hibernateCacheDistributed38a;
1286 if (isMetafacadePropertyCachingEnabled())
1287 {
1288 this.__hibernateCacheDistributed38aSet = true;
1289 }
1290 }
1291 return hibernateCacheDistributed38a;
1292 }
1293
1294 /**
1295 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateDiscriminatorValue()
1296 * @return String
1297 */
1298 protected abstract String handleGetHibernateDiscriminatorValue();
1299
1300 private String __hibernateDiscriminatorValue39a;
1301 private boolean __hibernateDiscriminatorValue39aSet = false;
1302
1303 /**
1304 * The name of the discriminator value. Default is the name of the class
1305 * @return (String)handleGetHibernateDiscriminatorValue()
1306 */
1307 public final String getHibernateDiscriminatorValue()
1308 {
1309 String hibernateDiscriminatorValue39a = this.__hibernateDiscriminatorValue39a;
1310 if (!this.__hibernateDiscriminatorValue39aSet)
1311 {
1312 // hibernateDiscriminatorValue has no pre constraints
1313 hibernateDiscriminatorValue39a = handleGetHibernateDiscriminatorValue();
1314 // hibernateDiscriminatorValue has no post constraints
1315 this.__hibernateDiscriminatorValue39a = hibernateDiscriminatorValue39a;
1316 if (isMetafacadePropertyCachingEnabled())
1317 {
1318 this.__hibernateDiscriminatorValue39aSet = true;
1319 }
1320 }
1321 return hibernateDiscriminatorValue39a;
1322 }
1323
1324 /**
1325 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getHibernateVersionPropertySqlName()
1326 * @return String
1327 */
1328 protected abstract String handleGetHibernateVersionPropertySqlName();
1329
1330 private String __hibernateVersionPropertySqlName40a;
1331 private boolean __hibernateVersionPropertySqlName40aSet = false;
1332
1333 /**
1334 * The SQL name of the hibernate version property.
1335 * @return (String)handleGetHibernateVersionPropertySqlName()
1336 */
1337 public final String getHibernateVersionPropertySqlName()
1338 {
1339 String hibernateVersionPropertySqlName40a = this.__hibernateVersionPropertySqlName40a;
1340 if (!this.__hibernateVersionPropertySqlName40aSet)
1341 {
1342 // hibernateVersionPropertySqlName has no pre constraints
1343 hibernateVersionPropertySqlName40a = handleGetHibernateVersionPropertySqlName();
1344 // hibernateVersionPropertySqlName has no post constraints
1345 this.__hibernateVersionPropertySqlName40a = hibernateVersionPropertySqlName40a;
1346 if (isMetafacadePropertyCachingEnabled())
1347 {
1348 this.__hibernateVersionPropertySqlName40aSet = true;
1349 }
1350 }
1351 return hibernateVersionPropertySqlName40a;
1352 }
1353
1354 /**
1355 * @see org.andromda.cartridges.hibernate.metafacades.HibernateEntity#getSequenceName()
1356 * @return String
1357 */
1358 protected abstract String handleGetSequenceName();
1359
1360 private String __sequenceName41a;
1361 private boolean __sequenceName41aSet = false;
1362
1363 /**
1364 * Gets the sequence name.
1365 * @return (String)handleGetSequenceName()
1366 */
1367 public final String getSequenceName()
1368 {
1369 String sequenceName41a = this.__sequenceName41a;
1370 if (!this.__sequenceName41aSet)
1371 {
1372 // sequenceName has no pre constraints
1373 sequenceName41a = handleGetSequenceName();
1374 // sequenceName has no post constraints
1375 this.__sequenceName41a = sequenceName41a;
1376 if (isMetafacadePropertyCachingEnabled())
1377 {
1378 this.__sequenceName41aSet = true;
1379 }
1380 }
1381 return sequenceName41a;
1382 }
1383
1384 // ---------------- business methods ----------------------
1385
1386 /**
1387 * Method to be implemented in descendants
1388 * Return all the user defined operations for this entity. Used when leafImpl is true.
1389 * @return Collection
1390 */
1391 protected abstract Collection handleGetAllBusinessOperations();
1392
1393 /**
1394 * Return all the user defined operations for this entity. Used when leafImpl is true.
1395 * @return handleGetAllBusinessOperations()
1396 */
1397 public Collection getAllBusinessOperations()
1398 {
1399 // getAllBusinessOperations has no pre constraints
1400 Collection returnValue = handleGetAllBusinessOperations();
1401 // getAllBusinessOperations has no post constraints
1402 return returnValue;
1403 }
1404
1405 /**
1406 * @return true
1407 * @see Entity
1408 */
1409 public boolean isEntityMetaType()
1410 {
1411 return true;
1412 }
1413
1414 /**
1415 * @return true
1416 * @see ClassifierFacade
1417 */
1418 public boolean isClassifierFacadeMetaType()
1419 {
1420 return true;
1421 }
1422
1423 /**
1424 * @return true
1425 * @see GeneralizableElementFacade
1426 */
1427 public boolean isGeneralizableElementFacadeMetaType()
1428 {
1429 return true;
1430 }
1431
1432 /**
1433 * @return true
1434 * @see ModelElementFacade
1435 */
1436 public boolean isModelElementFacadeMetaType()
1437 {
1438 return true;
1439 }
1440
1441 // ----------- delegates to Entity ------------
1442 /**
1443 * Return the attribute which name matches the parameter
1444 * @see ClassifierFacade#findAttribute(String name)
1445 */
1446 public AttributeFacade findAttribute(String name)
1447 {
1448 return this.getSuperEntity().findAttribute(name);
1449 }
1450
1451 /**
1452 * Those abstraction dependencies for which this classifier is the client.
1453 * @see ClassifierFacade#getAbstractions()
1454 */
1455 public Collection<ClassifierFacade> getAbstractions()
1456 {
1457 return this.getSuperEntity().getAbstractions();
1458 }
1459
1460 /**
1461 * Lists all classes associated to this one and any ancestor classes (through generalization).
1462 * There will be no duplicates. The order of the elements is predictable.
1463 * @see ClassifierFacade#getAllAssociatedClasses()
1464 */
1465 public Collection<ClassifierFacade> getAllAssociatedClasses()
1466 {
1467 return this.getSuperEntity().getAllAssociatedClasses();
1468 }
1469
1470 /**
1471 * A collection containing all 'properties' of the classifier and its ancestors. Properties are
1472 * any attributes and navigable connecting association ends.
1473 * @see ClassifierFacade#getAllProperties()
1474 */
1475 public Collection<ModelElementFacade> getAllProperties()
1476 {
1477 return this.getSuperEntity().getAllProperties();
1478 }
1479
1480 /**
1481 * A collection containing all required and/or read-only 'properties' of the classifier and its
1482 * ancestors. Properties are any attributes and navigable connecting association ends.
1483 * @see ClassifierFacade#getAllRequiredConstructorParameters()
1484 */
1485 public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
1486 {
1487 return this.getSuperEntity().getAllRequiredConstructorParameters();
1488 }
1489
1490 /**
1491 * Gets the array type for this classifier. If this classifier already represents an array, it
1492 * just returns itself.
1493 * @see ClassifierFacade#getArray()
1494 */
1495 public ClassifierFacade getArray()
1496 {
1497 return this.getSuperEntity().getArray();
1498 }
1499
1500 /**
1501 * The name of the classifier as an array.
1502 * @see ClassifierFacade#getArrayName()
1503 */
1504 public String getArrayName()
1505 {
1506 return this.getSuperEntity().getArrayName();
1507 }
1508
1509 /**
1510 * Lists the classes associated to this one, there is no repitition of classes. The order of the
1511 * elements is predictable.
1512 * @see ClassifierFacade#getAssociatedClasses()
1513 */
1514 public Collection<ClassifierFacade> getAssociatedClasses()
1515 {
1516 return this.getSuperEntity().getAssociatedClasses();
1517 }
1518
1519 /**
1520 * Gets the association ends belonging to a classifier.
1521 * @see ClassifierFacade#getAssociationEnds()
1522 */
1523 public List<AssociationEndFacade> getAssociationEnds()
1524 {
1525 return this.getSuperEntity().getAssociationEnds();
1526 }
1527
1528 /**
1529 * Gets the attributes that belong to the classifier.
1530 * @see ClassifierFacade#getAttributes()
1531 */
1532 public List<AttributeFacade> getAttributes()
1533 {
1534 return this.getSuperEntity().getAttributes();
1535 }
1536
1537 /**
1538 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
1539 * hierarchy and gets the attributes from the super classes as well.
1540 * @see ClassifierFacade#getAttributes(boolean follow)
1541 */
1542 public List<AttributeFacade> getAttributes(boolean follow)
1543 {
1544 return this.getSuperEntity().getAttributes(follow);
1545 }
1546
1547 /**
1548 * The fully qualified name of the classifier as an array.
1549 * @see ClassifierFacade#getFullyQualifiedArrayName()
1550 */
1551 public String getFullyQualifiedArrayName()
1552 {
1553 return this.getSuperEntity().getFullyQualifiedArrayName();
1554 }
1555
1556 /**
1557 * Returns all those operations that could be implemented at this classifier's level. This means
1558 * the operations owned by this classifier as well as any realized interface's operations
1559 * (recursively) in case this classifier itself is not already an interface, or generalized when
1560 * this classifier is an interface.
1561 * @see ClassifierFacade#getImplementationOperations()
1562 */
1563 public Collection<OperationFacade> getImplementationOperations()
1564 {
1565 return this.getSuperEntity().getImplementationOperations();
1566 }
1567
1568 /**
1569 * A comma separated list of the fully qualified names of all implemented interfaces.
1570 * @see ClassifierFacade#getImplementedInterfaceList()
1571 */
1572 public String getImplementedInterfaceList()
1573 {
1574 return this.getSuperEntity().getImplementedInterfaceList();
1575 }
1576
1577 /**
1578 * Those attributes that are scoped to an instance of this class.
1579 * @see ClassifierFacade#getInstanceAttributes()
1580 */
1581 public Collection<AttributeFacade> getInstanceAttributes()
1582 {
1583 return this.getSuperEntity().getInstanceAttributes();
1584 }
1585
1586 /**
1587 * Those operations that are scoped to an instance of this class.
1588 * @see ClassifierFacade#getInstanceOperations()
1589 */
1590 public List<OperationFacade> getInstanceOperations()
1591 {
1592 return this.getSuperEntity().getInstanceOperations();
1593 }
1594
1595 /**
1596 * Those interfaces that are abstractions of this classifier, this basically means this
1597 * classifier realizes them.
1598 * @see ClassifierFacade#getInterfaceAbstractions()
1599 */
1600 public Collection<ClassifierFacade> getInterfaceAbstractions()
1601 {
1602 return this.getSuperEntity().getInterfaceAbstractions();
1603 }
1604
1605 /**
1606 * A String representing a new Constructor declaration for this classifier type to be used in a
1607 * Java environment.
1608 * @see ClassifierFacade#getJavaNewString()
1609 */
1610 public String getJavaNewString()
1611 {
1612 return this.getSuperEntity().getJavaNewString();
1613 }
1614
1615 /**
1616 * A String representing the null-value for this classifier type to be used in a Java
1617 * environment.
1618 * @see ClassifierFacade#getJavaNullString()
1619 */
1620 public String getJavaNullString()
1621 {
1622 return this.getSuperEntity().getJavaNullString();
1623 }
1624
1625 /**
1626 * The other ends of this classifier's association ends which are navigable.
1627 * @see ClassifierFacade#getNavigableConnectingEnds()
1628 */
1629 public Collection<AssociationEndFacade> getNavigableConnectingEnds()
1630 {
1631 return this.getSuperEntity().getNavigableConnectingEnds();
1632 }
1633
1634 /**
1635 * Get the other ends of this classifier's association ends which are navigable and if 'follow'
1636 * is true goes up the inheritance hierarchy and gets the super association ends as well.
1637 * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
1638 */
1639 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
1640 {
1641 return this.getSuperEntity().getNavigableConnectingEnds(follow);
1642 }
1643
1644 /**
1645 * Assuming that the classifier is an array, this will return the non array type of the
1646 * classifier from
1647 * the model. If the classifier is NOT an array, it will just return itself.
1648 * @see ClassifierFacade#getNonArray()
1649 */
1650 public ClassifierFacade getNonArray()
1651 {
1652 return this.getSuperEntity().getNonArray();
1653 }
1654
1655 /**
1656 * The attributes from this classifier in the form of an operation call (this example would be
1657 * in Java): '(String attributeOne, String attributeTwo). If there were no attributes on the
1658 * classifier, the result would be an empty '()'.
1659 * @see ClassifierFacade#getOperationCallFromAttributes()
1660 */
1661 public String getOperationCallFromAttributes()
1662 {
1663 return this.getSuperEntity().getOperationCallFromAttributes();
1664 }
1665
1666 /**
1667 * The operations owned by this classifier.
1668 * @see ClassifierFacade#getOperations()
1669 */
1670 public List<OperationFacade> getOperations()
1671 {
1672 return this.getSuperEntity().getOperations();
1673 }
1674
1675 /**
1676 * A collection containing all 'properties' of the classifier. Properties are any attributes
1677 * and navigable connecting association ends.
1678 * @see ClassifierFacade#getProperties()
1679 */
1680 public List<ModelElementFacade> getProperties()
1681 {
1682 return this.getSuperEntity().getProperties();
1683 }
1684
1685 /**
1686 * Gets all properties (attributes and navigable association ends) for the classifier and if
1687 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
1688 * classes as well.
1689 * @see ClassifierFacade#getProperties(boolean follow)
1690 */
1691 public List getProperties(boolean follow)
1692 {
1693 return this.getSuperEntity().getProperties(follow);
1694 }
1695
1696 /**
1697 * A collection containing all required and/or read-only 'properties' of the classifier.
1698 * Properties are any attributes and navigable connecting association ends.
1699 * @see ClassifierFacade#getRequiredConstructorParameters()
1700 */
1701 public Collection<ModelElementFacade> getRequiredConstructorParameters()
1702 {
1703 return this.getSuperEntity().getRequiredConstructorParameters();
1704 }
1705
1706 /**
1707 * Returns the serial version UID of the underlying model element.
1708 * @see ClassifierFacade#getSerialVersionUID()
1709 */
1710 public long getSerialVersionUID()
1711 {
1712 return this.getSuperEntity().getSerialVersionUID();
1713 }
1714
1715 /**
1716 * Those attributes that are scoped to the definition of this class.
1717 * @see ClassifierFacade#getStaticAttributes()
1718 */
1719 public Collection<AttributeFacade> getStaticAttributes()
1720 {
1721 return this.getSuperEntity().getStaticAttributes();
1722 }
1723
1724 /**
1725 * Those operations that are scoped to the definition of this class.
1726 * @see ClassifierFacade#getStaticOperations()
1727 */
1728 public List<OperationFacade> getStaticOperations()
1729 {
1730 return this.getSuperEntity().getStaticOperations();
1731 }
1732
1733 /**
1734 * This class' superclass, returns the generalization if it is a ClassifierFacade, null
1735 * otherwise.
1736 * @see ClassifierFacade#getSuperClass()
1737 */
1738 public ClassifierFacade getSuperClass()
1739 {
1740 return this.getSuperEntity().getSuperClass();
1741 }
1742
1743 /**
1744 * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
1745 * maps to 'Long'). If the classifier doesn't have a wrapper defined for it, this method will
1746 * return a null. Note that wrapper mappings must be defined for the namespace by defining the
1747 * 'wrapperMappingsUri', this property must point to the location of the mappings file which
1748 * maps the primitives to wrapper types.
1749 * @see ClassifierFacade#getWrapperName()
1750 */
1751 public String getWrapperName()
1752 {
1753 return this.getSuperEntity().getWrapperName();
1754 }
1755
1756 /**
1757 * Indicates if this classifier is 'abstract'.
1758 * @see ClassifierFacade#isAbstract()
1759 */
1760 public boolean isAbstract()
1761 {
1762 return this.getSuperEntity().isAbstract();
1763 }
1764
1765 /**
1766 * True if this classifier represents an array type. False otherwise.
1767 * @see ClassifierFacade#isArrayType()
1768 */
1769 public boolean isArrayType()
1770 {
1771 return this.getSuperEntity().isArrayType();
1772 }
1773
1774 /**
1775 * True if the ClassifierFacade is an AssociationClass.
1776 * @see ClassifierFacade#isAssociationClass()
1777 */
1778 public boolean isAssociationClass()
1779 {
1780 return this.getSuperEntity().isAssociationClass();
1781 }
1782
1783 /**
1784 * Returns true if this type represents a Blob type.
1785 * @see ClassifierFacade#isBlobType()
1786 */
1787 public boolean isBlobType()
1788 {
1789 return this.getSuperEntity().isBlobType();
1790 }
1791
1792 /**
1793 * Indicates if this type represents a boolean type or not.
1794 * @see ClassifierFacade#isBooleanType()
1795 */
1796 public boolean isBooleanType()
1797 {
1798 return this.getSuperEntity().isBooleanType();
1799 }
1800
1801 /**
1802 * Indicates if this type represents a char, Character, or java.lang.Character type or not.
1803 * @see ClassifierFacade#isCharacterType()
1804 */
1805 public boolean isCharacterType()
1806 {
1807 return this.getSuperEntity().isCharacterType();
1808 }
1809
1810 /**
1811 * Returns true if this type represents a Clob type.
1812 * @see ClassifierFacade#isClobType()
1813 */
1814 public boolean isClobType()
1815 {
1816 return this.getSuperEntity().isClobType();
1817 }
1818
1819 /**
1820 * True if this classifier represents a collection type. False otherwise.
1821 * @see ClassifierFacade#isCollectionType()
1822 */
1823 public boolean isCollectionType()
1824 {
1825 return this.getSuperEntity().isCollectionType();
1826 }
1827
1828 /**
1829 * True/false depending on whether or not this classifier represents a datatype. A data type is
1830 * a type whose instances are identified only by their value. A data type may contain attributes
1831 * to support the modeling of structured data types.
1832 * @see ClassifierFacade#isDataType()
1833 */
1834 public boolean isDataType()
1835 {
1836 return this.getSuperEntity().isDataType();
1837 }
1838
1839 /**
1840 * True when this classifier is a date type.
1841 * @see ClassifierFacade#isDateType()
1842 */
1843 public boolean isDateType()
1844 {
1845 return this.getSuperEntity().isDateType();
1846 }
1847
1848 /**
1849 * Indicates if this type represents a Double type or not.
1850 * @see ClassifierFacade#isDoubleType()
1851 */
1852 public boolean isDoubleType()
1853 {
1854 return this.getSuperEntity().isDoubleType();
1855 }
1856
1857 /**
1858 * Indicates whether or not this classifier represents an "EmbeddedValue'.
1859 * @see ClassifierFacade#isEmbeddedValue()
1860 */
1861 public boolean isEmbeddedValue()
1862 {
1863 return this.getSuperEntity().isEmbeddedValue();
1864 }
1865
1866 /**
1867 * True if this classifier is in fact marked as an enumeration.
1868 * @see ClassifierFacade#isEnumeration()
1869 */
1870 public boolean isEnumeration()
1871 {
1872 return this.getSuperEntity().isEnumeration();
1873 }
1874
1875 /**
1876 * Returns true if this type represents a 'file' type.
1877 * @see ClassifierFacade#isFileType()
1878 */
1879 public boolean isFileType()
1880 {
1881 return this.getSuperEntity().isFileType();
1882 }
1883
1884 /**
1885 * Indicates if this type represents a Float type or not.
1886 * @see ClassifierFacade#isFloatType()
1887 */
1888 public boolean isFloatType()
1889 {
1890 return this.getSuperEntity().isFloatType();
1891 }
1892
1893 /**
1894 * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
1895 * @see ClassifierFacade#isIntegerType()
1896 */
1897 public boolean isIntegerType()
1898 {
1899 return this.getSuperEntity().isIntegerType();
1900 }
1901
1902 /**
1903 * True/false depending on whether or not this Classifier represents an interface.
1904 * @see ClassifierFacade#isInterface()
1905 */
1906 public boolean isInterface()
1907 {
1908 return this.getSuperEntity().isInterface();
1909 }
1910
1911 /**
1912 * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
1913 * @see ClassifierFacade#isLeaf()
1914 */
1915 public boolean isLeaf()
1916 {
1917 return this.getSuperEntity().isLeaf();
1918 }
1919
1920 /**
1921 * True if this classifier represents a list type. False otherwise.
1922 * @see ClassifierFacade#isListType()
1923 */
1924 public boolean isListType()
1925 {
1926 return this.getSuperEntity().isListType();
1927 }
1928
1929 /**
1930 * Indicates if this type represents a Long type or not.
1931 * @see ClassifierFacade#isLongType()
1932 */
1933 public boolean isLongType()
1934 {
1935 return this.getSuperEntity().isLongType();
1936 }
1937
1938 /**
1939 * Indicates whether or not this classifier represents a Map type.
1940 * @see ClassifierFacade#isMapType()
1941 */
1942 public boolean isMapType()
1943 {
1944 return this.getSuperEntity().isMapType();
1945 }
1946
1947 /**
1948 * Indicates whether or not this classifier represents a primitive type.
1949 * @see ClassifierFacade#isPrimitive()
1950 */
1951 public boolean isPrimitive()
1952 {
1953 return this.getSuperEntity().isPrimitive();
1954 }
1955
1956 /**
1957 * True if this classifier represents a set type. False otherwise.
1958 * @see ClassifierFacade#isSetType()
1959 */
1960 public boolean isSetType()
1961 {
1962 return this.getSuperEntity().isSetType();
1963 }
1964
1965 /**
1966 * Indicates whether or not this classifier represents a string type.
1967 * @see ClassifierFacade#isStringType()
1968 */
1969 public boolean isStringType()
1970 {
1971 return this.getSuperEntity().isStringType();
1972 }
1973
1974 /**
1975 * Indicates whether or not this classifier represents a time type.
1976 * @see ClassifierFacade#isTimeType()
1977 */
1978 public boolean isTimeType()
1979 {
1980 return this.getSuperEntity().isTimeType();
1981 }
1982
1983 /**
1984 * Returns true if this type is a wrapped primitive type.
1985 * @see ClassifierFacade#isWrappedPrimitive()
1986 */
1987 public boolean isWrappedPrimitive()
1988 {
1989 return this.getSuperEntity().isWrappedPrimitive();
1990 }
1991
1992 /**
1993 * Returns a collection of all entities this entity and its ancestors have a relation to.
1994 * @see Entity#getAllEntityReferences()
1995 */
1996 public Collection<DependencyFacade> getAllEntityReferences()
1997 {
1998 return this.getSuperEntity().getAllEntityReferences();
1999 }
2000
2001 /**
2002 * Gets a comma separated list of attribute names. If 'follow' is true, will travel up the
2003 * inheritance hiearchy to include attributes in parent entities as well. If 'withIdentifiers'
2004 * is true, will include identifiers.
2005 * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers)
2006 */
2007 public String getAttributeNameList(boolean follow, boolean withIdentifiers)
2008 {
2009 return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers);
2010 }
2011
2012 /**
2013 * Gets a comma separated list of attribute names. If 'follow' is true, will travel up the
2014 * inheritance hiearchy to include attributes in parent entities as well. If 'withIdentifiers'
2015 * is true, will include identifiers and if 'withDerived' is set to true, will include derived
2016 * attributes.
2017 * @see Entity#getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
2018 */
2019 public String getAttributeNameList(boolean follow, boolean withIdentifiers, boolean withDerived)
2020 {
2021 return this.getSuperEntity().getAttributeNameList(follow, withIdentifiers, withDerived);
2022 }
2023
2024 /**
2025 * Gets a comma separated list of attribute types. If 'follow' is true, will travel up the
2026 * inheritance hierarchy to include attributes in parent entities as well. If 'withIdentifiers'
2027 * is true, will include identifiers.
2028 * @see Entity#getAttributeTypeList(boolean follow, boolean withIdentifiers)
2029 */
2030 public String getAttributeTypeList(boolean follow, boolean withIdentifiers)
2031 {
2032 return this.getSuperEntity().getAttributeTypeList(follow, withIdentifiers);
2033 }
2034
2035 /**
2036 * Gets all attributes of the entity, and optionally retieves the super entities attributes as
2037 * well as excludes the entity's identifiers if 'withIdentifiers' is set to false.
2038 * @see Entity#getAttributes(boolean follow, boolean withIdentifiers)
2039 */
2040 public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers)
2041 {
2042 return this.getSuperEntity().getAttributes(follow, withIdentifiers);
2043 }
2044
2045 /**
2046 * Gets all attributes of the entity, and optionally retieves the super entities attributes as
2047 * well as excludes the entity's identifiers if 'withIdentifiers' is set to false and exclude
2048 * derived attributes if 'withDerived' is set to false.
2049 * @see Entity#getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
2050 */
2051 public Collection<AttributeFacade> getAttributes(boolean follow, boolean withIdentifiers, boolean withDerived)
2052 {
2053 return this.getSuperEntity().getAttributes(follow, withIdentifiers, withDerived);
2054 }
2055
2056 /**
2057 * All business operations of the entity, these include any operations that aren't queries.
2058 * @see Entity#getBusinessOperations()
2059 */
2060 public Collection<OperationFacade> getBusinessOperations()
2061 {
2062 return this.getSuperEntity().getBusinessOperations();
2063 }
2064
2065 /**
2066 * Gets any children association ends (i.e. entity association ends that are participants in an
2067 * association with this entity and this entity has composite aggregation defined for those
2068 * associations).
2069 * @see Entity#getChildEnds()
2070 */
2071 public Collection<EntityAssociationEnd> getChildEnds()
2072 {
2073 return this.getSuperEntity().getChildEnds();
2074 }
2075
2076 /**
2077 * The embedded values belonging to this entity.
2078 * @see Entity#getEmbeddedValues()
2079 */
2080 public Collection<AttributeFacade> getEmbeddedValues()
2081 {
2082 return this.getSuperEntity().getEmbeddedValues();
2083 }
2084
2085 /**
2086 * All entities referenced by this entity.
2087 * @see Entity#getEntityReferences()
2088 */
2089 public Collection<DependencyFacade> getEntityReferences()
2090 {
2091 return this.getSuperEntity().getEntityReferences();
2092 }
2093
2094 /**
2095 * The full name of the type of the identifier. If composite identifier add the PK sufix to the
2096 * class name. If not, retorns the fully qualified name of the identifier.
2097 * @see Entity#getFullyQualifiedIdentifierTypeName()
2098 */
2099 public String getFullyQualifiedIdentifierTypeName()
2100 {
2101 return this.getSuperEntity().getFullyQualifiedIdentifierTypeName();
2102 }
2103
2104 /**
2105 * Gets all the associationEnds of this entity marked with the identifiers stereotype.
2106 * @see Entity#getIdentifierAssociationEnds()
2107 */
2108 public Collection<AssociationEndFacade> getIdentifierAssociationEnds()
2109 {
2110 return this.getSuperEntity().getIdentifierAssociationEnds();
2111 }
2112
2113 /**
2114 * The getter name of the identifier.
2115 * @see Entity#getIdentifierGetterName()
2116 */
2117 public String getIdentifierGetterName()
2118 {
2119 return this.getSuperEntity().getIdentifierGetterName();
2120 }
2121
2122 /**
2123 * The name of the identifier. If composite identifier add the Pk suffix. If not composite
2124 * returns the attribute name of the identifier.
2125 * @see Entity#getIdentifierName()
2126 */
2127 public String getIdentifierName()
2128 {
2129 return this.getSuperEntity().getIdentifierName();
2130 }
2131
2132 /**
2133 * The setter name of the identifier.
2134 * @see Entity#getIdentifierSetterName()
2135 */
2136 public String getIdentifierSetterName()
2137 {
2138 return this.getSuperEntity().getIdentifierSetterName();
2139 }
2140
2141 /**
2142 * The name of the type of the identifier. If composite identifier add the PK suffix to the
2143 * class name. If not, returns the name of the identifier.
2144 * @see Entity#getIdentifierTypeName()
2145 */
2146 public String getIdentifierTypeName()
2147 {
2148 return this.getSuperEntity().getIdentifierTypeName();
2149 }
2150
2151 /**
2152 * All the attributes of the entity which make up its identifier (primary key). Will search any
2153 * super classes as well. If no identifiers exist, a default identifier will be created if the
2154 * allowDefaultIdentifiers property is set to true.
2155 * @see Entity#getIdentifiers()
2156 */
2157 public Collection<ModelElementFacade> getIdentifiers()
2158 {
2159 return this.getSuperEntity().getIdentifiers();
2160 }
2161
2162 /**
2163 * Gets all identifiers for an entity. If 'follow' is true, and if no identifiers can be found
2164 * on the entity, a search up the inheritance chain will be performed, and the identifiers from
2165 * the first super class having them will be used. If no identifiers exist, a default
2166 * identifier will be created if the allowDefaultIdentifiers property is set to true.
2167 * Identifiers can be on attributes or associations (composite primary key).
2168 * @see Entity#getIdentifiers(boolean follow)
2169 */
2170 public Collection<ModelElementFacade> getIdentifiers(boolean follow)
2171 {
2172 return this.getSuperEntity().getIdentifiers(follow);
2173 }
2174
2175 /**
2176 * The maximum length a SQL name may be.
2177 * @see Entity#getMaxSqlNameLength()
2178 */
2179 public short getMaxSqlNameLength()
2180 {
2181 return this.getSuperEntity().getMaxSqlNameLength();
2182 }
2183
2184 /**
2185 * Gets the attributes as a list within an operation call, optionally including the type names
2186 * and the identifier attributes.
2187 * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers)
2188 */
2189 public String getOperationCallFromAttributes(boolean withIdentifiers)
2190 {
2191 return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers);
2192 }
2193
2194 /**
2195 * Gets the attributes as a list within an operation call. If 'withTypeNames' is true, it will
2196 * include the type names, if 'withIdentifiers' is true it will include the identifiers. If
2197 * 'follow' is true it will follow the inheritance hierarchy and get the attributes of the super
2198 * class as well.
2199 * @see Entity#getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
2200 */
2201 public String getOperationCallFromAttributes(boolean withIdentifiers, boolean follow)
2202 {
2203 return this.getSuperEntity().getOperationCallFromAttributes(withIdentifiers, follow);
2204 }
2205
2206 /**
2207 * Returns the parent association end of this entity if its a child entity. The parent is the
2208 * entity that is the participant the association that has composite aggregation defined. Will
2209 * return null if the entity has no parent.
2210 * @see Entity#getParentEnd()
2211 */
2212 public EntityAssociationEnd getParentEnd()
2213 {
2214 return this.getSuperEntity().getParentEnd();
2215 }
2216
2217 /**
2218 * Gets all properties of this entity, this includes the attributes and navigable association
2219 * ends of the entity. The 'follow' flag indcates whether or not the inheritance hierarchy
2220 * should be followed when getting all the properties. The 'withIdentifiers' flag indicates
2221 * whether or not identifiers should be included in the collection of properties.
2222 * @see Entity#getProperties(boolean follow, boolean withIdentifiers)
2223 */
2224 public Collection<ModelElementFacade> getProperties(boolean follow, boolean withIdentifiers)
2225 {
2226 return this.getSuperEntity().getProperties(follow, withIdentifiers);
2227 }
2228
2229 /**
2230 * Returns all the operations that can perform queries on the entity.
2231 * @see Entity#getQueryOperations()
2232 */
2233 public Collection<EntityQueryOperation> getQueryOperations()
2234 {
2235 return this.getSuperEntity().getQueryOperations();
2236 }
2237
2238 /**
2239 * Gets all query operations for an entity. If 'follow' is true, and if no query operations can
2240 * be found on the entity, a search up the inheritance chain will be performed, and the
2241 * identifiers from the first super class having them will be used. If no identifiers exist, a
2242 * default identifier will be created if the allowDefaultIdentifiers property is set to true.
2243 * @see Entity#getQueryOperations(boolean follow)
2244 */
2245 public Collection<OperationFacade> getQueryOperations(boolean follow)
2246 {
2247 return this.getSuperEntity().getQueryOperations(follow);
2248 }
2249
2250 /**
2251 * Gets a comma separated list of required attribute names. If 'follow' is true, will travel up
2252 * the inheritance hierarchy to include attributes in parent entities as well. If
2253 * 'withIdentifiers' is true, will include identifiers.
2254 * @see Entity#getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
2255 */
2256 public String getRequiredAttributeNameList(boolean follow, boolean withIdentifiers)
2257 {
2258 return this.getSuperEntity().getRequiredAttributeNameList(follow, withIdentifiers);
2259 }
2260
2261 /**
2262 * Gets a comma separated list of attribute types with are required. If 'follow' is true, will
2263 * travel up the inheritance hierarchy to include attributes in parent entities as well. If
2264 * 'withIdentifiers' is true, will include identifiers.
2265 * @see Entity#getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
2266 */
2267 public String getRequiredAttributeTypeList(boolean follow, boolean withIdentifiers)
2268 {
2269 return this.getSuperEntity().getRequiredAttributeTypeList(follow, withIdentifiers);
2270 }
2271
2272 /**
2273 * Returns all attributes that are specified as 'required' in the model. If 'follow' is true,
2274 * then required attributes in super classes will also be returned, if false, just the ones
2275 * directly on the entity will be returned. If 'withIdentifiers' is true, the identifiers will
2276 * be include, if false, no identifiers will be included.
2277 * @see Entity#getRequiredAttributes(boolean follow, boolean withIdentifiers)
2278 */
2279 public Collection<AttributeFacade> getRequiredAttributes(boolean follow, boolean withIdentifiers)
2280 {
2281 return this.getSuperEntity().getRequiredAttributes(follow, withIdentifiers);
2282 }
2283
2284 /**
2285 * Gets all required properties for this entity. These consist of any required attributes as
2286 * well as navigable associations that are marked as 'required'. If 'follow' is true, then the
2287 * inheritance hierchy will be followed and all required properties from super classes will be
2288 * included as well.
2289 * If 'withIdentifiers' is true, the identifiers will be include, if false, no identifiers will
2290 * be included.
2291 * @see Entity#getRequiredProperties(boolean follow, boolean withIdentifiers)
2292 */
2293 public Collection<ModelElementFacade> getRequiredProperties(boolean follow, boolean withIdentifiers)
2294 {
2295 return this.getSuperEntity().getRequiredProperties(follow, withIdentifiers);
2296 }
2297
2298 /**
2299 * Creates a comma separated list of the required property names.
2300 * @see Entity#getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
2301 */
2302 public String getRequiredPropertyNameList(boolean follow, boolean withIdentifiers)
2303 {
2304 return this.getSuperEntity().getRequiredPropertyNameList(follow, withIdentifiers);
2305 }
2306
2307 /**
2308 * A comma separated list of the required property types.
2309 * @see Entity#getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
2310 */
2311 public String getRequiredPropertyTypeList(boolean follow, boolean withIdentifiers)
2312 {
2313 return this.getSuperEntity().getRequiredPropertyTypeList(follow, withIdentifiers);
2314 }
2315
2316 /**
2317 * The name of the schema that contains the database table
2318 * @see Entity#getSchema()
2319 */
2320 public String getSchema()
2321 {
2322 return this.getSuperEntity().getSchema();
2323 }
2324
2325 /**
2326 * The name of the database table to which this entity is persisted.
2327 * @see Entity#getTableName()
2328 */
2329 public String getTableName()
2330 {
2331 return this.getSuperEntity().getTableName();
2332 }
2333
2334 /**
2335 * Returns true/false depending on whether or not this entity represetns a child in an
2336 * association (this occurs when this entity is on the opposite end of an assocation end defined
2337 * as composite).
2338 * @see Entity#isChild()
2339 */
2340 public boolean isChild()
2341 {
2342 return this.getSuperEntity().isChild();
2343 }
2344
2345 /**
2346 * True if this entity identifier is a composite (consists of multiple key columns, typically
2347 * abstracted into an external composite identifier class)
2348 * @see Entity#isCompositeIdentifier()
2349 */
2350 public boolean isCompositeIdentifier()
2351 {
2352 return this.getSuperEntity().isCompositeIdentifier();
2353 }
2354
2355 /**
2356 * True if the entity has its identifiers dynamically added, false otherwise.
2357 * @see Entity#isDynamicIdentifiersPresent()
2358 */
2359 public boolean isDynamicIdentifiersPresent()
2360 {
2361 return this.getSuperEntity().isDynamicIdentifiersPresent();
2362 }
2363
2364 /**
2365 * True if the entity has any identifiers defined, false otherwise.
2366 * @see Entity#isIdentifiersPresent()
2367 */
2368 public boolean isIdentifiersPresent()
2369 {
2370 return this.getSuperEntity().isIdentifiersPresent();
2371 }
2372
2373 /**
2374 * Indiciates if this entity is using an assigned identifier or not.
2375 * @see Entity#isUsingAssignedIdentifier()
2376 */
2377 public boolean isUsingAssignedIdentifier()
2378 {
2379 return this.getSuperEntity().isUsingAssignedIdentifier();
2380 }
2381
2382 /**
2383 * Indicates whether or not this entity is using a foreign identifier as its identifiers. That
2384 * is: the foreignIdentifier flag was set on an incoming association end and the entity is
2385 * therefore using the related foreign parent entity's identifier.
2386 * @see Entity#isUsingForeignIdentifier()
2387 */
2388 public boolean isUsingForeignIdentifier()
2389 {
2390 return this.getSuperEntity().isUsingForeignIdentifier();
2391 }
2392
2393 /**
2394 * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
2395 * to true.
2396 * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
2397 */
2398 public Object findTaggedValue(String tagName, boolean follow)
2399 {
2400 return this.getSuperEntity().findTaggedValue(tagName, follow);
2401 }
2402
2403 /**
2404 * All generalizations for this generalizable element, goes up the inheritance tree.
2405 * @see GeneralizableElementFacade#getAllGeneralizations()
2406 */
2407 public Collection<GeneralizableElementFacade> getAllGeneralizations()
2408 {
2409 return this.getSuperEntity().getAllGeneralizations();
2410 }
2411
2412 /**
2413 * All specializations (travels down the inheritance hierarchy).
2414 * @see GeneralizableElementFacade#getAllSpecializations()
2415 */
2416 public Collection<GeneralizableElementFacade> getAllSpecializations()
2417 {
2418 return this.getSuperEntity().getAllSpecializations();
2419 }
2420
2421 /**
2422 * Gets the direct generalization for this generalizable element.
2423 * @see GeneralizableElementFacade#getGeneralization()
2424 */
2425 public GeneralizableElementFacade getGeneralization()
2426 {
2427 return this.getSuperEntity().getGeneralization();
2428 }
2429
2430 /**
2431 * Gets the actual links that this generalization element is part of (it plays either the
2432 * specialization or generalization).
2433 * @see GeneralizableElementFacade#getGeneralizationLinks()
2434 */
2435 public Collection<GeneralizationFacade> getGeneralizationLinks()
2436 {
2437 return this.getSuperEntity().getGeneralizationLinks();
2438 }
2439
2440 /**
2441 * A comma separated list of the fully qualified names of all generalizations.
2442 * @see GeneralizableElementFacade#getGeneralizationList()
2443 */
2444 public String getGeneralizationList()
2445 {
2446 return this.getSuperEntity().getGeneralizationList();
2447 }
2448
2449 /**
2450 * The element found when you recursively follow the generalization path up to the root. If an
2451 * element has no generalization itself will be considered the root.
2452 * @see GeneralizableElementFacade#getGeneralizationRoot()
2453 */
2454 public GeneralizableElementFacade getGeneralizationRoot()
2455 {
2456 return this.getSuperEntity().getGeneralizationRoot();
2457 }
2458
2459 /**
2460 * Return all generalizations (ancestors) from this generalizable element.
2461 * @see GeneralizableElementFacade#getGeneralizations()
2462 */
2463 public Collection<GeneralizableElementFacade> getGeneralizations()
2464 {
2465 return this.getSuperEntity().getGeneralizations();
2466 }
2467
2468 /**
2469 * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
2470 * @see GeneralizableElementFacade#getSpecializations()
2471 */
2472 public Collection<GeneralizableElementFacade> getSpecializations()
2473 {
2474 return this.getSuperEntity().getSpecializations();
2475 }
2476
2477 /**
2478 * Copies all tagged values from the given ModelElementFacade to this model element facade.
2479 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
2480 */
2481 public void copyTaggedValues(ModelElementFacade element)
2482 {
2483 this.getSuperEntity().copyTaggedValues(element);
2484 }
2485
2486 /**
2487 * Finds the tagged value with the specified 'tagName'. In case there are more values the first
2488 * one found will be returned.
2489 * @see ModelElementFacade#findTaggedValue(String tagName)
2490 */
2491 public Object findTaggedValue(String tagName)
2492 {
2493 return this.getSuperEntity().findTaggedValue(tagName);
2494 }
2495
2496 /**
2497 * Returns all the values for the tagged value with the specified name. The returned collection
2498 * will contains only String instances, or will be empty. Never null.
2499 * @see ModelElementFacade#findTaggedValues(String tagName)
2500 */
2501 public Collection<Object> findTaggedValues(String tagName)
2502 {
2503 return this.getSuperEntity().findTaggedValues(tagName);
2504 }
2505
2506 /**
2507 * Returns the fully qualified name of the model element. The fully qualified name includes
2508 * complete package qualified name of the underlying model element. The templates parameter will
2509 * be replaced by the correct one given the binding relation of the parameter to this element.
2510 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2511 */
2512 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
2513 {
2514 return this.getSuperEntity().getBindedFullyQualifiedName(bindedElement);
2515 }
2516
2517 /**
2518 * Gets all constraints belonging to the model element.
2519 * @see ModelElementFacade#getConstraints()
2520 */
2521 public Collection<ConstraintFacade> getConstraints()
2522 {
2523 return this.getSuperEntity().getConstraints();
2524 }
2525
2526 /**
2527 * Returns the constraints of the argument kind that have been placed onto this model. Typical
2528 * kinds are "inv", "pre" and "post". Other kinds are possible.
2529 * @see ModelElementFacade#getConstraints(String kind)
2530 */
2531 public Collection<ConstraintFacade> getConstraints(String kind)
2532 {
2533 return this.getSuperEntity().getConstraints(kind);
2534 }
2535
2536 /**
2537 * Gets the documentation for the model element, The indent argument is prefixed to each line.
2538 * By default this method wraps lines after 64 characters.
2539 * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
2540 * @see ModelElementFacade#getDocumentation(String indent)
2541 */
2542 public String getDocumentation(String indent)
2543 {
2544 return this.getSuperEntity().getDocumentation(indent);
2545 }
2546
2547 /**
2548 * This method returns the documentation for this model element, with the lines wrapped after
2549 * the specified number of characters, values of less than 1 will indicate no line wrapping is
2550 * required. By default paragraphs are returned as HTML.
2551 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
2552 * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
2553 */
2554 public String getDocumentation(String indent, int lineLength)
2555 {
2556 return this.getSuperEntity().getDocumentation(indent, lineLength);
2557 }
2558
2559 /**
2560 * This method returns the documentation for this model element, with the lines wrapped after
2561 * the specified number of characters, values of less than 1 will indicate no line wrapping is
2562 * required. HTML style determines if HTML Escaping is applied.
2563 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
2564 */
2565 public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
2566 {
2567 return this.getSuperEntity().getDocumentation(indent, lineLength, htmlStyle);
2568 }
2569
2570 /**
2571 * The fully qualified name of this model element.
2572 * @see ModelElementFacade#getFullyQualifiedName()
2573 */
2574 public String getFullyQualifiedName()
2575 {
2576 return this.getSuperEntity().getFullyQualifiedName();
2577 }
2578
2579 /**
2580 * Returns the fully qualified name of the model element. The fully qualified name includes
2581 * complete package qualified name of the underlying model element. If modelName is true, then
2582 * the original name of the model element (the name contained within the model) will be the name
2583 * returned, otherwise a name from a language mapping will be returned.
2584 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
2585 */
2586 public String getFullyQualifiedName(boolean modelName)
2587 {
2588 return this.getSuperEntity().getFullyQualifiedName(modelName);
2589 }
2590
2591 /**
2592 * Returns the fully qualified name as a path, the returned value always starts with out a slash
2593 * '/'.
2594 * @see ModelElementFacade#getFullyQualifiedNamePath()
2595 */
2596 public String getFullyQualifiedNamePath()
2597 {
2598 return this.getSuperEntity().getFullyQualifiedNamePath();
2599 }
2600
2601 /**
2602 * Gets the unique identifier of the underlying model element.
2603 * @see ModelElementFacade#getId()
2604 */
2605 public String getId()
2606 {
2607 return this.getSuperEntity().getId();
2608 }
2609
2610 /**
2611 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
2612 * are not represented by other properties, i.e. native, transient, volatile, synchronized,
2613 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
2614 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
2615 * JDK5 compiler level.
2616 * @see ModelElementFacade#getKeywords()
2617 */
2618 public Collection<String> getKeywords()
2619 {
2620 return this.getSuperEntity().getKeywords();
2621 }
2622
2623 /**
2624 * UML2: Retrieves a localized label for this named element.
2625 * @see ModelElementFacade#getLabel()
2626 */
2627 public String getLabel()
2628 {
2629 return this.getSuperEntity().getLabel();
2630 }
2631
2632 /**
2633 * The language mappings that have been set for this model element.
2634 * @see ModelElementFacade#getLanguageMappings()
2635 */
2636 public TypeMappings getLanguageMappings()
2637 {
2638 return this.getSuperEntity().getLanguageMappings();
2639 }
2640
2641 /**
2642 * Return the model containing this model element (multiple models may be loaded and processed
2643 * at the same time).
2644 * @see ModelElementFacade#getModel()
2645 */
2646 public ModelFacade getModel()
2647 {
2648 return this.getSuperEntity().getModel();
2649 }
2650
2651 /**
2652 * The name of the model element.
2653 * @see ModelElementFacade#getName()
2654 */
2655 public String getName()
2656 {
2657 return this.getSuperEntity().getName();
2658 }
2659
2660 /**
2661 * Gets the package to which this model element belongs.
2662 * @see ModelElementFacade#getPackage()
2663 */
2664 public ModelElementFacade getPackage()
2665 {
2666 return this.getSuperEntity().getPackage();
2667 }
2668
2669 /**
2670 * The name of this model element's package.
2671 * @see ModelElementFacade#getPackageName()
2672 */
2673 public String getPackageName()
2674 {
2675 return this.getSuperEntity().getPackageName();
2676 }
2677
2678 /**
2679 * Gets the package name (optionally providing the ability to retrieve the model name and not
2680 * the mapped name).
2681 * @see ModelElementFacade#getPackageName(boolean modelName)
2682 */
2683 public String getPackageName(boolean modelName)
2684 {
2685 return this.getSuperEntity().getPackageName(modelName);
2686 }
2687
2688 /**
2689 * Returns the package as a path, the returned value always starts with out a slash '/'.
2690 * @see ModelElementFacade#getPackagePath()
2691 */
2692 public String getPackagePath()
2693 {
2694 return this.getSuperEntity().getPackagePath();
2695 }
2696
2697 /**
2698 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
2699 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
2700 * the names of the containing namespaces starting at the root of the hierarchy and ending with
2701 * the name of the NamedElement itself.
2702 * @see ModelElementFacade#getQualifiedName()
2703 */
2704 public String getQualifiedName()
2705 {
2706 return this.getSuperEntity().getQualifiedName();
2707 }
2708
2709 /**
2710 * Gets the root package for the model element.
2711 * @see ModelElementFacade#getRootPackage()
2712 */
2713 public PackageFacade getRootPackage()
2714 {
2715 return this.getSuperEntity().getRootPackage();
2716 }
2717
2718 /**
2719 * Gets the dependencies for which this model element is the source.
2720 * @see ModelElementFacade#getSourceDependencies()
2721 */
2722 public Collection<DependencyFacade> getSourceDependencies()
2723 {
2724 return this.getSuperEntity().getSourceDependencies();
2725 }
2726
2727 /**
2728 * If this model element is the context of an activity graph, this represents that activity
2729 * graph.
2730 * @see ModelElementFacade#getStateMachineContext()
2731 */
2732 public StateMachineFacade getStateMachineContext()
2733 {
2734 return this.getSuperEntity().getStateMachineContext();
2735 }
2736
2737 /**
2738 * The collection of ALL stereotype names for this model element.
2739 * @see ModelElementFacade#getStereotypeNames()
2740 */
2741 public Collection<String> getStereotypeNames()
2742 {
2743 return this.getSuperEntity().getStereotypeNames();
2744 }
2745
2746 /**
2747 * Gets all stereotypes for this model element.
2748 * @see ModelElementFacade#getStereotypes()
2749 */
2750 public Collection<StereotypeFacade> getStereotypes()
2751 {
2752 return this.getSuperEntity().getStereotypes();
2753 }
2754
2755 /**
2756 * Return the TaggedValues associated with this model element, under all stereotypes.
2757 * @see ModelElementFacade#getTaggedValues()
2758 */
2759 public Collection<TaggedValueFacade> getTaggedValues()
2760 {
2761 return this.getSuperEntity().getTaggedValues();
2762 }
2763
2764 /**
2765 * Gets the dependencies for which this model element is the target.
2766 * @see ModelElementFacade#getTargetDependencies()
2767 */
2768 public Collection<DependencyFacade> getTargetDependencies()
2769 {
2770 return this.getSuperEntity().getTargetDependencies();
2771 }
2772
2773 /**
2774 * Get the template parameter for this model element having the parameterName
2775 * @see ModelElementFacade#getTemplateParameter(String parameterName)
2776 */
2777 public Object getTemplateParameter(String parameterName)
2778 {
2779 return this.getSuperEntity().getTemplateParameter(parameterName);
2780 }
2781
2782 /**
2783 * Get the template parameters for this model element
2784 * @see ModelElementFacade#getTemplateParameters()
2785 */
2786 public Collection<TemplateParameterFacade> getTemplateParameters()
2787 {
2788 return this.getSuperEntity().getTemplateParameters();
2789 }
2790
2791 /**
2792 * The visibility (i.e. public, private, protected or package) of the model element, will
2793 * attempt a lookup for these values in the language mappings (if any).
2794 * @see ModelElementFacade#getVisibility()
2795 */
2796 public String getVisibility()
2797 {
2798 return this.getSuperEntity().getVisibility();
2799 }
2800
2801 /**
2802 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
2803 * is taken into account when searching for the stereotype), false otherwise.
2804 * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
2805 */
2806 public boolean hasExactStereotype(String stereotypeName)
2807 {
2808 return this.getSuperEntity().hasExactStereotype(stereotypeName);
2809 }
2810
2811 /**
2812 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
2813 * pipe, semicolon, or << >>
2814 * @see ModelElementFacade#hasKeyword(String keywordName)
2815 */
2816 public boolean hasKeyword(String keywordName)
2817 {
2818 return this.getSuperEntity().hasKeyword(keywordName);
2819 }
2820
2821 /**
2822 * Returns true if the model element has the specified stereotype. If the stereotype itself
2823 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
2824 * one of the stereotype's ancestors has a matching name this method will return true, false
2825 * otherwise.
2826 * For example, if we have a certain stereotype called <<exception>> and a model element has a
2827 * stereotype called <<applicationException>> which extends <<exception>>, when calling this
2828 * method with 'stereotypeName' defined as 'exception' the method would return true since
2829 * <<applicationException>> inherits from <<exception>>. If you want to check if the model
2830 * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
2831 * @see ModelElementFacade#hasStereotype(String stereotypeName)
2832 */
2833 public boolean hasStereotype(String stereotypeName)
2834 {
2835 return this.getSuperEntity().hasStereotype(stereotypeName);
2836 }
2837
2838 /**
2839 * True if there are target dependencies from this element that are instances of BindingFacade.
2840 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
2841 * @see ModelElementFacade#isBindingDependenciesPresent()
2842 */
2843 public boolean isBindingDependenciesPresent()
2844 {
2845 return this.getSuperEntity().isBindingDependenciesPresent();
2846 }
2847
2848 /**
2849 * Indicates if any constraints are present on this model element.
2850 * @see ModelElementFacade#isConstraintsPresent()
2851 */
2852 public boolean isConstraintsPresent()
2853 {
2854 return this.getSuperEntity().isConstraintsPresent();
2855 }
2856
2857 /**
2858 * Indicates if any documentation is present on this model element.
2859 * @see ModelElementFacade#isDocumentationPresent()
2860 */
2861 public boolean isDocumentationPresent()
2862 {
2863 return this.getSuperEntity().isDocumentationPresent();
2864 }
2865
2866 /**
2867 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
2868 * @see ModelElementFacade#isReservedWord()
2869 */
2870 public boolean isReservedWord()
2871 {
2872 return this.getSuperEntity().isReservedWord();
2873 }
2874
2875 /**
2876 * True is there are template parameters on this model element. For UML2, applies to Class,
2877 * Operation, Property, and Parameter.
2878 * @see ModelElementFacade#isTemplateParametersPresent()
2879 */
2880 public boolean isTemplateParametersPresent()
2881 {
2882 return this.getSuperEntity().isTemplateParametersPresent();
2883 }
2884
2885 /**
2886 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
2887 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
2888 * Enumerations and Interfaces, optionally applies on other model elements.
2889 * @see ModelElementFacade#isValidIdentifierName()
2890 */
2891 public boolean isValidIdentifierName()
2892 {
2893 return this.getSuperEntity().isValidIdentifierName();
2894 }
2895
2896 /**
2897 * Searches for the constraint with the specified 'name' on this model element, and if found
2898 * translates it using the specified 'translation' from a translation library discovered by the
2899 * framework.
2900 * @see ModelElementFacade#translateConstraint(String name, String translation)
2901 */
2902 public String translateConstraint(String name, String translation)
2903 {
2904 return this.getSuperEntity().translateConstraint(name, translation);
2905 }
2906
2907 /**
2908 * Translates all constraints belonging to this model element with the given 'translation'.
2909 * @see ModelElementFacade#translateConstraints(String translation)
2910 */
2911 public String[] translateConstraints(String translation)
2912 {
2913 return this.getSuperEntity().translateConstraints(translation);
2914 }
2915
2916 /**
2917 * Translates the constraints of the specified 'kind' belonging to this model element.
2918 * @see ModelElementFacade#translateConstraints(String kind, String translation)
2919 */
2920 public String[] translateConstraints(String kind, String translation)
2921 {
2922 return this.getSuperEntity().translateConstraints(kind, translation);
2923 }
2924
2925 /**
2926 * @see MetafacadeBase#initialize()
2927 */
2928 @Override
2929 public void initialize()
2930 {
2931 this.getSuperEntity().initialize();
2932 }
2933
2934 /**
2935 * @return Object getSuperEntity().getValidationOwner()
2936 * @see MetafacadeBase#getValidationOwner()
2937 */
2938 @Override
2939 public Object getValidationOwner()
2940 {
2941 Object owner = this.getSuperEntity().getValidationOwner();
2942 return owner;
2943 }
2944
2945 /**
2946 * @return String getSuperEntity().getValidationName()
2947 * @see MetafacadeBase#getValidationName()
2948 */
2949 @Override
2950 public String getValidationName()
2951 {
2952 String name = this.getSuperEntity().getValidationName();
2953 return name;
2954 }
2955
2956 /**
2957 * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateEntity::class inheritance strategy can not be mixed</p>
2958 * <p><b>Error:</b> If your Hibernate inheritance strategy is defined as 'class' on the root entity. All sub classes must have an inheritance strategy of 'class' as well (the class inheritance strategy can not be mixed with any other types of strategies).</p>
2959 * <p><b>OCL:</b> context HibernateEntity
2960 inv : hibernateInheritanceClass implies specializations -> forAll(hibernateInheritanceClass)</p>
2961 * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateEntity::subclass inheritance strategy can not be mixed</p>
2962 * <p><b>Error:</b> If your Hibernate inheritance strategy is defined as 'subclass' on the root entity. All sub classes must have an inheritance strategy of 'subclass' as well (the subclass inheritance strategy can not be mixed with any other types of strategies).</p>
2963 * <p><b>OCL:</b> context HibernateEntity
2964 inv : hibernateInheritanceSubclass implies specializations -> forAll(hibernateInheritanceSubclass)</p>
2965 * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateEntity::entity attributes must be of type data type.</p>
2966 * <p><b>Error:</b> All attributes of an entity (other than enumerations and embedded values) must be of UML DataType. Complex types must be UML Associations, not attributes.</p>
2967 * <p><b>OCL:</b> context HibernateEntity
2968 inv: attributes -> forAll( not (type.enumeration or type.oclIsKindOf(HibernateEmbeddedValue)) implies type.dataType)</p>
2969 * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateEntity::increment, identity, sequence, hilo or seqhilo generator class requires a long, short, or int identifier</p>
2970 * <p><b>Error:</b> If the hibernate identifier generator class is set as 'increment', 'identity', 'sequence', 'hilo', 'seqhilo' or 'native', your mapped identifier type must resolve to a long (long or java.lang.Long or Long) , an int (int or java.lang.Integer or Integer), or a short (short or java.lang.Short or Short).</p>
2971 * <p><b>OCL:</b> context HibernateEntity
2972 inv: let identifierTypeName : String = identifiers->first().type.fullyQualifiedName in hibernateGeneratorClass = 'increment' or hibernateGeneratorClass = 'identity' or hibernateGeneratorClass = 'sequence' or hibernateGeneratorClass = 'hilo' or hibernateGeneratorClass = 'seqhilo' or hibernateGeneratorClass = 'native' implies identifierTypeName = 'long' or identifierTypeName = 'java.lang.Long' or identifierTypeName = 'Long' or identifierTypeName = 'short' or identifierTypeName = 'java.lang.Short' or identifierTypeName = 'Short' or identifierTypeName = 'int' or identifierTypeName = 'java.lang.Integer' or identifierTypeName = 'Integer'</p>
2973 * <p><b>Constraint:</b> org::andromda::cartridges::hibernate::metafacades::HibernateEntity::uuid.hex or uuid.string generator class requires a String</p>
2974 * <p><b>Error:</b> If the hibernate identifier generator class is set as 'uuid.hex' or 'uuid.string' your mapped identifier type must resolve to 'String' or 'String'.</p>
2975 * <p><b>OCL:</b> context HibernateEntity
2976 inv: let identifierTypeName : String = identifiers->first().type.fullyQualifiedName in hibernateGeneratorClass = 'uuid.hex' or hibernateGeneratorClass = 'uuid.string' implies identifierTypeName = 'String' or identifierTypeName = 'String'</p>
2977 * @param validationMessages Collection<ModelValidationMessage>
2978 * @see MetafacadeBase#validateInvariants(Collection validationMessages)
2979 */
2980 @Override
2981 public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
2982 {
2983 this.getSuperEntity().validateInvariants(validationMessages);
2984 try
2985 {
2986 final Object contextElement = this.THIS();
2987 boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"hibernateInheritanceClass"))).booleanValue()?OCLCollections.forAll(OCLIntrospector.invoke(contextElement,"specializations"),new Predicate(){public boolean evaluate(Object object){return Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(object,"hibernateInheritanceClass"))).booleanValue();}}):true));
2988 if (!constraintValid)
2989 {
2990 validationMessages.add(
2991 new ModelValidationMessage(
2992 (MetafacadeBase)contextElement ,
2993 "org::andromda::cartridges::hibernate::metafacades::HibernateEntity::class inheritance strategy can not be mixed",
2994 "If your Hibernate inheritance strategy is defined as 'class' on the root entity. All sub classes must have an inheritance strategy of 'class' as well (the class inheritance strategy can not be mixed with any other types of strategies)."));
2995 }
2996 }
2997 catch (Throwable th)
2998 {
2999 Throwable cause = th.getCause();
3000 int depth = 0; // Some throwables have infinite recursion
3001 while (cause != null && depth < 7)
3002 {
3003 th = cause;
3004 depth++;
3005 }
3006 logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateEntity::class inheritance strategy can not be mixed' ON "
3007 + this.THIS().toString() + ": " + th.getMessage(), th);
3008 }
3009 try
3010 {
3011 final Object contextElement = this.THIS();
3012 boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(contextElement,"hibernateInheritanceSubclass"))).booleanValue()?OCLCollections.forAll(OCLIntrospector.invoke(contextElement,"specializations"),new Predicate(){public boolean evaluate(Object object){return Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(object,"hibernateInheritanceSubclass"))).booleanValue();}}):true));
3013 if (!constraintValid)
3014 {
3015 validationMessages.add(
3016 new ModelValidationMessage(
3017 (MetafacadeBase)contextElement ,
3018 "org::andromda::cartridges::hibernate::metafacades::HibernateEntity::subclass inheritance strategy can not be mixed",
3019 "If your Hibernate inheritance strategy is defined as 'subclass' on the root entity. All sub classes must have an inheritance strategy of 'subclass' as well (the subclass inheritance strategy can not be mixed with any other types of strategies)."));
3020 }
3021 }
3022 catch (Throwable th)
3023 {
3024 Throwable cause = th.getCause();
3025 int depth = 0; // Some throwables have infinite recursion
3026 while (cause != null && depth < 7)
3027 {
3028 th = cause;
3029 depth++;
3030 }
3031 logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateEntity::subclass inheritance strategy can not be mixed' ON "
3032 + this.THIS().toString() + ": " + th.getMessage(), th);
3033 }
3034 try
3035 {
3036 final Object contextElement = this.THIS();
3037 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.forAll(OCLIntrospector.invoke(contextElement,"attributes"),new Predicate(){public boolean evaluate(Object object){return Boolean.valueOf(String.valueOf((Boolean.valueOf(String.valueOf(!(Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(object,"type.enumeration"))).booleanValue()||OCLIntrospector.invoke(object,"type") instanceof HibernateEmbeddedValue))).booleanValue()?Boolean.valueOf(String.valueOf(OCLIntrospector.invoke(object,"type.dataType"))).booleanValue():true))).booleanValue();}}));
3038 if (!constraintValid)
3039 {
3040 validationMessages.add(
3041 new ModelValidationMessage(
3042 (MetafacadeBase)contextElement ,
3043 "org::andromda::cartridges::hibernate::metafacades::HibernateEntity::entity attributes must be of type data type.",
3044 "All attributes of an entity (other than enumerations and embedded values) must be of UML DataType. Complex types must be UML Associations, not attributes."));
3045 }
3046 }
3047 catch (Throwable th)
3048 {
3049 Throwable cause = th.getCause();
3050 int depth = 0; // Some throwables have infinite recursion
3051 while (cause != null && depth < 7)
3052 {
3053 th = cause;
3054 depth++;
3055 }
3056 logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateEntity::entity attributes must be of type data type.' ON "
3057 + this.THIS().toString() + ": " + th.getMessage(), th);
3058 }
3059 try
3060 {
3061 final Object contextElement = this.THIS();
3062 boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"increment")||OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"identity")||OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"sequence")||OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"hilo")||OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"seqhilo")||OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"native"))).booleanValue()?OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"long"):true)||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"java.lang.Long")||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"Long")||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"short")||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"java.lang.Short")||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"Short")||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"int")||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"java.lang.Integer")||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"Integer"));
3063 if (!constraintValid)
3064 {
3065 validationMessages.add(
3066 new ModelValidationMessage(
3067 (MetafacadeBase)contextElement ,
3068 "org::andromda::cartridges::hibernate::metafacades::HibernateEntity::increment, identity, sequence, hilo or seqhilo generator class requires a long, short, or int identifier",
3069 "If the hibernate identifier generator class is set as 'increment', 'identity', 'sequence', 'hilo', 'seqhilo' or 'native', your mapped identifier type must resolve to a long (long or java.lang.Long or Long) , an int (int or java.lang.Integer or Integer), or a short (short or java.lang.Short or Short)."));
3070 }
3071 }
3072 catch (Throwable th)
3073 {
3074 Throwable cause = th.getCause();
3075 int depth = 0; // Some throwables have infinite recursion
3076 while (cause != null && depth < 7)
3077 {
3078 th = cause;
3079 depth++;
3080 }
3081 logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateEntity::increment, identity, sequence, hilo or seqhilo generator class requires a long, short, or int identifier' ON "
3082 + this.THIS().toString() + ": " + th.getMessage(), th);
3083 }
3084 try
3085 {
3086 final Object contextElement = this.THIS();
3087 boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"uuid.hex")||OCLExpressions.equal(OCLIntrospector.invoke(contextElement,"hibernateGeneratorClass"),"uuid.string"))).booleanValue()?OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"java.lang.String"):true)||OCLExpressions.equal(OCLIntrospector.invoke(OCLCollections.first(OCLIntrospector.invoke(contextElement,"identifiers")),"type.fullyQualifiedName"),"String"));
3088 if (!constraintValid)
3089 {
3090 validationMessages.add(
3091 new ModelValidationMessage(
3092 (MetafacadeBase)contextElement ,
3093 "org::andromda::cartridges::hibernate::metafacades::HibernateEntity::uuid.hex or uuid.string generator class requires a String",
3094 "If the hibernate identifier generator class is set as 'uuid.hex' or 'uuid.string' your mapped identifier type must resolve to 'String' or 'String'."));
3095 }
3096 }
3097 catch (Throwable th)
3098 {
3099 Throwable cause = th.getCause();
3100 int depth = 0; // Some throwables have infinite recursion
3101 while (cause != null && depth < 7)
3102 {
3103 th = cause;
3104 depth++;
3105 }
3106 logger.error("Error validating constraint 'org::andromda::cartridges::hibernate::metafacades::HibernateEntity::uuid.hex or uuid.string generator class requires a String' ON "
3107 + this.THIS().toString() + ": " + th.getMessage(), th);
3108 }
3109 }
3110
3111 /**
3112 * The property that stores the name of the metafacade.
3113 */
3114 private static final String NAME_PROPERTY = "name";
3115 private static final String FQNAME_PROPERTY = "fullyQualifiedName";
3116
3117 /**
3118 * @see Object#toString()
3119 */
3120 @Override
3121 public String toString()
3122 {
3123 final StringBuilder toString = new StringBuilder(this.getClass().getName());
3124 toString.append("[");
3125 try
3126 {
3127 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
3128 }
3129 catch (final Throwable tryAgain)
3130 {
3131 try
3132 {
3133 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
3134 }
3135 catch (final Throwable ignore)
3136 {
3137 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
3138 }
3139 }
3140 toString.append("]");
3141 return toString.toString();
3142 }
3143 }