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