1 // license-header java merge-point
2 //
3 // Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
4 //
5 package org.andromda.cartridges.spring.metafacades;
6
7 import java.util.Collection;
8 import org.andromda.core.common.Introspector;
9 import org.andromda.core.metafacade.MetafacadeBase;
10 import org.andromda.core.metafacade.MetafacadeFactory;
11 import org.andromda.core.metafacade.ModelValidationMessage;
12 import org.andromda.metafacades.uml.AttributeFacade;
13 import org.andromda.metafacades.uml.ClassifierFacade;
14 import org.andromda.metafacades.uml.ConstraintFacade;
15 import org.andromda.metafacades.uml.DependencyFacade;
16 import org.andromda.metafacades.uml.EnumerationFacade;
17 import org.andromda.metafacades.uml.ModelElementFacade;
18 import org.andromda.metafacades.uml.ModelFacade;
19 import org.andromda.metafacades.uml.PackageFacade;
20 import org.andromda.metafacades.uml.StateMachineFacade;
21 import org.andromda.metafacades.uml.StereotypeFacade;
22 import org.andromda.metafacades.uml.TaggedValueFacade;
23 import org.andromda.metafacades.uml.TemplateParameterFacade;
24 import org.andromda.metafacades.uml.TypeMappings;
25
26 /**
27 * Represents a criteria search attribute.
28 * MetafacadeLogic for SpringCriteriaAttribute
29 *
30 * @see SpringCriteriaAttribute
31 */
32 public abstract class SpringCriteriaAttributeLogic
33 extends MetafacadeBase
34 implements SpringCriteriaAttribute
35 {
36 /**
37 * The underlying UML object
38 * @see Object
39 */
40 protected Object metaObject;
41
42 /** Create Metafacade implementation instance using the MetafacadeFactory from the context
43 * @param metaObjectIn
44 * @param context
45 */
46 protected SpringCriteriaAttributeLogic(Object metaObjectIn, String context)
47 {
48 super(metaObjectIn, getContext(context));
49 this.superAttributeFacade =
50 (AttributeFacade)
51 MetafacadeFactory.getInstance().createFacadeImpl(
52 "org.andromda.metafacades.uml.AttributeFacade",
53 metaObjectIn,
54 getContext(context));
55 this.metaObject = metaObjectIn;
56 }
57
58 /**
59 * Gets the context for this metafacade logic instance.
60 * @param context String. Set to SpringCriteriaAttribute if null
61 * @return context String
62 */
63 private static String getContext(String context)
64 {
65 if (context == null)
66 {
67 context = "org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute";
68 }
69 return context;
70 }
71
72 private AttributeFacade superAttributeFacade;
73 private boolean superAttributeFacadeInitialized = false;
74
75 /**
76 * Gets the AttributeFacade parent instance.
77 * @return this.superAttributeFacade AttributeFacade
78 */
79 private AttributeFacade getSuperAttributeFacade()
80 {
81 if (!this.superAttributeFacadeInitialized)
82 {
83 ((MetafacadeBase)this.superAttributeFacade).setMetafacadeContext(this.getMetafacadeContext());
84 this.superAttributeFacadeInitialized = true;
85 }
86 return this.superAttributeFacade;
87 }
88
89 /** Reset context only for non-root metafacades
90 * @param context
91 * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
92 */
93 @Override
94 public void resetMetafacadeContext(String context)
95 {
96 if (!this.contextRoot) // reset context only for non-root metafacades
97 {
98 context = getContext(context); // to have same value as in original constructor call
99 setMetafacadeContext (context);
100 if (this.superAttributeFacadeInitialized)
101 {
102 ((MetafacadeBase)this.superAttributeFacade).resetMetafacadeContext(context);
103 }
104 }
105 }
106
107 /**
108 * @return boolean true always
109 * @see SpringCriteriaAttribute
110 */
111 public boolean isSpringCriteriaAttributeMetaType()
112 {
113 return true;
114 }
115
116 // --------------- attributes ---------------------
117
118 /**
119 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getAttributeName()
120 * @return String
121 */
122 protected abstract String handleGetAttributeName();
123
124 private String __attributeName1a;
125 private boolean __attributeName1aSet = false;
126
127 /**
128 * Returns the name of the attribute to be used in the criteria query.
129 * @return (String)handleGetAttributeName()
130 */
131 public final String getAttributeName()
132 {
133 String attributeName1a = this.__attributeName1a;
134 if (!this.__attributeName1aSet)
135 {
136 // attributeName has no pre constraints
137 attributeName1a = handleGetAttributeName();
138 // attributeName has no post constraints
139 this.__attributeName1a = attributeName1a;
140 if (isMetafacadePropertyCachingEnabled())
141 {
142 this.__attributeName1aSet = true;
143 }
144 }
145 return attributeName1a;
146 }
147
148 /**
149 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getComparator()
150 * @return String
151 */
152 protected abstract String handleGetComparator();
153
154 private String __comparator2a;
155 private boolean __comparator2aSet = false;
156
157 /**
158 * Returns the comparator for the attribute.
159 * @return (String)handleGetComparator()
160 */
161 public final String getComparator()
162 {
163 String comparator2a = this.__comparator2a;
164 if (!this.__comparator2aSet)
165 {
166 // comparator has no pre constraints
167 comparator2a = handleGetComparator();
168 // comparator has no post constraints
169 this.__comparator2a = comparator2a;
170 if (isMetafacadePropertyCachingEnabled())
171 {
172 this.__comparator2aSet = true;
173 }
174 }
175 return comparator2a;
176 }
177
178 /**
179 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#isComparatorPresent()
180 * @return boolean
181 */
182 protected abstract boolean handleIsComparatorPresent();
183
184 private boolean __comparatorPresent3a;
185 private boolean __comparatorPresent3aSet = false;
186
187 /**
188 * Indicates whether or not the attribute has a tagged value for the comparator.
189 * @return (boolean)handleIsComparatorPresent()
190 */
191 public final boolean isComparatorPresent()
192 {
193 boolean comparatorPresent3a = this.__comparatorPresent3a;
194 if (!this.__comparatorPresent3aSet)
195 {
196 // comparatorPresent has no pre constraints
197 comparatorPresent3a = handleIsComparatorPresent();
198 // comparatorPresent has no post constraints
199 this.__comparatorPresent3a = comparatorPresent3a;
200 if (isMetafacadePropertyCachingEnabled())
201 {
202 this.__comparatorPresent3aSet = true;
203 }
204 }
205 return comparatorPresent3a;
206 }
207
208 /**
209 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getComparatorConstant()
210 * @return String
211 */
212 protected abstract String handleGetComparatorConstant();
213
214 private String __comparatorConstant4a;
215 private boolean __comparatorConstant4aSet = false;
216
217 /**
218 * The comparator as a constant expression usable in the template.
219 * @return (String)handleGetComparatorConstant()
220 */
221 public final String getComparatorConstant()
222 {
223 String comparatorConstant4a = this.__comparatorConstant4a;
224 if (!this.__comparatorConstant4aSet)
225 {
226 // comparatorConstant has no pre constraints
227 comparatorConstant4a = handleGetComparatorConstant();
228 // comparatorConstant has no post constraints
229 this.__comparatorConstant4a = comparatorConstant4a;
230 if (isMetafacadePropertyCachingEnabled())
231 {
232 this.__comparatorConstant4aSet = true;
233 }
234 }
235 return comparatorConstant4a;
236 }
237
238 /**
239 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#isNullable()
240 * @return boolean
241 */
242 protected abstract boolean handleIsNullable();
243
244 private boolean __nullable5a;
245 private boolean __nullable5aSet = false;
246
247 /**
248 * Defines whether the underlying attribute on the queried entity may be NULL and should
249 * therefore be included in the search.
250 * @return (boolean)handleIsNullable()
251 */
252 public final boolean isNullable()
253 {
254 boolean nullable5a = this.__nullable5a;
255 if (!this.__nullable5aSet)
256 {
257 // nullable has no pre constraints
258 nullable5a = handleIsNullable();
259 // nullable has no post constraints
260 this.__nullable5a = nullable5a;
261 if (isMetafacadePropertyCachingEnabled())
262 {
263 this.__nullable5aSet = true;
264 }
265 }
266 return nullable5a;
267 }
268
269 /**
270 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getMatchMode()
271 * @return String
272 */
273 protected abstract String handleGetMatchMode();
274
275 private String __matchMode6a;
276 private boolean __matchMode6aSet = false;
277
278 /**
279 * Returns the hibernate matchmode constant to use for matching Strings.
280 * @return (String)handleGetMatchMode()
281 */
282 public final String getMatchMode()
283 {
284 String matchMode6a = this.__matchMode6a;
285 if (!this.__matchMode6aSet)
286 {
287 // matchMode has no pre constraints
288 matchMode6a = handleGetMatchMode();
289 // matchMode has no post constraints
290 this.__matchMode6a = matchMode6a;
291 if (isMetafacadePropertyCachingEnabled())
292 {
293 this.__matchMode6aSet = true;
294 }
295 }
296 return matchMode6a;
297 }
298
299 /**
300 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getMatchModeConstant()
301 * @return String
302 */
303 protected abstract String handleGetMatchModeConstant();
304
305 private String __matchModeConstant7a;
306 private boolean __matchModeConstant7aSet = false;
307
308 /**
309 * Returns the matchmode constant for usage in templates.
310 * @return (String)handleGetMatchModeConstant()
311 */
312 public final String getMatchModeConstant()
313 {
314 String matchModeConstant7a = this.__matchModeConstant7a;
315 if (!this.__matchModeConstant7aSet)
316 {
317 // matchModeConstant has no pre constraints
318 matchModeConstant7a = handleGetMatchModeConstant();
319 // matchModeConstant has no post constraints
320 this.__matchModeConstant7a = matchModeConstant7a;
321 if (isMetafacadePropertyCachingEnabled())
322 {
323 this.__matchModeConstant7aSet = true;
324 }
325 }
326 return matchModeConstant7a;
327 }
328
329 /**
330 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#isMatchModePresent()
331 * @return boolean
332 */
333 protected abstract boolean handleIsMatchModePresent();
334
335 private boolean __matchModePresent8a;
336 private boolean __matchModePresent8aSet = false;
337
338 /**
339 * Returns <code>true</code> if a matchmode has ben set.
340 * @return (boolean)handleIsMatchModePresent()
341 */
342 public final boolean isMatchModePresent()
343 {
344 boolean matchModePresent8a = this.__matchModePresent8a;
345 if (!this.__matchModePresent8aSet)
346 {
347 // matchModePresent has no pre constraints
348 matchModePresent8a = handleIsMatchModePresent();
349 // matchModePresent has no post constraints
350 this.__matchModePresent8a = matchModePresent8a;
351 if (isMetafacadePropertyCachingEnabled())
352 {
353 this.__matchModePresent8aSet = true;
354 }
355 }
356 return matchModePresent8a;
357 }
358
359 /**
360 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#isOrderable()
361 * @return boolean
362 */
363 protected abstract boolean handleIsOrderable();
364
365 private boolean __orderable9a;
366 private boolean __orderable9aSet = false;
367
368 /**
369 * Returns true if the attribute is used to order the result set.
370 * @return (boolean)handleIsOrderable()
371 */
372 public final boolean isOrderable()
373 {
374 boolean orderable9a = this.__orderable9a;
375 if (!this.__orderable9aSet)
376 {
377 // orderable has no pre constraints
378 orderable9a = handleIsOrderable();
379 // orderable has no post constraints
380 this.__orderable9a = orderable9a;
381 if (isMetafacadePropertyCachingEnabled())
382 {
383 this.__orderable9aSet = true;
384 }
385 }
386 return orderable9a;
387 }
388
389 /**
390 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getOrderDirection()
391 * @return String
392 */
393 protected abstract String handleGetOrderDirection();
394
395 private String __orderDirection10a;
396 private boolean __orderDirection10aSet = false;
397
398 /**
399 * Returns the order direction if it has been set.
400 * @return (String)handleGetOrderDirection()
401 */
402 public final String getOrderDirection()
403 {
404 String orderDirection10a = this.__orderDirection10a;
405 if (!this.__orderDirection10aSet)
406 {
407 // orderDirection has no pre constraints
408 orderDirection10a = handleGetOrderDirection();
409 // orderDirection has no post constraints
410 this.__orderDirection10a = orderDirection10a;
411 if (isMetafacadePropertyCachingEnabled())
412 {
413 this.__orderDirection10aSet = true;
414 }
415 }
416 return orderDirection10a;
417 }
418
419 /**
420 * @see org.andromda.cartridges.spring.metafacades.SpringCriteriaAttribute#getOrderRelevance()
421 * @return int
422 */
423 protected abstract int handleGetOrderRelevance();
424
425 private int __orderRelevance11a;
426 private boolean __orderRelevance11aSet = false;
427
428 /**
429 * Returns the relevance of the ordering setting. The lower the number, the more relevant it is.
430 * @return (int)handleGetOrderRelevance()
431 */
432 public final int getOrderRelevance()
433 {
434 int orderRelevance11a = this.__orderRelevance11a;
435 if (!this.__orderRelevance11aSet)
436 {
437 // orderRelevance has no pre constraints
438 orderRelevance11a = handleGetOrderRelevance();
439 // orderRelevance has no post constraints
440 this.__orderRelevance11a = orderRelevance11a;
441 if (isMetafacadePropertyCachingEnabled())
442 {
443 this.__orderRelevance11aSet = true;
444 }
445 }
446 return orderRelevance11a;
447 }
448
449 /**
450 * @return true
451 * @see AttributeFacade
452 */
453 public boolean isAttributeFacadeMetaType()
454 {
455 return true;
456 }
457
458 /**
459 * @return true
460 * @see ModelElementFacade
461 */
462 public boolean isModelElementFacadeMetaType()
463 {
464 return true;
465 }
466
467 // ----------- delegates to AttributeFacade ------------
468 /**
469 * Searches the given feature for the specified tag.
470 * If the follow boolean is set to true then the search will continue from the class attribute
471 * to the class itself and then up the class hierarchy.
472 * @see AttributeFacade#findTaggedValue(String name, boolean follow)
473 */
474 public Object findTaggedValue(String name, boolean follow)
475 {
476 return this.getSuperAttributeFacade().findTaggedValue(name, follow);
477 }
478
479 /**
480 * The default value of the attribute. This is the value given if no value is defined.
481 * @see AttributeFacade#getDefaultValue()
482 */
483 public String getDefaultValue()
484 {
485 return this.getSuperAttributeFacade().getDefaultValue();
486 }
487
488 /**
489 * If the attribute is an enumeration literal this represents the owning enumeration. Can be
490 * empty.
491 * @see AttributeFacade#getEnumeration()
492 */
493 public EnumerationFacade getEnumeration()
494 {
495 return this.getSuperAttributeFacade().getEnumeration();
496 }
497
498 /**
499 * Returns the enumeration literal parameters defined by tagged value as a comma separated list.
500 * @see AttributeFacade#getEnumerationLiteralParameters()
501 */
502 public String getEnumerationLiteralParameters()
503 {
504 return this.getSuperAttributeFacade().getEnumerationLiteralParameters();
505 }
506
507 /**
508 * The value for this attribute if it is an enumeration literal, null otherwise. The default
509 * value is returned as a String if it has been specified, if it's not specified this
510 * attribute's name is assumed.
511 * @see AttributeFacade#getEnumerationValue()
512 */
513 public String getEnumerationValue()
514 {
515 return this.getSuperAttributeFacade().getEnumerationValue();
516 }
517
518 /**
519 * The name of the accessor operation that would retrieve this attribute's value.
520 * @see AttributeFacade#getGetterName()
521 */
522 public String getGetterName()
523 {
524 return this.getSuperAttributeFacade().getGetterName();
525 }
526
527 /**
528 * The name of the type that is returned on the accessor and mutator operations, determined in
529 * part by the multiplicity.
530 * @see AttributeFacade#getGetterSetterTypeName()
531 */
532 public String getGetterSetterTypeName()
533 {
534 return this.getSuperAttributeFacade().getGetterSetterTypeName();
535 }
536
537 /**
538 * the lower value for the multiplicity
539 * -only applicable for UML2
540 * @see AttributeFacade#getLower()
541 */
542 public int getLower()
543 {
544 return this.getSuperAttributeFacade().getLower();
545 }
546
547 /**
548 * Gets the classifier who is the owner of the attributes.
549 * @see AttributeFacade#getOwner()
550 */
551 public ClassifierFacade getOwner()
552 {
553 return this.getSuperAttributeFacade().getOwner();
554 }
555
556 /**
557 * The name of the mutator operation that would retrieve this attribute's value.
558 * @see AttributeFacade#getSetterName()
559 */
560 public String getSetterName()
561 {
562 return this.getSuperAttributeFacade().getSetterName();
563 }
564
565 /**
566 * The classifier owning this attribute.
567 * @see AttributeFacade#getType()
568 */
569 public ClassifierFacade getType()
570 {
571 return this.getSuperAttributeFacade().getType();
572 }
573
574 /**
575 * the upper value for the multiplicity (will be -1 for *)
576 * -only applicable for UML2
577 * @see AttributeFacade#getUpper()
578 */
579 public int getUpper()
580 {
581 return this.getSuperAttributeFacade().getUpper();
582 }
583
584 /**
585 * True if this attribute can only be set.
586 * @see AttributeFacade#isAddOnly()
587 */
588 public boolean isAddOnly()
589 {
590 return this.getSuperAttributeFacade().isAddOnly();
591 }
592
593 /**
594 * True if this attribute can be modified.
595 * @see AttributeFacade#isChangeable()
596 */
597 public boolean isChangeable()
598 {
599 return this.getSuperAttributeFacade().isChangeable();
600 }
601
602 /**
603 * Indicates if the default value is present.
604 * @see AttributeFacade#isDefaultValuePresent()
605 */
606 public boolean isDefaultValuePresent()
607 {
608 return this.getSuperAttributeFacade().isDefaultValuePresent();
609 }
610
611 /**
612 * If the attribute is derived (its value is computed). UML2 only. UML14 always returns false.
613 * Default=false.
614 * @see AttributeFacade#isDerived()
615 */
616 public boolean isDerived()
617 {
618 return this.getSuperAttributeFacade().isDerived();
619 }
620
621 /**
622 * True if this attribute is owned by an enumeration.
623 * @see AttributeFacade#isEnumerationLiteral()
624 */
625 public boolean isEnumerationLiteral()
626 {
627 return this.getSuperAttributeFacade().isEnumerationLiteral();
628 }
629
630 /**
631 * Returns true if enumeration literal parameters exist (defined by tagged value) for the
632 * literal.
633 * @see AttributeFacade#isEnumerationLiteralParametersExist()
634 */
635 public boolean isEnumerationLiteralParametersExist()
636 {
637 return this.getSuperAttributeFacade().isEnumerationLiteralParametersExist();
638 }
639
640 /**
641 * True if this attribute is owned by an enumeration but is defined as a member variable (NOT a
642 * literal).
643 * @see AttributeFacade#isEnumerationMember()
644 */
645 public boolean isEnumerationMember()
646 {
647 return this.getSuperAttributeFacade().isEnumerationMember();
648 }
649
650 /**
651 * IsLeaf property in the operation. If true, operation is final, cannot be extended or
652 * implemented by a descendant.
653 * @see AttributeFacade#isLeaf()
654 */
655 public boolean isLeaf()
656 {
657 return this.getSuperAttributeFacade().isLeaf();
658 }
659
660 /**
661 * Whether or not this attribute has a multiplicity greater than 1.
662 * @see AttributeFacade#isMany()
663 */
664 public boolean isMany()
665 {
666 return this.getSuperAttributeFacade().isMany();
667 }
668
669 /**
670 * Indicates whether or not the attributes are ordered (if multiplicity is greater than 1).
671 * @see AttributeFacade#isOrdered()
672 */
673 public boolean isOrdered()
674 {
675 return this.getSuperAttributeFacade().isOrdered();
676 }
677
678 /**
679 * Whether or not this attribute can be modified.
680 * @see AttributeFacade#isReadOnly()
681 */
682 public boolean isReadOnly()
683 {
684 return this.getSuperAttributeFacade().isReadOnly();
685 }
686
687 /**
688 * Whether or not the multiplicity of this attribute is 1.
689 * @see AttributeFacade#isRequired()
690 */
691 public boolean isRequired()
692 {
693 return this.getSuperAttributeFacade().isRequired();
694 }
695
696 /**
697 * Indicates if this attribute is 'static', meaning it has a classifier scope.
698 * @see AttributeFacade#isStatic()
699 */
700 public boolean isStatic()
701 {
702 return this.getSuperAttributeFacade().isStatic();
703 }
704
705 /**
706 * If the attribute is unique within the Collection type. UML2 only. UML14 always returns false.
707 * Unique+Ordered determines the implementation Collection type. Default=false.
708 * @see AttributeFacade#isUnique()
709 */
710 public boolean isUnique()
711 {
712 return this.getSuperAttributeFacade().isUnique();
713 }
714
715 /**
716 * Copies all tagged values from the given ModelElementFacade to this model element facade.
717 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
718 */
719 public void copyTaggedValues(ModelElementFacade element)
720 {
721 this.getSuperAttributeFacade().copyTaggedValues(element);
722 }
723
724 /**
725 * Finds the tagged value with the specified 'tagName'. In case there are more values the first
726 * one found will be returned.
727 * @see ModelElementFacade#findTaggedValue(String tagName)
728 */
729 public Object findTaggedValue(String tagName)
730 {
731 return this.getSuperAttributeFacade().findTaggedValue(tagName);
732 }
733
734 /**
735 * Returns all the values for the tagged value with the specified name. The returned collection
736 * will contains only String instances, or will be empty. Never null.
737 * @see ModelElementFacade#findTaggedValues(String tagName)
738 */
739 public Collection<Object> findTaggedValues(String tagName)
740 {
741 return this.getSuperAttributeFacade().findTaggedValues(tagName);
742 }
743
744 /**
745 * Returns the fully qualified name of the model element. The fully qualified name includes
746 * complete package qualified name of the underlying model element. The templates parameter will
747 * be replaced by the correct one given the binding relation of the parameter to this element.
748 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
749 */
750 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
751 {
752 return this.getSuperAttributeFacade().getBindedFullyQualifiedName(bindedElement);
753 }
754
755 /**
756 * Gets all constraints belonging to the model element.
757 * @see ModelElementFacade#getConstraints()
758 */
759 public Collection<ConstraintFacade> getConstraints()
760 {
761 return this.getSuperAttributeFacade().getConstraints();
762 }
763
764 /**
765 * Returns the constraints of the argument kind that have been placed onto this model. Typical
766 * kinds are "inv", "pre" and "post". Other kinds are possible.
767 * @see ModelElementFacade#getConstraints(String kind)
768 */
769 public Collection<ConstraintFacade> getConstraints(String kind)
770 {
771 return this.getSuperAttributeFacade().getConstraints(kind);
772 }
773
774 /**
775 * Gets the documentation for the model element, The indent argument is prefixed to each line.
776 * By default this method wraps lines after 64 characters.
777 * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
778 * @see ModelElementFacade#getDocumentation(String indent)
779 */
780 public String getDocumentation(String indent)
781 {
782 return this.getSuperAttributeFacade().getDocumentation(indent);
783 }
784
785 /**
786 * This method returns the documentation for this model element, with the lines wrapped after
787 * the specified number of characters, values of less than 1 will indicate no line wrapping is
788 * required. By default paragraphs are returned as HTML.
789 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
790 * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
791 */
792 public String getDocumentation(String indent, int lineLength)
793 {
794 return this.getSuperAttributeFacade().getDocumentation(indent, lineLength);
795 }
796
797 /**
798 * This method returns the documentation for this model element, with the lines wrapped after
799 * the specified number of characters, values of less than 1 will indicate no line wrapping is
800 * required. HTML style determines if HTML Escaping is applied.
801 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
802 */
803 public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
804 {
805 return this.getSuperAttributeFacade().getDocumentation(indent, lineLength, htmlStyle);
806 }
807
808 /**
809 * The fully qualified name of this model element.
810 * @see ModelElementFacade#getFullyQualifiedName()
811 */
812 public String getFullyQualifiedName()
813 {
814 return this.getSuperAttributeFacade().getFullyQualifiedName();
815 }
816
817 /**
818 * Returns the fully qualified name of the model element. The fully qualified name includes
819 * complete package qualified name of the underlying model element. If modelName is true, then
820 * the original name of the model element (the name contained within the model) will be the name
821 * returned, otherwise a name from a language mapping will be returned.
822 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
823 */
824 public String getFullyQualifiedName(boolean modelName)
825 {
826 return this.getSuperAttributeFacade().getFullyQualifiedName(modelName);
827 }
828
829 /**
830 * Returns the fully qualified name as a path, the returned value always starts with out a slash
831 * '/'.
832 * @see ModelElementFacade#getFullyQualifiedNamePath()
833 */
834 public String getFullyQualifiedNamePath()
835 {
836 return this.getSuperAttributeFacade().getFullyQualifiedNamePath();
837 }
838
839 /**
840 * Gets the unique identifier of the underlying model element.
841 * @see ModelElementFacade#getId()
842 */
843 public String getId()
844 {
845 return this.getSuperAttributeFacade().getId();
846 }
847
848 /**
849 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
850 * are not represented by other properties, i.e. native, transient, volatile, synchronized,
851 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
852 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
853 * JDK5 compiler level.
854 * @see ModelElementFacade#getKeywords()
855 */
856 public Collection<String> getKeywords()
857 {
858 return this.getSuperAttributeFacade().getKeywords();
859 }
860
861 /**
862 * UML2: Retrieves a localized label for this named element.
863 * @see ModelElementFacade#getLabel()
864 */
865 public String getLabel()
866 {
867 return this.getSuperAttributeFacade().getLabel();
868 }
869
870 /**
871 * The language mappings that have been set for this model element.
872 * @see ModelElementFacade#getLanguageMappings()
873 */
874 public TypeMappings getLanguageMappings()
875 {
876 return this.getSuperAttributeFacade().getLanguageMappings();
877 }
878
879 /**
880 * Return the model containing this model element (multiple models may be loaded and processed
881 * at the same time).
882 * @see ModelElementFacade#getModel()
883 */
884 public ModelFacade getModel()
885 {
886 return this.getSuperAttributeFacade().getModel();
887 }
888
889 /**
890 * The name of the model element.
891 * @see ModelElementFacade#getName()
892 */
893 public String getName()
894 {
895 return this.getSuperAttributeFacade().getName();
896 }
897
898 /**
899 * Gets the package to which this model element belongs.
900 * @see ModelElementFacade#getPackage()
901 */
902 public ModelElementFacade getPackage()
903 {
904 return this.getSuperAttributeFacade().getPackage();
905 }
906
907 /**
908 * The name of this model element's package.
909 * @see ModelElementFacade#getPackageName()
910 */
911 public String getPackageName()
912 {
913 return this.getSuperAttributeFacade().getPackageName();
914 }
915
916 /**
917 * Gets the package name (optionally providing the ability to retrieve the model name and not
918 * the mapped name).
919 * @see ModelElementFacade#getPackageName(boolean modelName)
920 */
921 public String getPackageName(boolean modelName)
922 {
923 return this.getSuperAttributeFacade().getPackageName(modelName);
924 }
925
926 /**
927 * Returns the package as a path, the returned value always starts with out a slash '/'.
928 * @see ModelElementFacade#getPackagePath()
929 */
930 public String getPackagePath()
931 {
932 return this.getSuperAttributeFacade().getPackagePath();
933 }
934
935 /**
936 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
937 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
938 * the names of the containing namespaces starting at the root of the hierarchy and ending with
939 * the name of the NamedElement itself.
940 * @see ModelElementFacade#getQualifiedName()
941 */
942 public String getQualifiedName()
943 {
944 return this.getSuperAttributeFacade().getQualifiedName();
945 }
946
947 /**
948 * Gets the root package for the model element.
949 * @see ModelElementFacade#getRootPackage()
950 */
951 public PackageFacade getRootPackage()
952 {
953 return this.getSuperAttributeFacade().getRootPackage();
954 }
955
956 /**
957 * Gets the dependencies for which this model element is the source.
958 * @see ModelElementFacade#getSourceDependencies()
959 */
960 public Collection<DependencyFacade> getSourceDependencies()
961 {
962 return this.getSuperAttributeFacade().getSourceDependencies();
963 }
964
965 /**
966 * If this model element is the context of an activity graph, this represents that activity
967 * graph.
968 * @see ModelElementFacade#getStateMachineContext()
969 */
970 public StateMachineFacade getStateMachineContext()
971 {
972 return this.getSuperAttributeFacade().getStateMachineContext();
973 }
974
975 /**
976 * The collection of ALL stereotype names for this model element.
977 * @see ModelElementFacade#getStereotypeNames()
978 */
979 public Collection<String> getStereotypeNames()
980 {
981 return this.getSuperAttributeFacade().getStereotypeNames();
982 }
983
984 /**
985 * Gets all stereotypes for this model element.
986 * @see ModelElementFacade#getStereotypes()
987 */
988 public Collection<StereotypeFacade> getStereotypes()
989 {
990 return this.getSuperAttributeFacade().getStereotypes();
991 }
992
993 /**
994 * Return the TaggedValues associated with this model element, under all stereotypes.
995 * @see ModelElementFacade#getTaggedValues()
996 */
997 public Collection<TaggedValueFacade> getTaggedValues()
998 {
999 return this.getSuperAttributeFacade().getTaggedValues();
1000 }
1001
1002 /**
1003 * Gets the dependencies for which this model element is the target.
1004 * @see ModelElementFacade#getTargetDependencies()
1005 */
1006 public Collection<DependencyFacade> getTargetDependencies()
1007 {
1008 return this.getSuperAttributeFacade().getTargetDependencies();
1009 }
1010
1011 /**
1012 * Get the template parameter for this model element having the parameterName
1013 * @see ModelElementFacade#getTemplateParameter(String parameterName)
1014 */
1015 public Object getTemplateParameter(String parameterName)
1016 {
1017 return this.getSuperAttributeFacade().getTemplateParameter(parameterName);
1018 }
1019
1020 /**
1021 * Get the template parameters for this model element
1022 * @see ModelElementFacade#getTemplateParameters()
1023 */
1024 public Collection<TemplateParameterFacade> getTemplateParameters()
1025 {
1026 return this.getSuperAttributeFacade().getTemplateParameters();
1027 }
1028
1029 /**
1030 * The visibility (i.e. public, private, protected or package) of the model element, will
1031 * attempt a lookup for these values in the language mappings (if any).
1032 * @see ModelElementFacade#getVisibility()
1033 */
1034 public String getVisibility()
1035 {
1036 return this.getSuperAttributeFacade().getVisibility();
1037 }
1038
1039 /**
1040 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
1041 * is taken into account when searching for the stereotype), false otherwise.
1042 * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
1043 */
1044 public boolean hasExactStereotype(String stereotypeName)
1045 {
1046 return this.getSuperAttributeFacade().hasExactStereotype(stereotypeName);
1047 }
1048
1049 /**
1050 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
1051 * pipe, semicolon, or << >>
1052 * @see ModelElementFacade#hasKeyword(String keywordName)
1053 */
1054 public boolean hasKeyword(String keywordName)
1055 {
1056 return this.getSuperAttributeFacade().hasKeyword(keywordName);
1057 }
1058
1059 /**
1060 * Returns true if the model element has the specified stereotype. If the stereotype itself
1061 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
1062 * one of the stereotype's ancestors has a matching name this method will return true, false
1063 * otherwise.
1064 * For example, if we have a certain stereotype called <<exception>> and a model element has a
1065 * stereotype called <<applicationException>> which extends <<exception>>, when calling this
1066 * method with 'stereotypeName' defined as 'exception' the method would return true since
1067 * <<applicationException>> inherits from <<exception>>. If you want to check if the model
1068 * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
1069 * @see ModelElementFacade#hasStereotype(String stereotypeName)
1070 */
1071 public boolean hasStereotype(String stereotypeName)
1072 {
1073 return this.getSuperAttributeFacade().hasStereotype(stereotypeName);
1074 }
1075
1076 /**
1077 * True if there are target dependencies from this element that are instances of BindingFacade.
1078 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
1079 * @see ModelElementFacade#isBindingDependenciesPresent()
1080 */
1081 public boolean isBindingDependenciesPresent()
1082 {
1083 return this.getSuperAttributeFacade().isBindingDependenciesPresent();
1084 }
1085
1086 /**
1087 * Indicates if any constraints are present on this model element.
1088 * @see ModelElementFacade#isConstraintsPresent()
1089 */
1090 public boolean isConstraintsPresent()
1091 {
1092 return this.getSuperAttributeFacade().isConstraintsPresent();
1093 }
1094
1095 /**
1096 * Indicates if any documentation is present on this model element.
1097 * @see ModelElementFacade#isDocumentationPresent()
1098 */
1099 public boolean isDocumentationPresent()
1100 {
1101 return this.getSuperAttributeFacade().isDocumentationPresent();
1102 }
1103
1104 /**
1105 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
1106 * @see ModelElementFacade#isReservedWord()
1107 */
1108 public boolean isReservedWord()
1109 {
1110 return this.getSuperAttributeFacade().isReservedWord();
1111 }
1112
1113 /**
1114 * True is there are template parameters on this model element. For UML2, applies to Class,
1115 * Operation, Property, and Parameter.
1116 * @see ModelElementFacade#isTemplateParametersPresent()
1117 */
1118 public boolean isTemplateParametersPresent()
1119 {
1120 return this.getSuperAttributeFacade().isTemplateParametersPresent();
1121 }
1122
1123 /**
1124 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
1125 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
1126 * Enumerations and Interfaces, optionally applies on other model elements.
1127 * @see ModelElementFacade#isValidIdentifierName()
1128 */
1129 public boolean isValidIdentifierName()
1130 {
1131 return this.getSuperAttributeFacade().isValidIdentifierName();
1132 }
1133
1134 /**
1135 * Searches for the constraint with the specified 'name' on this model element, and if found
1136 * translates it using the specified 'translation' from a translation library discovered by the
1137 * framework.
1138 * @see ModelElementFacade#translateConstraint(String name, String translation)
1139 */
1140 public String translateConstraint(String name, String translation)
1141 {
1142 return this.getSuperAttributeFacade().translateConstraint(name, translation);
1143 }
1144
1145 /**
1146 * Translates all constraints belonging to this model element with the given 'translation'.
1147 * @see ModelElementFacade#translateConstraints(String translation)
1148 */
1149 public String[] translateConstraints(String translation)
1150 {
1151 return this.getSuperAttributeFacade().translateConstraints(translation);
1152 }
1153
1154 /**
1155 * Translates the constraints of the specified 'kind' belonging to this model element.
1156 * @see ModelElementFacade#translateConstraints(String kind, String translation)
1157 */
1158 public String[] translateConstraints(String kind, String translation)
1159 {
1160 return this.getSuperAttributeFacade().translateConstraints(kind, translation);
1161 }
1162
1163 /**
1164 * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
1165 */
1166 @Override
1167 public void initialize()
1168 {
1169 this.getSuperAttributeFacade().initialize();
1170 }
1171
1172 /**
1173 * @return Object getSuperAttributeFacade().getValidationOwner()
1174 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
1175 */
1176 @Override
1177 public Object getValidationOwner()
1178 {
1179 Object owner = this.getSuperAttributeFacade().getValidationOwner();
1180 return owner;
1181 }
1182
1183 /**
1184 * @return String getSuperAttributeFacade().getValidationName()
1185 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1186 */
1187 @Override
1188 public String getValidationName()
1189 {
1190 String name = this.getSuperAttributeFacade().getValidationName();
1191 return name;
1192 }
1193
1194 /**
1195 * @param validationMessages Collection<ModelValidationMessage>
1196 * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1197 */
1198 @Override
1199 public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1200 {
1201 this.getSuperAttributeFacade().validateInvariants(validationMessages);
1202 }
1203
1204 /**
1205 * The property that stores the name of the metafacade.
1206 */
1207 private static final String NAME_PROPERTY = "name";
1208 private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1209
1210 /**
1211 * @see Object#toString()
1212 */
1213 @Override
1214 public String toString()
1215 {
1216 final StringBuilder toString = new StringBuilder(this.getClass().getName());
1217 toString.append("[");
1218 try
1219 {
1220 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1221 }
1222 catch (final Throwable tryAgain)
1223 {
1224 try
1225 {
1226 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1227 }
1228 catch (final Throwable ignore)
1229 {
1230 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1231 }
1232 }
1233 toString.append("]");
1234 return toString.toString();
1235 }
1236 }