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.Destination;
19 import org.andromda.metafacades.uml.GeneralizableElementFacade;
20 import org.andromda.metafacades.uml.GeneralizationFacade;
21 import org.andromda.metafacades.uml.ModelElementFacade;
22 import org.andromda.metafacades.uml.ModelFacade;
23 import org.andromda.metafacades.uml.OperationFacade;
24 import org.andromda.metafacades.uml.PackageFacade;
25 import org.andromda.metafacades.uml.Role;
26 import org.andromda.metafacades.uml.Service;
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
33 /**
34 * Represents a service facade for hibernate java objects.
35 * MetafacadeLogic for HibernateService
36 *
37 * @see HibernateService
38 */
39 public abstract class HibernateServiceLogic
40 extends MetafacadeBase
41 implements HibernateService
42 {
43 /**
44 * The underlying UML object
45 * @see Object
46 */
47 protected Object metaObject;
48
49 /** Create Metafacade implementation instance using the MetafacadeFactory from the context
50 * @param metaObjectIn
51 * @param context
52 */
53 protected HibernateServiceLogic(Object metaObjectIn, String context)
54 {
55 super(metaObjectIn, getContext(context));
56 this.superService =
57 (Service)
58 MetafacadeFactory.getInstance().createFacadeImpl(
59 "org.andromda.metafacades.uml.Service",
60 metaObjectIn,
61 getContext(context));
62 this.metaObject = metaObjectIn;
63 }
64
65 /**
66 * Gets the context for this metafacade logic instance.
67 * @param context String. Set to HibernateService if null
68 * @return context String
69 */
70 private static String getContext(String context)
71 {
72 if (context == null)
73 {
74 context = "org.andromda.cartridges.hibernate.metafacades.HibernateService";
75 }
76 return context;
77 }
78
79 private Service superService;
80 private boolean superServiceInitialized = false;
81
82 /**
83 * Gets the Service parent instance.
84 * @return this.superService Service
85 */
86 private Service getSuperService()
87 {
88 if (!this.superServiceInitialized)
89 {
90 ((MetafacadeBase)this.superService).setMetafacadeContext(this.getMetafacadeContext());
91 this.superServiceInitialized = true;
92 }
93 return this.superService;
94 }
95
96 /** Reset context only for non-root metafacades
97 * @param context
98 * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
99 */
100 @Override
101 public void resetMetafacadeContext(String context)
102 {
103 if (!this.contextRoot) // reset context only for non-root metafacades
104 {
105 context = getContext(context); // to have same value as in original constructor call
106 setMetafacadeContext (context);
107 if (this.superServiceInitialized)
108 {
109 ((MetafacadeBase)this.superService).resetMetafacadeContext(context);
110 }
111 }
112 }
113
114 /**
115 * @return boolean true always
116 * @see HibernateService
117 */
118 public boolean isHibernateServiceMetaType()
119 {
120 return true;
121 }
122
123 // --------------- attributes ---------------------
124
125 /**
126 * @see org.andromda.cartridges.hibernate.metafacades.HibernateService#getEjbJndiName()
127 * @return String
128 */
129 protected abstract String handleGetEjbJndiName();
130
131 private String __ejbJndiName1a;
132 private boolean __ejbJndiName1aSet = false;
133
134 /**
135 * The JNDI name to which this entity EJB is bound.
136 * @return (String)handleGetEjbJndiName()
137 */
138 public final String getEjbJndiName()
139 {
140 String ejbJndiName1a = this.__ejbJndiName1a;
141 if (!this.__ejbJndiName1aSet)
142 {
143 // ejbJndiName has no pre constraints
144 ejbJndiName1a = handleGetEjbJndiName();
145 // ejbJndiName has no post constraints
146 this.__ejbJndiName1a = ejbJndiName1a;
147 if (isMetafacadePropertyCachingEnabled())
148 {
149 this.__ejbJndiName1aSet = true;
150 }
151 }
152 return ejbJndiName1a;
153 }
154
155 /**
156 * @see org.andromda.cartridges.hibernate.metafacades.HibernateService#getEjbViewType()
157 * @return String
158 */
159 protected abstract String handleGetEjbViewType();
160
161 private String __ejbViewType2a;
162 private boolean __ejbViewType2aSet = false;
163
164 /**
165 * The view type for the service ('remote' vs. 'local').
166 * @return (String)handleGetEjbViewType()
167 */
168 public final String getEjbViewType()
169 {
170 String ejbViewType2a = this.__ejbViewType2a;
171 if (!this.__ejbViewType2aSet)
172 {
173 // ejbViewType has no pre constraints
174 ejbViewType2a = handleGetEjbViewType();
175 // ejbViewType has no post constraints
176 this.__ejbViewType2a = ejbViewType2a;
177 if (isMetafacadePropertyCachingEnabled())
178 {
179 this.__ejbViewType2aSet = true;
180 }
181 }
182 return ejbViewType2a;
183 }
184
185 /**
186 * @see org.andromda.cartridges.hibernate.metafacades.HibernateService#isEjbStateful()
187 * @return boolean
188 */
189 protected abstract boolean handleIsEjbStateful();
190
191 private boolean __ejbStateful3a;
192 private boolean __ejbStateful3aSet = false;
193
194 /**
195 * Indicates whether or not if the service is an EJB it's stateful.
196 * @return (boolean)handleIsEjbStateful()
197 */
198 public final boolean isEjbStateful()
199 {
200 boolean ejbStateful3a = this.__ejbStateful3a;
201 if (!this.__ejbStateful3aSet)
202 {
203 // ejbStateful has no pre constraints
204 ejbStateful3a = handleIsEjbStateful();
205 // ejbStateful has no post constraints
206 this.__ejbStateful3a = ejbStateful3a;
207 if (isMetafacadePropertyCachingEnabled())
208 {
209 this.__ejbStateful3aSet = true;
210 }
211 }
212 return ejbStateful3a;
213 }
214
215 /**
216 * @see org.andromda.cartridges.hibernate.metafacades.HibernateService#isEjbRemoteView()
217 * @return boolean
218 */
219 protected abstract boolean handleIsEjbRemoteView();
220
221 private boolean __ejbRemoteView4a;
222 private boolean __ejbRemoteView4aSet = false;
223
224 /**
225 * Indicates whether or not the interfaces for this service are remote.
226 * @return (boolean)handleIsEjbRemoteView()
227 */
228 public final boolean isEjbRemoteView()
229 {
230 boolean ejbRemoteView4a = this.__ejbRemoteView4a;
231 if (!this.__ejbRemoteView4aSet)
232 {
233 // ejbRemoteView has no pre constraints
234 ejbRemoteView4a = handleIsEjbRemoteView();
235 // ejbRemoteView has no post constraints
236 this.__ejbRemoteView4a = ejbRemoteView4a;
237 if (isMetafacadePropertyCachingEnabled())
238 {
239 this.__ejbRemoteView4aSet = true;
240 }
241 }
242 return ejbRemoteView4a;
243 }
244
245 /**
246 * @return true
247 * @see Service
248 */
249 public boolean isServiceMetaType()
250 {
251 return true;
252 }
253
254 /**
255 * @return true
256 * @see ClassifierFacade
257 */
258 public boolean isClassifierFacadeMetaType()
259 {
260 return true;
261 }
262
263 /**
264 * @return true
265 * @see GeneralizableElementFacade
266 */
267 public boolean isGeneralizableElementFacadeMetaType()
268 {
269 return true;
270 }
271
272 /**
273 * @return true
274 * @see ModelElementFacade
275 */
276 public boolean isModelElementFacadeMetaType()
277 {
278 return true;
279 }
280
281 // ----------- delegates to Service ------------
282 /**
283 * Return the attribute which name matches the parameter
284 * @see ClassifierFacade#findAttribute(String name)
285 */
286 public AttributeFacade findAttribute(String name)
287 {
288 return this.getSuperService().findAttribute(name);
289 }
290
291 /**
292 * Those abstraction dependencies for which this classifier is the client.
293 * @see ClassifierFacade#getAbstractions()
294 */
295 public Collection<ClassifierFacade> getAbstractions()
296 {
297 return this.getSuperService().getAbstractions();
298 }
299
300 /**
301 * Lists all classes associated to this one and any ancestor classes (through generalization).
302 * There will be no duplicates. The order of the elements is predictable.
303 * @see ClassifierFacade#getAllAssociatedClasses()
304 */
305 public Collection<ClassifierFacade> getAllAssociatedClasses()
306 {
307 return this.getSuperService().getAllAssociatedClasses();
308 }
309
310 /**
311 * A collection containing all 'properties' of the classifier and its ancestors. Properties are
312 * any attributes and navigable connecting association ends.
313 * @see ClassifierFacade#getAllProperties()
314 */
315 public Collection<ModelElementFacade> getAllProperties()
316 {
317 return this.getSuperService().getAllProperties();
318 }
319
320 /**
321 * A collection containing all required and/or read-only 'properties' of the classifier and its
322 * ancestors. Properties are any attributes and navigable connecting association ends.
323 * @see ClassifierFacade#getAllRequiredConstructorParameters()
324 */
325 public Collection<ModelElementFacade> getAllRequiredConstructorParameters()
326 {
327 return this.getSuperService().getAllRequiredConstructorParameters();
328 }
329
330 /**
331 * Gets the array type for this classifier. If this classifier already represents an array, it
332 * just returns itself.
333 * @see ClassifierFacade#getArray()
334 */
335 public ClassifierFacade getArray()
336 {
337 return this.getSuperService().getArray();
338 }
339
340 /**
341 * The name of the classifier as an array.
342 * @see ClassifierFacade#getArrayName()
343 */
344 public String getArrayName()
345 {
346 return this.getSuperService().getArrayName();
347 }
348
349 /**
350 * Lists the classes associated to this one, there is no repitition of classes. The order of the
351 * elements is predictable.
352 * @see ClassifierFacade#getAssociatedClasses()
353 */
354 public Collection<ClassifierFacade> getAssociatedClasses()
355 {
356 return this.getSuperService().getAssociatedClasses();
357 }
358
359 /**
360 * Gets the association ends belonging to a classifier.
361 * @see ClassifierFacade#getAssociationEnds()
362 */
363 public List<AssociationEndFacade> getAssociationEnds()
364 {
365 return this.getSuperService().getAssociationEnds();
366 }
367
368 /**
369 * Gets the attributes that belong to the classifier.
370 * @see ClassifierFacade#getAttributes()
371 */
372 public List<AttributeFacade> getAttributes()
373 {
374 return this.getSuperService().getAttributes();
375 }
376
377 /**
378 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance
379 * hierarchy and gets the attributes from the super classes as well.
380 * @see ClassifierFacade#getAttributes(boolean follow)
381 */
382 public List<AttributeFacade> getAttributes(boolean follow)
383 {
384 return this.getSuperService().getAttributes(follow);
385 }
386
387 /**
388 * The fully qualified name of the classifier as an array.
389 * @see ClassifierFacade#getFullyQualifiedArrayName()
390 */
391 public String getFullyQualifiedArrayName()
392 {
393 return this.getSuperService().getFullyQualifiedArrayName();
394 }
395
396 /**
397 * Returns all those operations that could be implemented at this classifier's level. This means
398 * the operations owned by this classifier as well as any realized interface's operations
399 * (recursively) in case this classifier itself is not already an interface, or generalized when
400 * this classifier is an interface.
401 * @see ClassifierFacade#getImplementationOperations()
402 */
403 public Collection<OperationFacade> getImplementationOperations()
404 {
405 return this.getSuperService().getImplementationOperations();
406 }
407
408 /**
409 * A comma separated list of the fully qualified names of all implemented interfaces.
410 * @see ClassifierFacade#getImplementedInterfaceList()
411 */
412 public String getImplementedInterfaceList()
413 {
414 return this.getSuperService().getImplementedInterfaceList();
415 }
416
417 /**
418 * Those attributes that are scoped to an instance of this class.
419 * @see ClassifierFacade#getInstanceAttributes()
420 */
421 public Collection<AttributeFacade> getInstanceAttributes()
422 {
423 return this.getSuperService().getInstanceAttributes();
424 }
425
426 /**
427 * Those operations that are scoped to an instance of this class.
428 * @see ClassifierFacade#getInstanceOperations()
429 */
430 public List<OperationFacade> getInstanceOperations()
431 {
432 return this.getSuperService().getInstanceOperations();
433 }
434
435 /**
436 * Those interfaces that are abstractions of this classifier, this basically means this
437 * classifier realizes them.
438 * @see ClassifierFacade#getInterfaceAbstractions()
439 */
440 public Collection<ClassifierFacade> getInterfaceAbstractions()
441 {
442 return this.getSuperService().getInterfaceAbstractions();
443 }
444
445 /**
446 * A String representing a new Constructor declaration for this classifier type to be used in a
447 * Java environment.
448 * @see ClassifierFacade#getJavaNewString()
449 */
450 public String getJavaNewString()
451 {
452 return this.getSuperService().getJavaNewString();
453 }
454
455 /**
456 * A String representing the null-value for this classifier type to be used in a Java
457 * environment.
458 * @see ClassifierFacade#getJavaNullString()
459 */
460 public String getJavaNullString()
461 {
462 return this.getSuperService().getJavaNullString();
463 }
464
465 /**
466 * The other ends of this classifier's association ends which are navigable.
467 * @see ClassifierFacade#getNavigableConnectingEnds()
468 */
469 public Collection<AssociationEndFacade> getNavigableConnectingEnds()
470 {
471 return this.getSuperService().getNavigableConnectingEnds();
472 }
473
474 /**
475 * Get the other ends of this classifier's association ends which are navigable and if 'follow'
476 * is true goes up the inheritance hierarchy and gets the super association ends as well.
477 * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow)
478 */
479 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow)
480 {
481 return this.getSuperService().getNavigableConnectingEnds(follow);
482 }
483
484 /**
485 * Assuming that the classifier is an array, this will return the non array type of the
486 * classifier from
487 * the model. If the classifier is NOT an array, it will just return itself.
488 * @see ClassifierFacade#getNonArray()
489 */
490 public ClassifierFacade getNonArray()
491 {
492 return this.getSuperService().getNonArray();
493 }
494
495 /**
496 * The attributes from this classifier in the form of an operation call (this example would be
497 * in Java): '(String attributeOne, String attributeTwo). If there were no attributes on the
498 * classifier, the result would be an empty '()'.
499 * @see ClassifierFacade#getOperationCallFromAttributes()
500 */
501 public String getOperationCallFromAttributes()
502 {
503 return this.getSuperService().getOperationCallFromAttributes();
504 }
505
506 /**
507 * The operations owned by this classifier.
508 * @see ClassifierFacade#getOperations()
509 */
510 public List<OperationFacade> getOperations()
511 {
512 return this.getSuperService().getOperations();
513 }
514
515 /**
516 * A collection containing all 'properties' of the classifier. Properties are any attributes
517 * and navigable connecting association ends.
518 * @see ClassifierFacade#getProperties()
519 */
520 public List<ModelElementFacade> getProperties()
521 {
522 return this.getSuperService().getProperties();
523 }
524
525 /**
526 * Gets all properties (attributes and navigable association ends) for the classifier and if
527 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super
528 * classes as well.
529 * @see ClassifierFacade#getProperties(boolean follow)
530 */
531 public List getProperties(boolean follow)
532 {
533 return this.getSuperService().getProperties(follow);
534 }
535
536 /**
537 * A collection containing all required and/or read-only 'properties' of the classifier.
538 * Properties are any attributes and navigable connecting association ends.
539 * @see ClassifierFacade#getRequiredConstructorParameters()
540 */
541 public Collection<ModelElementFacade> getRequiredConstructorParameters()
542 {
543 return this.getSuperService().getRequiredConstructorParameters();
544 }
545
546 /**
547 * Returns the serial version UID of the underlying model element.
548 * @see ClassifierFacade#getSerialVersionUID()
549 */
550 public long getSerialVersionUID()
551 {
552 return this.getSuperService().getSerialVersionUID();
553 }
554
555 /**
556 * Those attributes that are scoped to the definition of this class.
557 * @see ClassifierFacade#getStaticAttributes()
558 */
559 public Collection<AttributeFacade> getStaticAttributes()
560 {
561 return this.getSuperService().getStaticAttributes();
562 }
563
564 /**
565 * Those operations that are scoped to the definition of this class.
566 * @see ClassifierFacade#getStaticOperations()
567 */
568 public List<OperationFacade> getStaticOperations()
569 {
570 return this.getSuperService().getStaticOperations();
571 }
572
573 /**
574 * This class' superclass, returns the generalization if it is a ClassifierFacade, null
575 * otherwise.
576 * @see ClassifierFacade#getSuperClass()
577 */
578 public ClassifierFacade getSuperClass()
579 {
580 return this.getSuperService().getSuperClass();
581 }
582
583 /**
584 * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long'
585 * maps to 'Long'). If the classifier doesn't have a wrapper defined for it, this method will
586 * return a null. Note that wrapper mappings must be defined for the namespace by defining the
587 * 'wrapperMappingsUri', this property must point to the location of the mappings file which
588 * maps the primitives to wrapper types.
589 * @see ClassifierFacade#getWrapperName()
590 */
591 public String getWrapperName()
592 {
593 return this.getSuperService().getWrapperName();
594 }
595
596 /**
597 * Indicates if this classifier is 'abstract'.
598 * @see ClassifierFacade#isAbstract()
599 */
600 public boolean isAbstract()
601 {
602 return this.getSuperService().isAbstract();
603 }
604
605 /**
606 * True if this classifier represents an array type. False otherwise.
607 * @see ClassifierFacade#isArrayType()
608 */
609 public boolean isArrayType()
610 {
611 return this.getSuperService().isArrayType();
612 }
613
614 /**
615 * True if the ClassifierFacade is an AssociationClass.
616 * @see ClassifierFacade#isAssociationClass()
617 */
618 public boolean isAssociationClass()
619 {
620 return this.getSuperService().isAssociationClass();
621 }
622
623 /**
624 * Returns true if this type represents a Blob type.
625 * @see ClassifierFacade#isBlobType()
626 */
627 public boolean isBlobType()
628 {
629 return this.getSuperService().isBlobType();
630 }
631
632 /**
633 * Indicates if this type represents a boolean type or not.
634 * @see ClassifierFacade#isBooleanType()
635 */
636 public boolean isBooleanType()
637 {
638 return this.getSuperService().isBooleanType();
639 }
640
641 /**
642 * Indicates if this type represents a char, Character, or java.lang.Character type or not.
643 * @see ClassifierFacade#isCharacterType()
644 */
645 public boolean isCharacterType()
646 {
647 return this.getSuperService().isCharacterType();
648 }
649
650 /**
651 * Returns true if this type represents a Clob type.
652 * @see ClassifierFacade#isClobType()
653 */
654 public boolean isClobType()
655 {
656 return this.getSuperService().isClobType();
657 }
658
659 /**
660 * True if this classifier represents a collection type. False otherwise.
661 * @see ClassifierFacade#isCollectionType()
662 */
663 public boolean isCollectionType()
664 {
665 return this.getSuperService().isCollectionType();
666 }
667
668 /**
669 * True/false depending on whether or not this classifier represents a datatype. A data type is
670 * a type whose instances are identified only by their value. A data type may contain attributes
671 * to support the modeling of structured data types.
672 * @see ClassifierFacade#isDataType()
673 */
674 public boolean isDataType()
675 {
676 return this.getSuperService().isDataType();
677 }
678
679 /**
680 * True when this classifier is a date type.
681 * @see ClassifierFacade#isDateType()
682 */
683 public boolean isDateType()
684 {
685 return this.getSuperService().isDateType();
686 }
687
688 /**
689 * Indicates if this type represents a Double type or not.
690 * @see ClassifierFacade#isDoubleType()
691 */
692 public boolean isDoubleType()
693 {
694 return this.getSuperService().isDoubleType();
695 }
696
697 /**
698 * Indicates whether or not this classifier represents an "EmbeddedValue'.
699 * @see ClassifierFacade#isEmbeddedValue()
700 */
701 public boolean isEmbeddedValue()
702 {
703 return this.getSuperService().isEmbeddedValue();
704 }
705
706 /**
707 * True if this classifier is in fact marked as an enumeration.
708 * @see ClassifierFacade#isEnumeration()
709 */
710 public boolean isEnumeration()
711 {
712 return this.getSuperService().isEnumeration();
713 }
714
715 /**
716 * Returns true if this type represents a 'file' type.
717 * @see ClassifierFacade#isFileType()
718 */
719 public boolean isFileType()
720 {
721 return this.getSuperService().isFileType();
722 }
723
724 /**
725 * Indicates if this type represents a Float type or not.
726 * @see ClassifierFacade#isFloatType()
727 */
728 public boolean isFloatType()
729 {
730 return this.getSuperService().isFloatType();
731 }
732
733 /**
734 * Indicates if this type represents an int or Integer or java.lang.Integer type or not.
735 * @see ClassifierFacade#isIntegerType()
736 */
737 public boolean isIntegerType()
738 {
739 return this.getSuperService().isIntegerType();
740 }
741
742 /**
743 * True/false depending on whether or not this Classifier represents an interface.
744 * @see ClassifierFacade#isInterface()
745 */
746 public boolean isInterface()
747 {
748 return this.getSuperService().isInterface();
749 }
750
751 /**
752 * True if this classifier cannot be extended and represent a leaf in the inheritance tree.
753 * @see ClassifierFacade#isLeaf()
754 */
755 public boolean isLeaf()
756 {
757 return this.getSuperService().isLeaf();
758 }
759
760 /**
761 * True if this classifier represents a list type. False otherwise.
762 * @see ClassifierFacade#isListType()
763 */
764 public boolean isListType()
765 {
766 return this.getSuperService().isListType();
767 }
768
769 /**
770 * Indicates if this type represents a Long type or not.
771 * @see ClassifierFacade#isLongType()
772 */
773 public boolean isLongType()
774 {
775 return this.getSuperService().isLongType();
776 }
777
778 /**
779 * Indicates whether or not this classifier represents a Map type.
780 * @see ClassifierFacade#isMapType()
781 */
782 public boolean isMapType()
783 {
784 return this.getSuperService().isMapType();
785 }
786
787 /**
788 * Indicates whether or not this classifier represents a primitive type.
789 * @see ClassifierFacade#isPrimitive()
790 */
791 public boolean isPrimitive()
792 {
793 return this.getSuperService().isPrimitive();
794 }
795
796 /**
797 * True if this classifier represents a set type. False otherwise.
798 * @see ClassifierFacade#isSetType()
799 */
800 public boolean isSetType()
801 {
802 return this.getSuperService().isSetType();
803 }
804
805 /**
806 * Indicates whether or not this classifier represents a string type.
807 * @see ClassifierFacade#isStringType()
808 */
809 public boolean isStringType()
810 {
811 return this.getSuperService().isStringType();
812 }
813
814 /**
815 * Indicates whether or not this classifier represents a time type.
816 * @see ClassifierFacade#isTimeType()
817 */
818 public boolean isTimeType()
819 {
820 return this.getSuperService().isTimeType();
821 }
822
823 /**
824 * Returns true if this type is a wrapped primitive type.
825 * @see ClassifierFacade#isWrappedPrimitive()
826 */
827 public boolean isWrappedPrimitive()
828 {
829 return this.getSuperService().isWrappedPrimitive();
830 }
831
832 /**
833 * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
834 * to true.
835 * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow)
836 */
837 public Object findTaggedValue(String tagName, boolean follow)
838 {
839 return this.getSuperService().findTaggedValue(tagName, follow);
840 }
841
842 /**
843 * All generalizations for this generalizable element, goes up the inheritance tree.
844 * @see GeneralizableElementFacade#getAllGeneralizations()
845 */
846 public Collection<GeneralizableElementFacade> getAllGeneralizations()
847 {
848 return this.getSuperService().getAllGeneralizations();
849 }
850
851 /**
852 * All specializations (travels down the inheritance hierarchy).
853 * @see GeneralizableElementFacade#getAllSpecializations()
854 */
855 public Collection<GeneralizableElementFacade> getAllSpecializations()
856 {
857 return this.getSuperService().getAllSpecializations();
858 }
859
860 /**
861 * Gets the direct generalization for this generalizable element.
862 * @see GeneralizableElementFacade#getGeneralization()
863 */
864 public GeneralizableElementFacade getGeneralization()
865 {
866 return this.getSuperService().getGeneralization();
867 }
868
869 /**
870 * Gets the actual links that this generalization element is part of (it plays either the
871 * specialization or generalization).
872 * @see GeneralizableElementFacade#getGeneralizationLinks()
873 */
874 public Collection<GeneralizationFacade> getGeneralizationLinks()
875 {
876 return this.getSuperService().getGeneralizationLinks();
877 }
878
879 /**
880 * A comma separated list of the fully qualified names of all generalizations.
881 * @see GeneralizableElementFacade#getGeneralizationList()
882 */
883 public String getGeneralizationList()
884 {
885 return this.getSuperService().getGeneralizationList();
886 }
887
888 /**
889 * The element found when you recursively follow the generalization path up to the root. If an
890 * element has no generalization itself will be considered the root.
891 * @see GeneralizableElementFacade#getGeneralizationRoot()
892 */
893 public GeneralizableElementFacade getGeneralizationRoot()
894 {
895 return this.getSuperService().getGeneralizationRoot();
896 }
897
898 /**
899 * Return all generalizations (ancestors) from this generalizable element.
900 * @see GeneralizableElementFacade#getGeneralizations()
901 */
902 public Collection<GeneralizableElementFacade> getGeneralizations()
903 {
904 return this.getSuperService().getGeneralizations();
905 }
906
907 /**
908 * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
909 * @see GeneralizableElementFacade#getSpecializations()
910 */
911 public Collection<GeneralizableElementFacade> getSpecializations()
912 {
913 return this.getSuperService().getSpecializations();
914 }
915
916 /**
917 * Copies all tagged values from the given ModelElementFacade to this model element facade.
918 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
919 */
920 public void copyTaggedValues(ModelElementFacade element)
921 {
922 this.getSuperService().copyTaggedValues(element);
923 }
924
925 /**
926 * Finds the tagged value with the specified 'tagName'. In case there are more values the first
927 * one found will be returned.
928 * @see ModelElementFacade#findTaggedValue(String tagName)
929 */
930 public Object findTaggedValue(String tagName)
931 {
932 return this.getSuperService().findTaggedValue(tagName);
933 }
934
935 /**
936 * Returns all the values for the tagged value with the specified name. The returned collection
937 * will contains only String instances, or will be empty. Never null.
938 * @see ModelElementFacade#findTaggedValues(String tagName)
939 */
940 public Collection<Object> findTaggedValues(String tagName)
941 {
942 return this.getSuperService().findTaggedValues(tagName);
943 }
944
945 /**
946 * Returns the fully qualified name of the model element. The fully qualified name includes
947 * complete package qualified name of the underlying model element. The templates parameter will
948 * be replaced by the correct one given the binding relation of the parameter to this element.
949 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
950 */
951 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
952 {
953 return this.getSuperService().getBindedFullyQualifiedName(bindedElement);
954 }
955
956 /**
957 * Gets all constraints belonging to the model element.
958 * @see ModelElementFacade#getConstraints()
959 */
960 public Collection<ConstraintFacade> getConstraints()
961 {
962 return this.getSuperService().getConstraints();
963 }
964
965 /**
966 * Returns the constraints of the argument kind that have been placed onto this model. Typical
967 * kinds are "inv", "pre" and "post". Other kinds are possible.
968 * @see ModelElementFacade#getConstraints(String kind)
969 */
970 public Collection<ConstraintFacade> getConstraints(String kind)
971 {
972 return this.getSuperService().getConstraints(kind);
973 }
974
975 /**
976 * Gets the documentation for the model element, The indent argument is prefixed to each line.
977 * By default this method wraps lines after 64 characters.
978 * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
979 * @see ModelElementFacade#getDocumentation(String indent)
980 */
981 public String getDocumentation(String indent)
982 {
983 return this.getSuperService().getDocumentation(indent);
984 }
985
986 /**
987 * This method returns the documentation for this model element, with the lines wrapped after
988 * the specified number of characters, values of less than 1 will indicate no line wrapping is
989 * required. By default paragraphs are returned as HTML.
990 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
991 * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
992 */
993 public String getDocumentation(String indent, int lineLength)
994 {
995 return this.getSuperService().getDocumentation(indent, lineLength);
996 }
997
998 /**
999 * This method returns the documentation for this model element, with the lines wrapped after
1000 * the specified number of characters, values of less than 1 will indicate no line wrapping is
1001 * required. HTML style determines if HTML Escaping is applied.
1002 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
1003 */
1004 public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
1005 {
1006 return this.getSuperService().getDocumentation(indent, lineLength, htmlStyle);
1007 }
1008
1009 /**
1010 * The fully qualified name of this model element.
1011 * @see ModelElementFacade#getFullyQualifiedName()
1012 */
1013 public String getFullyQualifiedName()
1014 {
1015 return this.getSuperService().getFullyQualifiedName();
1016 }
1017
1018 /**
1019 * Returns the fully qualified name of the model element. The fully qualified name includes
1020 * complete package qualified name of the underlying model element. If modelName is true, then
1021 * the original name of the model element (the name contained within the model) will be the name
1022 * returned, otherwise a name from a language mapping will be returned.
1023 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
1024 */
1025 public String getFullyQualifiedName(boolean modelName)
1026 {
1027 return this.getSuperService().getFullyQualifiedName(modelName);
1028 }
1029
1030 /**
1031 * Returns the fully qualified name as a path, the returned value always starts with out a slash
1032 * '/'.
1033 * @see ModelElementFacade#getFullyQualifiedNamePath()
1034 */
1035 public String getFullyQualifiedNamePath()
1036 {
1037 return this.getSuperService().getFullyQualifiedNamePath();
1038 }
1039
1040 /**
1041 * Gets the unique identifier of the underlying model element.
1042 * @see ModelElementFacade#getId()
1043 */
1044 public String getId()
1045 {
1046 return this.getSuperService().getId();
1047 }
1048
1049 /**
1050 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
1051 * are not represented by other properties, i.e. native, transient, volatile, synchronized,
1052 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
1053 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
1054 * JDK5 compiler level.
1055 * @see ModelElementFacade#getKeywords()
1056 */
1057 public Collection<String> getKeywords()
1058 {
1059 return this.getSuperService().getKeywords();
1060 }
1061
1062 /**
1063 * UML2: Retrieves a localized label for this named element.
1064 * @see ModelElementFacade#getLabel()
1065 */
1066 public String getLabel()
1067 {
1068 return this.getSuperService().getLabel();
1069 }
1070
1071 /**
1072 * The language mappings that have been set for this model element.
1073 * @see ModelElementFacade#getLanguageMappings()
1074 */
1075 public TypeMappings getLanguageMappings()
1076 {
1077 return this.getSuperService().getLanguageMappings();
1078 }
1079
1080 /**
1081 * Return the model containing this model element (multiple models may be loaded and processed
1082 * at the same time).
1083 * @see ModelElementFacade#getModel()
1084 */
1085 public ModelFacade getModel()
1086 {
1087 return this.getSuperService().getModel();
1088 }
1089
1090 /**
1091 * The name of the model element.
1092 * @see ModelElementFacade#getName()
1093 */
1094 public String getName()
1095 {
1096 return this.getSuperService().getName();
1097 }
1098
1099 /**
1100 * Gets the package to which this model element belongs.
1101 * @see ModelElementFacade#getPackage()
1102 */
1103 public ModelElementFacade getPackage()
1104 {
1105 return this.getSuperService().getPackage();
1106 }
1107
1108 /**
1109 * The name of this model element's package.
1110 * @see ModelElementFacade#getPackageName()
1111 */
1112 public String getPackageName()
1113 {
1114 return this.getSuperService().getPackageName();
1115 }
1116
1117 /**
1118 * Gets the package name (optionally providing the ability to retrieve the model name and not
1119 * the mapped name).
1120 * @see ModelElementFacade#getPackageName(boolean modelName)
1121 */
1122 public String getPackageName(boolean modelName)
1123 {
1124 return this.getSuperService().getPackageName(modelName);
1125 }
1126
1127 /**
1128 * Returns the package as a path, the returned value always starts with out a slash '/'.
1129 * @see ModelElementFacade#getPackagePath()
1130 */
1131 public String getPackagePath()
1132 {
1133 return this.getSuperService().getPackagePath();
1134 }
1135
1136 /**
1137 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
1138 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
1139 * the names of the containing namespaces starting at the root of the hierarchy and ending with
1140 * the name of the NamedElement itself.
1141 * @see ModelElementFacade#getQualifiedName()
1142 */
1143 public String getQualifiedName()
1144 {
1145 return this.getSuperService().getQualifiedName();
1146 }
1147
1148 /**
1149 * Gets the root package for the model element.
1150 * @see ModelElementFacade#getRootPackage()
1151 */
1152 public PackageFacade getRootPackage()
1153 {
1154 return this.getSuperService().getRootPackage();
1155 }
1156
1157 /**
1158 * Gets the dependencies for which this model element is the source.
1159 * @see ModelElementFacade#getSourceDependencies()
1160 */
1161 public Collection<DependencyFacade> getSourceDependencies()
1162 {
1163 return this.getSuperService().getSourceDependencies();
1164 }
1165
1166 /**
1167 * If this model element is the context of an activity graph, this represents that activity
1168 * graph.
1169 * @see ModelElementFacade#getStateMachineContext()
1170 */
1171 public StateMachineFacade getStateMachineContext()
1172 {
1173 return this.getSuperService().getStateMachineContext();
1174 }
1175
1176 /**
1177 * The collection of ALL stereotype names for this model element.
1178 * @see ModelElementFacade#getStereotypeNames()
1179 */
1180 public Collection<String> getStereotypeNames()
1181 {
1182 return this.getSuperService().getStereotypeNames();
1183 }
1184
1185 /**
1186 * Gets all stereotypes for this model element.
1187 * @see ModelElementFacade#getStereotypes()
1188 */
1189 public Collection<StereotypeFacade> getStereotypes()
1190 {
1191 return this.getSuperService().getStereotypes();
1192 }
1193
1194 /**
1195 * Return the TaggedValues associated with this model element, under all stereotypes.
1196 * @see ModelElementFacade#getTaggedValues()
1197 */
1198 public Collection<TaggedValueFacade> getTaggedValues()
1199 {
1200 return this.getSuperService().getTaggedValues();
1201 }
1202
1203 /**
1204 * Gets the dependencies for which this model element is the target.
1205 * @see ModelElementFacade#getTargetDependencies()
1206 */
1207 public Collection<DependencyFacade> getTargetDependencies()
1208 {
1209 return this.getSuperService().getTargetDependencies();
1210 }
1211
1212 /**
1213 * Get the template parameter for this model element having the parameterName
1214 * @see ModelElementFacade#getTemplateParameter(String parameterName)
1215 */
1216 public Object getTemplateParameter(String parameterName)
1217 {
1218 return this.getSuperService().getTemplateParameter(parameterName);
1219 }
1220
1221 /**
1222 * Get the template parameters for this model element
1223 * @see ModelElementFacade#getTemplateParameters()
1224 */
1225 public Collection<TemplateParameterFacade> getTemplateParameters()
1226 {
1227 return this.getSuperService().getTemplateParameters();
1228 }
1229
1230 /**
1231 * The visibility (i.e. public, private, protected or package) of the model element, will
1232 * attempt a lookup for these values in the language mappings (if any).
1233 * @see ModelElementFacade#getVisibility()
1234 */
1235 public String getVisibility()
1236 {
1237 return this.getSuperService().getVisibility();
1238 }
1239
1240 /**
1241 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1242 * is taken into account when searching for the stereotype), false otherwise.
1243 * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1244 */
1245 public boolean hasExactStereotype(String stereotypeName)
1246 {
1247 return this.getSuperService().hasExactStereotype(stereotypeName);
1248 }
1249
1250 /**
1251 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1252 * pipe, semicolon, or << >>
1253 * @see ModelElementFacade#hasKeyword(String keywordName)
1254 */
1255 public boolean hasKeyword(String keywordName)
1256 {
1257 return this.getSuperService().hasKeyword(keywordName);
1258 }
1259
1260 /**
1261 * Returns true if the model element has the specified stereotype. If the stereotype itself
1262 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1263 * one of the stereotype's ancestors has a matching name this method will return true, false
1264 * otherwise.
1265 * For example, if we have a certain stereotype called <<exception>> and a model element has a
1266 * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1267 * method with 'stereotypeName' defined as 'exception' the method would return true since
1268 * <<applicationException>> inherits from <<exception>>. If you want to check if the model
1269 * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1270 * @see ModelElementFacade#hasStereotype(String stereotypeName)
1271 */
1272 public boolean hasStereotype(String stereotypeName)
1273 {
1274 return this.getSuperService().hasStereotype(stereotypeName);
1275 }
1276
1277 /**
1278 * True if there are target dependencies from this element that are instances of BindingFacade.
1279 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1280 * @see ModelElementFacade#isBindingDependenciesPresent()
1281 */
1282 public boolean isBindingDependenciesPresent()
1283 {
1284 return this.getSuperService().isBindingDependenciesPresent();
1285 }
1286
1287 /**
1288 * Indicates if any constraints are present on this model element.
1289 * @see ModelElementFacade#isConstraintsPresent()
1290 */
1291 public boolean isConstraintsPresent()
1292 {
1293 return this.getSuperService().isConstraintsPresent();
1294 }
1295
1296 /**
1297 * Indicates if any documentation is present on this model element.
1298 * @see ModelElementFacade#isDocumentationPresent()
1299 */
1300 public boolean isDocumentationPresent()
1301 {
1302 return this.getSuperService().isDocumentationPresent();
1303 }
1304
1305 /**
1306 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1307 * @see ModelElementFacade#isReservedWord()
1308 */
1309 public boolean isReservedWord()
1310 {
1311 return this.getSuperService().isReservedWord();
1312 }
1313
1314 /**
1315 * True is there are template parameters on this model element. For UML2, applies to Class,
1316 * Operation, Property, and Parameter.
1317 * @see ModelElementFacade#isTemplateParametersPresent()
1318 */
1319 public boolean isTemplateParametersPresent()
1320 {
1321 return this.getSuperService().isTemplateParametersPresent();
1322 }
1323
1324 /**
1325 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1326 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1327 * Enumerations and Interfaces, optionally applies on other model elements.
1328 * @see ModelElementFacade#isValidIdentifierName()
1329 */
1330 public boolean isValidIdentifierName()
1331 {
1332 return this.getSuperService().isValidIdentifierName();
1333 }
1334
1335 /**
1336 * Searches for the constraint with the specified 'name' on this model element, and if found
1337 * translates it using the specified 'translation' from a translation library discovered by the
1338 * framework.
1339 * @see ModelElementFacade#translateConstraint(String name, String translation)
1340 */
1341 public String translateConstraint(String name, String translation)
1342 {
1343 return this.getSuperService().translateConstraint(name, translation);
1344 }
1345
1346 /**
1347 * Translates all constraints belonging to this model element with the given 'translation'.
1348 * @see ModelElementFacade#translateConstraints(String translation)
1349 */
1350 public String[] translateConstraints(String translation)
1351 {
1352 return this.getSuperService().translateConstraints(translation);
1353 }
1354
1355 /**
1356 * Translates the constraints of the specified 'kind' belonging to this model element.
1357 * @see ModelElementFacade#translateConstraints(String kind, String translation)
1358 */
1359 public String[] translateConstraints(String kind, String translation)
1360 {
1361 return this.getSuperService().translateConstraints(kind, translation);
1362 }
1363
1364 /**
1365 * Returns a collection of all entities this service and its ancestors have a relation to.
1366 * @see Service#getAllEntityReferences()
1367 */
1368 public Collection<DependencyFacade> getAllEntityReferences()
1369 {
1370 return this.getSuperService().getAllEntityReferences();
1371 }
1372
1373 /**
1374 * All messaging destinations that belong to this service and all decendent services.
1375 * @see Service#getAllMessagingDestinations()
1376 */
1377 public Collection<Destination> getAllMessagingDestinations()
1378 {
1379 return this.getSuperService().getAllMessagingDestinations();
1380 }
1381
1382 /**
1383 * All roles associated with the service, this includes both roles that have access to the
1384 * entire service, and any roles that have access to a single operation.
1385 * @see Service#getAllRoles()
1386 */
1387 public Collection<Role> getAllRoles()
1388 {
1389 return this.getSuperService().getAllRoles();
1390 }
1391
1392 /**
1393 * Returns a collection of all services this service and its ancestors have a relation to.
1394 * @see Service#getAllServiceReferences()
1395 */
1396 public Collection<DependencyFacade> getAllServiceReferences()
1397 {
1398 return this.getSuperService().getAllServiceReferences();
1399 }
1400
1401 /**
1402 * References to all entities to which this service has a dependency.
1403 * @see Service#getEntityReferences()
1404 */
1405 public Collection<DependencyFacade> getEntityReferences()
1406 {
1407 return this.getSuperService().getEntityReferences();
1408 }
1409
1410 /**
1411 * All messaging destinations available to this service.
1412 * @see Service#getMessagingDestinations()
1413 */
1414 public Collection<Destination> getMessagingDestinations()
1415 {
1416 return this.getSuperService().getMessagingDestinations();
1417 }
1418
1419 /**
1420 * The roles of the service, these are the actor's that can access this service.
1421 * @see Service#getRoles()
1422 */
1423 public Collection<Role> getRoles()
1424 {
1425 return this.getSuperService().getRoles();
1426 }
1427
1428 /**
1429 * References to all services to which this service has a dependency.
1430 * @see Service#getServiceReferences()
1431 */
1432 public Collection<DependencyFacade> getServiceReferences()
1433 {
1434 return this.getSuperService().getServiceReferences();
1435 }
1436
1437 /**
1438 * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1439 */
1440 @Override
1441 public void initialize()
1442 {
1443 this.getSuperService().initialize();
1444 }
1445
1446 /**
1447 * @return Object getSuperService().getValidationOwner()
1448 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1449 */
1450 @Override
1451 public Object getValidationOwner()
1452 {
1453 Object owner = this.getSuperService().getValidationOwner();
1454 return owner;
1455 }
1456
1457 /**
1458 * @return String getSuperService().getValidationName()
1459 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1460 */
1461 @Override
1462 public String getValidationName()
1463 {
1464 String name = this.getSuperService().getValidationName();
1465 return name;
1466 }
1467
1468 /**
1469 * @param validationMessages Collection<ModelValidationMessage>
1470 * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1471 */
1472 @Override
1473 public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1474 {
1475 this.getSuperService().validateInvariants(validationMessages);
1476 }
1477
1478 /**
1479 * The property that stores the name of the metafacade.
1480 */
1481 private static final String NAME_PROPERTY = "name";
1482 private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1483
1484 /**
1485 * @see Object#toString()
1486 */
1487 @Override
1488 public String toString()
1489 {
1490 final StringBuilder toString = new StringBuilder(this.getClass().getName());
1491 toString.append("[");
1492 try
1493 {
1494 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1495 }
1496 catch (final Throwable tryAgain)
1497 {
1498 try
1499 {
1500 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1501 }
1502 catch (final Throwable ignore)
1503 {
1504 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1505 }
1506 }
1507 toString.append("]");
1508 return toString.toString();
1509 }
1510 }