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