View Javadoc
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 }