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.ejb3.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.ClassifierFacade;
13  import org.andromda.metafacades.uml.ConstraintFacade;
14  import org.andromda.metafacades.uml.DependencyFacade;
15  import org.andromda.metafacades.uml.EventFacade;
16  import org.andromda.metafacades.uml.ModelElementFacade;
17  import org.andromda.metafacades.uml.ModelFacade;
18  import org.andromda.metafacades.uml.OperationFacade;
19  import org.andromda.metafacades.uml.PackageFacade;
20  import org.andromda.metafacades.uml.ParameterFacade;
21  import org.andromda.metafacades.uml.StateMachineFacade;
22  import org.andromda.metafacades.uml.StereotypeFacade;
23  import org.andromda.metafacades.uml.TaggedValueFacade;
24  import org.andromda.metafacades.uml.TemplateParameterFacade;
25  import org.andromda.metafacades.uml.TypeMappings;
26  
27  /**
28   * TODO: Model Documentation for
29   * org.andromda.cartridges.ejb3.metafacades.EJB3SessionOperationParameterFacade
30   * MetafacadeLogic for EJB3SessionOperationParameterFacade
31   *
32   * @see EJB3SessionOperationParameterFacade
33   */
34  public abstract class EJB3SessionOperationParameterFacadeLogic
35      extends MetafacadeBase
36      implements EJB3SessionOperationParameterFacade
37  {
38      /**
39       * The underlying UML object
40       * @see Object
41       */
42      protected Object metaObject;
43  
44      /** Create Metafacade implementation instance using the MetafacadeFactory from the context
45       * @param metaObjectIn
46       * @param context
47       */
48      protected EJB3SessionOperationParameterFacadeLogic(Object metaObjectIn, String context)
49      {
50          super(metaObjectIn, getContext(context));
51          this.superParameterFacade =
52             (ParameterFacade)
53              MetafacadeFactory.getInstance().createFacadeImpl(
54                      "org.andromda.metafacades.uml.ParameterFacade",
55                      metaObjectIn,
56                      getContext(context));
57          this.metaObject = metaObjectIn;
58      }
59  
60      /**
61       * Gets the context for this metafacade logic instance.
62       * @param context String. Set to EJB3SessionOperationParameterFacade if null
63       * @return context String
64       */
65      private static String getContext(String context)
66      {
67          if (context == null)
68          {
69              context = "org.andromda.cartridges.ejb3.metafacades.EJB3SessionOperationParameterFacade";
70          }
71          return context;
72      }
73  
74      private ParameterFacade superParameterFacade;
75      private boolean superParameterFacadeInitialized = false;
76  
77      /**
78       * Gets the ParameterFacade parent instance.
79       * @return this.superParameterFacade ParameterFacade
80       */
81      private ParameterFacade getSuperParameterFacade()
82      {
83          if (!this.superParameterFacadeInitialized)
84          {
85              ((MetafacadeBase)this.superParameterFacade).setMetafacadeContext(this.getMetafacadeContext());
86              this.superParameterFacadeInitialized = true;
87          }
88          return this.superParameterFacade;
89      }
90  
91      /** Reset context only for non-root metafacades
92       * @param context
93       * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
94       */
95      @Override
96      public void resetMetafacadeContext(String context)
97      {
98          if (!this.contextRoot) // reset context only for non-root metafacades
99          {
100             context = getContext(context);  // to have same value as in original constructor call
101             setMetafacadeContext (context);
102             if (this.superParameterFacadeInitialized)
103             {
104                 ((MetafacadeBase)this.superParameterFacade).resetMetafacadeContext(context);
105             }
106         }
107     }
108 
109     /**
110      * @return boolean true always
111      * @see EJB3SessionOperationParameterFacade
112      */
113     public boolean isEJB3SessionOperationParameterFacadeMetaType()
114     {
115         return true;
116     }
117 
118     // --------------- attributes ---------------------
119 
120    /**
121     * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionOperationParameterFacade#isSeamAsynchronousDuration()
122     * @return boolean
123     */
124     protected abstract boolean handleIsSeamAsynchronousDuration();
125 
126     private boolean __seamAsynchronousDuration1a;
127     private boolean __seamAsynchronousDuration1aSet = false;
128 
129     /**
130      * Specifies that a parameter of the asynchronous call is the duration before the call is
131      * processed (or first processed for recurring calls).
132      * @return (boolean)handleIsSeamAsynchronousDuration()
133      */
134     public final boolean isSeamAsynchronousDuration()
135     {
136         boolean seamAsynchronousDuration1a = this.__seamAsynchronousDuration1a;
137         if (!this.__seamAsynchronousDuration1aSet)
138         {
139             // seamAsynchronousDuration has no pre constraints
140             seamAsynchronousDuration1a = handleIsSeamAsynchronousDuration();
141             // seamAsynchronousDuration has no post constraints
142             this.__seamAsynchronousDuration1a = seamAsynchronousDuration1a;
143             if (isMetafacadePropertyCachingEnabled())
144             {
145                 this.__seamAsynchronousDuration1aSet = true;
146             }
147         }
148         return seamAsynchronousDuration1a;
149     }
150 
151    /**
152     * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionOperationParameterFacade#isSeamAsynchronousExpiration()
153     * @return boolean
154     */
155     protected abstract boolean handleIsSeamAsynchronousExpiration();
156 
157     private boolean __seamAsynchronousExpiration2a;
158     private boolean __seamAsynchronousExpiration2aSet = false;
159 
160     /**
161      * Specifies that a parameter of the asynchronous call is the datetime at which the call is
162      * processed (or first processed for recurring calls).
163      * @return (boolean)handleIsSeamAsynchronousExpiration()
164      */
165     public final boolean isSeamAsynchronousExpiration()
166     {
167         boolean seamAsynchronousExpiration2a = this.__seamAsynchronousExpiration2a;
168         if (!this.__seamAsynchronousExpiration2aSet)
169         {
170             // seamAsynchronousExpiration has no pre constraints
171             seamAsynchronousExpiration2a = handleIsSeamAsynchronousExpiration();
172             // seamAsynchronousExpiration has no post constraints
173             this.__seamAsynchronousExpiration2a = seamAsynchronousExpiration2a;
174             if (isMetafacadePropertyCachingEnabled())
175             {
176                 this.__seamAsynchronousExpiration2aSet = true;
177             }
178         }
179         return seamAsynchronousExpiration2a;
180     }
181 
182    /**
183     * @see org.andromda.cartridges.ejb3.metafacades.EJB3SessionOperationParameterFacade#isSeamAsynchronousIntervalDuration()
184     * @return boolean
185     */
186     protected abstract boolean handleIsSeamAsynchronousIntervalDuration();
187 
188     private boolean __seamAsynchronousIntervalDuration3a;
189     private boolean __seamAsynchronousIntervalDuration3aSet = false;
190 
191     /**
192      * Specifies that an asynchronous method call recurs, and that the annotationed parameter is
193      * duration between recurrences.
194      * @return (boolean)handleIsSeamAsynchronousIntervalDuration()
195      */
196     public final boolean isSeamAsynchronousIntervalDuration()
197     {
198         boolean seamAsynchronousIntervalDuration3a = this.__seamAsynchronousIntervalDuration3a;
199         if (!this.__seamAsynchronousIntervalDuration3aSet)
200         {
201             // seamAsynchronousIntervalDuration has no pre constraints
202             seamAsynchronousIntervalDuration3a = handleIsSeamAsynchronousIntervalDuration();
203             // seamAsynchronousIntervalDuration has no post constraints
204             this.__seamAsynchronousIntervalDuration3a = seamAsynchronousIntervalDuration3a;
205             if (isMetafacadePropertyCachingEnabled())
206             {
207                 this.__seamAsynchronousIntervalDuration3aSet = true;
208             }
209         }
210         return seamAsynchronousIntervalDuration3a;
211     }
212 
213     /**
214      * @return true
215      * @see ParameterFacade
216      */
217     public boolean isParameterFacadeMetaType()
218     {
219         return true;
220     }
221 
222     /**
223      * @return true
224      * @see ModelElementFacade
225      */
226     public boolean isModelElementFacadeMetaType()
227     {
228         return true;
229     }
230 
231     // ----------- delegates to ParameterFacade ------------
232     /**
233      * Copies all tagged values from the given ModelElementFacade to this model element facade.
234      * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
235      */
236     public void copyTaggedValues(ModelElementFacade element)
237     {
238         this.getSuperParameterFacade().copyTaggedValues(element);
239     }
240 
241     /**
242      * Finds the tagged value with the specified 'tagName'. In case there are more values the first
243      * one found will be returned.
244      * @see ModelElementFacade#findTaggedValue(String tagName)
245      */
246     public Object findTaggedValue(String tagName)
247     {
248         return this.getSuperParameterFacade().findTaggedValue(tagName);
249     }
250 
251     /**
252      * Returns all the values for the tagged value with the specified name. The returned collection
253      * will contains only String instances, or will be empty. Never null.
254      * @see ModelElementFacade#findTaggedValues(String tagName)
255      */
256     public Collection<Object> findTaggedValues(String tagName)
257     {
258         return this.getSuperParameterFacade().findTaggedValues(tagName);
259     }
260 
261     /**
262      * Returns the fully qualified name of the model element. The fully qualified name includes
263      * complete package qualified name of the underlying model element. The templates parameter will
264      * be replaced by the correct one given the binding relation of the parameter to this element.
265      * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
266      */
267     public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
268     {
269         return this.getSuperParameterFacade().getBindedFullyQualifiedName(bindedElement);
270     }
271 
272     /**
273      * Gets all constraints belonging to the model element.
274      * @see ModelElementFacade#getConstraints()
275      */
276     public Collection<ConstraintFacade> getConstraints()
277     {
278         return this.getSuperParameterFacade().getConstraints();
279     }
280 
281     /**
282      * Returns the constraints of the argument kind that have been placed onto this model. Typical
283      * kinds are "inv", "pre" and "post". Other kinds are possible.
284      * @see ModelElementFacade#getConstraints(String kind)
285      */
286     public Collection<ConstraintFacade> getConstraints(String kind)
287     {
288         return this.getSuperParameterFacade().getConstraints(kind);
289     }
290 
291     /**
292      * Gets the documentation for the model element, The indent argument is prefixed to each line.
293      * By default this method wraps lines after 64 characters.
294      * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
295      * @see ModelElementFacade#getDocumentation(String indent)
296      */
297     public String getDocumentation(String indent)
298     {
299         return this.getSuperParameterFacade().getDocumentation(indent);
300     }
301 
302     /**
303      * This method returns the documentation for this model element, with the lines wrapped after
304      * the specified number of characters, values of less than 1 will indicate no line wrapping is
305      * required. By default paragraphs are returned as HTML.
306      * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
307      * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
308      */
309     public String getDocumentation(String indent, int lineLength)
310     {
311         return this.getSuperParameterFacade().getDocumentation(indent, lineLength);
312     }
313 
314     /**
315      * This method returns the documentation for this model element, with the lines wrapped after
316      * the specified number of characters, values of less than 1 will indicate no line wrapping is
317      * required. HTML style determines if HTML Escaping is applied.
318      * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
319      */
320     public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
321     {
322         return this.getSuperParameterFacade().getDocumentation(indent, lineLength, htmlStyle);
323     }
324 
325     /**
326      * The fully qualified name of this model element.
327      * @see ModelElementFacade#getFullyQualifiedName()
328      */
329     public String getFullyQualifiedName()
330     {
331         return this.getSuperParameterFacade().getFullyQualifiedName();
332     }
333 
334     /**
335      * Returns the fully qualified name of the model element. The fully qualified name includes
336      * complete package qualified name of the underlying model element.  If modelName is true, then
337      * the original name of the model element (the name contained within the model) will be the name
338      * returned, otherwise a name from a language mapping will be returned.
339      * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
340      */
341     public String getFullyQualifiedName(boolean modelName)
342     {
343         return this.getSuperParameterFacade().getFullyQualifiedName(modelName);
344     }
345 
346     /**
347      * Returns the fully qualified name as a path, the returned value always starts with out a slash
348      * '/'.
349      * @see ModelElementFacade#getFullyQualifiedNamePath()
350      */
351     public String getFullyQualifiedNamePath()
352     {
353         return this.getSuperParameterFacade().getFullyQualifiedNamePath();
354     }
355 
356     /**
357      * Gets the unique identifier of the underlying model element.
358      * @see ModelElementFacade#getId()
359      */
360     public String getId()
361     {
362         return this.getSuperParameterFacade().getId();
363     }
364 
365     /**
366      * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
367      * are not represented by other properties, i.e. native, transient, volatile, synchronized,
368      * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
369      * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
370      * JDK5 compiler level.
371      * @see ModelElementFacade#getKeywords()
372      */
373     public Collection<String> getKeywords()
374     {
375         return this.getSuperParameterFacade().getKeywords();
376     }
377 
378     /**
379      * UML2: Retrieves a localized label for this named element.
380      * @see ModelElementFacade#getLabel()
381      */
382     public String getLabel()
383     {
384         return this.getSuperParameterFacade().getLabel();
385     }
386 
387     /**
388      * The language mappings that have been set for this model element.
389      * @see ModelElementFacade#getLanguageMappings()
390      */
391     public TypeMappings getLanguageMappings()
392     {
393         return this.getSuperParameterFacade().getLanguageMappings();
394     }
395 
396     /**
397      * Return the model containing this model element (multiple models may be loaded and processed
398      * at the same time).
399      * @see ModelElementFacade#getModel()
400      */
401     public ModelFacade getModel()
402     {
403         return this.getSuperParameterFacade().getModel();
404     }
405 
406     /**
407      * The name of the model element.
408      * @see ModelElementFacade#getName()
409      */
410     public String getName()
411     {
412         return this.getSuperParameterFacade().getName();
413     }
414 
415     /**
416      * Gets the package to which this model element belongs.
417      * @see ModelElementFacade#getPackage()
418      */
419     public ModelElementFacade getPackage()
420     {
421         return this.getSuperParameterFacade().getPackage();
422     }
423 
424     /**
425      * The name of this model element's package.
426      * @see ModelElementFacade#getPackageName()
427      */
428     public String getPackageName()
429     {
430         return this.getSuperParameterFacade().getPackageName();
431     }
432 
433     /**
434      * Gets the package name (optionally providing the ability to retrieve the model name and not
435      * the mapped name).
436      * @see ModelElementFacade#getPackageName(boolean modelName)
437      */
438     public String getPackageName(boolean modelName)
439     {
440         return this.getSuperParameterFacade().getPackageName(modelName);
441     }
442 
443     /**
444      * Returns the package as a path, the returned value always starts with out a slash '/'.
445      * @see ModelElementFacade#getPackagePath()
446      */
447     public String getPackagePath()
448     {
449         return this.getSuperParameterFacade().getPackagePath();
450     }
451 
452     /**
453      * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
454      * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
455      * the names of the containing namespaces starting at the root of the hierarchy and ending with
456      * the name of the NamedElement itself.
457      * @see ModelElementFacade#getQualifiedName()
458      */
459     public String getQualifiedName()
460     {
461         return this.getSuperParameterFacade().getQualifiedName();
462     }
463 
464     /**
465      * Gets the root package for the model element.
466      * @see ModelElementFacade#getRootPackage()
467      */
468     public PackageFacade getRootPackage()
469     {
470         return this.getSuperParameterFacade().getRootPackage();
471     }
472 
473     /**
474      * Gets the dependencies for which this model element is the source.
475      * @see ModelElementFacade#getSourceDependencies()
476      */
477     public Collection<DependencyFacade> getSourceDependencies()
478     {
479         return this.getSuperParameterFacade().getSourceDependencies();
480     }
481 
482     /**
483      * If this model element is the context of an activity graph, this represents that activity
484      * graph.
485      * @see ModelElementFacade#getStateMachineContext()
486      */
487     public StateMachineFacade getStateMachineContext()
488     {
489         return this.getSuperParameterFacade().getStateMachineContext();
490     }
491 
492     /**
493      * The collection of ALL stereotype names for this model element.
494      * @see ModelElementFacade#getStereotypeNames()
495      */
496     public Collection<String> getStereotypeNames()
497     {
498         return this.getSuperParameterFacade().getStereotypeNames();
499     }
500 
501     /**
502      * Gets all stereotypes for this model element.
503      * @see ModelElementFacade#getStereotypes()
504      */
505     public Collection<StereotypeFacade> getStereotypes()
506     {
507         return this.getSuperParameterFacade().getStereotypes();
508     }
509 
510     /**
511      * Return the TaggedValues associated with this model element, under all stereotypes.
512      * @see ModelElementFacade#getTaggedValues()
513      */
514     public Collection<TaggedValueFacade> getTaggedValues()
515     {
516         return this.getSuperParameterFacade().getTaggedValues();
517     }
518 
519     /**
520      * Gets the dependencies for which this model element is the target.
521      * @see ModelElementFacade#getTargetDependencies()
522      */
523     public Collection<DependencyFacade> getTargetDependencies()
524     {
525         return this.getSuperParameterFacade().getTargetDependencies();
526     }
527 
528     /**
529      * Get the template parameter for this model element having the parameterName
530      * @see ModelElementFacade#getTemplateParameter(String parameterName)
531      */
532     public Object getTemplateParameter(String parameterName)
533     {
534         return this.getSuperParameterFacade().getTemplateParameter(parameterName);
535     }
536 
537     /**
538      * Get the template parameters for this model element
539      * @see ModelElementFacade#getTemplateParameters()
540      */
541     public Collection<TemplateParameterFacade> getTemplateParameters()
542     {
543         return this.getSuperParameterFacade().getTemplateParameters();
544     }
545 
546     /**
547      * The visibility (i.e. public, private, protected or package) of the model element, will
548      * attempt a lookup for these values in the language mappings (if any).
549      * @see ModelElementFacade#getVisibility()
550      */
551     public String getVisibility()
552     {
553         return this.getSuperParameterFacade().getVisibility();
554     }
555 
556     /**
557      * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
558      * is taken into account when searching for the stereotype), false otherwise.
559      * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
560      */
561     public boolean hasExactStereotype(String stereotypeName)
562     {
563         return this.getSuperParameterFacade().hasExactStereotype(stereotypeName);
564     }
565 
566     /**
567      * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
568      * pipe, semicolon, or << >>
569      * @see ModelElementFacade#hasKeyword(String keywordName)
570      */
571     public boolean hasKeyword(String keywordName)
572     {
573         return this.getSuperParameterFacade().hasKeyword(keywordName);
574     }
575 
576     /**
577      * Returns true if the model element has the specified stereotype.  If the stereotype itself
578      * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
579      * one of the stereotype's ancestors has a matching name this method will return true, false
580      * otherwise.
581      * For example, if we have a certain stereotype called <<exception>> and a model element has a
582      * stereotype called <<applicationException>> which extends <<exception>>, when calling this
583      * method with 'stereotypeName' defined as 'exception' the method would return true since
584      * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
585      * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
586      * @see ModelElementFacade#hasStereotype(String stereotypeName)
587      */
588     public boolean hasStereotype(String stereotypeName)
589     {
590         return this.getSuperParameterFacade().hasStereotype(stereotypeName);
591     }
592 
593     /**
594      * True if there are target dependencies from this element that are instances of BindingFacade.
595      * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
596      * @see ModelElementFacade#isBindingDependenciesPresent()
597      */
598     public boolean isBindingDependenciesPresent()
599     {
600         return this.getSuperParameterFacade().isBindingDependenciesPresent();
601     }
602 
603     /**
604      * Indicates if any constraints are present on this model element.
605      * @see ModelElementFacade#isConstraintsPresent()
606      */
607     public boolean isConstraintsPresent()
608     {
609         return this.getSuperParameterFacade().isConstraintsPresent();
610     }
611 
612     /**
613      * Indicates if any documentation is present on this model element.
614      * @see ModelElementFacade#isDocumentationPresent()
615      */
616     public boolean isDocumentationPresent()
617     {
618         return this.getSuperParameterFacade().isDocumentationPresent();
619     }
620 
621     /**
622      * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
623      * @see ModelElementFacade#isReservedWord()
624      */
625     public boolean isReservedWord()
626     {
627         return this.getSuperParameterFacade().isReservedWord();
628     }
629 
630     /**
631      * True is there are template parameters on this model element. For UML2, applies to Class,
632      * Operation, Property, and Parameter.
633      * @see ModelElementFacade#isTemplateParametersPresent()
634      */
635     public boolean isTemplateParametersPresent()
636     {
637         return this.getSuperParameterFacade().isTemplateParametersPresent();
638     }
639 
640     /**
641      * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
642      * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
643      * Enumerations and Interfaces, optionally applies on other model elements.
644      * @see ModelElementFacade#isValidIdentifierName()
645      */
646     public boolean isValidIdentifierName()
647     {
648         return this.getSuperParameterFacade().isValidIdentifierName();
649     }
650 
651     /**
652      * Searches for the constraint with the specified 'name' on this model element, and if found
653      * translates it using the specified 'translation' from a translation library discovered by the
654      * framework.
655      * @see ModelElementFacade#translateConstraint(String name, String translation)
656      */
657     public String translateConstraint(String name, String translation)
658     {
659         return this.getSuperParameterFacade().translateConstraint(name, translation);
660     }
661 
662     /**
663      * Translates all constraints belonging to this model element with the given 'translation'.
664      * @see ModelElementFacade#translateConstraints(String translation)
665      */
666     public String[] translateConstraints(String translation)
667     {
668         return this.getSuperParameterFacade().translateConstraints(translation);
669     }
670 
671     /**
672      * Translates the constraints of the specified 'kind' belonging to this model element.
673      * @see ModelElementFacade#translateConstraints(String kind, String translation)
674      */
675     public String[] translateConstraints(String kind, String translation)
676     {
677         return this.getSuperParameterFacade().translateConstraints(kind, translation);
678     }
679 
680     /**
681      * TODO: Model Documentation for ParameterFacade.defaultValue
682      * @see ParameterFacade#getDefaultValue()
683      */
684     public String getDefaultValue()
685     {
686         return this.getSuperParameterFacade().getDefaultValue();
687     }
688 
689     /**
690      * UML2: A representation of the literals of the enumeration 'Parameter Effect Kind': CREATE,
691      * READ, UPDATE, DELETE. The datatype ParameterEffectKind is an enumeration that indicates the
692      * effect of a behavior on values passed in or out of its parameters.
693      * @see ParameterFacade#getEffect()
694      */
695     public String getEffect()
696     {
697         return this.getSuperParameterFacade().getEffect();
698     }
699 
700     /**
701      * If this parameter is located on an event, this will represent that event.
702      * @see ParameterFacade#getEvent()
703      */
704     public EventFacade getEvent()
705     {
706         return this.getSuperParameterFacade().getEvent();
707     }
708 
709     /**
710      * The name to use for accessors getting this parameter from a bean.
711      * @see ParameterFacade#getGetterName()
712      */
713     public String getGetterName()
714     {
715         return this.getSuperParameterFacade().getGetterName();
716     }
717 
718     /**
719      * Fully Qualified TypeName, determined in part by multiplicity (for UML2). For UML14, same as
720      * getterName.
721      * @see ParameterFacade#getGetterSetterTypeName()
722      */
723     public String getGetterSetterTypeName()
724     {
725         return this.getSuperParameterFacade().getGetterSetterTypeName();
726     }
727 
728     /**
729      * Fully Qualified implementation class of TypeName, determined in part by multiplicity (for
730      * UML2). If upper multiplicity =1, same as getterSetterTypeName.
731      * @see ParameterFacade#getGetterSetterTypeNameImpl()
732      */
733     public String getGetterSetterTypeNameImpl()
734     {
735         return this.getSuperParameterFacade().getGetterSetterTypeNameImpl();
736     }
737 
738     /**
739      * the lower value for the multiplicity
740      * -only applicable for UML2
741      * @see ParameterFacade#getLower()
742      */
743     public int getLower()
744     {
745         return this.getSuperParameterFacade().getLower();
746     }
747 
748     /**
749      * If this parameter is located on an operation, this will represent that operation.
750      * @see ParameterFacade#getOperation()
751      */
752     public OperationFacade getOperation()
753     {
754         return this.getSuperParameterFacade().getOperation();
755     }
756 
757     /**
758      * The name to use for accessors getting this parameter in a bean.
759      * @see ParameterFacade#getSetterName()
760      */
761     public String getSetterName()
762     {
763         return this.getSuperParameterFacade().getSetterName();
764     }
765 
766     /**
767      * A Classifier is a classification of instances - it describes a set of instances that have
768      * features
769      * in common. Can specify a generalization hierarchy by referencing its general classifiers. It
770      * may be
771      * a Class, DataType, PrimitiveType, Association, Collaboration, UseCase, etc. Can specify a
772      * generalization hierarchy by referencing its general classifiers. Has the capability to own
773      * collaboration uses. These collaboration uses link a collaboration with the classifier to give
774      * a
775      * description of the workings of the classifier. Classifier is defined to be a kind of
776      * templateable
777      * element so that a classifier can be parameterized. It is also defined to be a kind of
778      * parameterable
779      * element so that a classifier can be a formal template parameter.
780      * @see ParameterFacade#getType()
781      */
782     public ClassifierFacade getType()
783     {
784         return this.getSuperParameterFacade().getType();
785     }
786 
787     /**
788      * the upper value of the multiplicity (will be -1 for *)
789      * -only applicable for UML2
790      * @see ParameterFacade#getUpper()
791      */
792     public int getUpper()
793     {
794         return this.getSuperParameterFacade().getUpper();
795     }
796 
797     /**
798      * Indicates if the default value is present.
799      * @see ParameterFacade#isDefaultValuePresent()
800      */
801     public boolean isDefaultValuePresent()
802     {
803         return this.getSuperParameterFacade().isDefaultValuePresent();
804     }
805 
806     /**
807      * UML2: Returns the value of the 'Is Exception' attribute. The default value is "false". Tells
808      * whether an output parameter may emit a value to the exclusion of the other outputs.
809      * @see ParameterFacade#isException()
810      */
811     public boolean isException()
812     {
813         return this.getSuperParameterFacade().isException();
814     }
815 
816     /**
817      * True if this parameter is an 'in' parameter.
818      * @see ParameterFacade#isInParameter()
819      */
820     public boolean isInParameter()
821     {
822         return this.getSuperParameterFacade().isInParameter();
823     }
824 
825     /**
826      * True if this parameter is an inout parameter.
827      * @see ParameterFacade#isInoutParameter()
828      */
829     public boolean isInoutParameter()
830     {
831         return this.getSuperParameterFacade().isInoutParameter();
832     }
833 
834     /**
835      * If upper>1 or upper==unlimited. Only applies to UML2. For UML14, always false.
836      * @see ParameterFacade#isMany()
837      */
838     public boolean isMany()
839     {
840         return this.getSuperParameterFacade().isMany();
841     }
842 
843     /**
844      * UML2 Only: Is parameter ordered within the Collection type. Ordered+Unique determines the
845      * implementation Collection Type. For UML14, always false.
846      * @see ParameterFacade#isOrdered()
847      */
848     public boolean isOrdered()
849     {
850         return this.getSuperParameterFacade().isOrdered();
851     }
852 
853     /**
854      * True if this parameter is an 'out' parameter.
855      * @see ParameterFacade#isOutParameter()
856      */
857     public boolean isOutParameter()
858     {
859         return this.getSuperParameterFacade().isOutParameter();
860     }
861 
862     /**
863      * True if this parameter is readable, aka an in-parameter, or this feature is unspecified.
864      * @see ParameterFacade#isReadable()
865      */
866     public boolean isReadable()
867     {
868         return this.getSuperParameterFacade().isReadable();
869     }
870 
871     /**
872      * Whether or not this parameter is considered required (i.e must a non-empty value).
873      * @see ParameterFacade#isRequired()
874      */
875     public boolean isRequired()
876     {
877         return this.getSuperParameterFacade().isRequired();
878     }
879 
880     /**
881      * Whether or not this parameter represents a return parameter.
882      * @see ParameterFacade#isReturn()
883      */
884     public boolean isReturn()
885     {
886         return this.getSuperParameterFacade().isReturn();
887     }
888 
889     /**
890      * If Parameter type isMany (UML2), is the parameter unique within the Collection. Unique+Sorted
891      * determines pareter implementation type. For UML14, always false.
892      * @see ParameterFacade#isUnique()
893      */
894     public boolean isUnique()
895     {
896         return this.getSuperParameterFacade().isUnique();
897     }
898 
899     /**
900      * True if this parameter is writable, aka an out-parameter, or this feature is unspecified.
901      * @see ParameterFacade#isWritable()
902      */
903     public boolean isWritable()
904     {
905         return this.getSuperParameterFacade().isWritable();
906     }
907 
908     /**
909      * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
910      */
911     @Override
912     public void initialize()
913     {
914         this.getSuperParameterFacade().initialize();
915     }
916 
917     /**
918      * @return Object getSuperParameterFacade().getValidationOwner()
919      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
920      */
921     @Override
922     public Object getValidationOwner()
923     {
924         Object owner = this.getSuperParameterFacade().getValidationOwner();
925         return owner;
926     }
927 
928     /**
929      * @return String getSuperParameterFacade().getValidationName()
930      * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
931      */
932     @Override
933     public String getValidationName()
934     {
935         String name = this.getSuperParameterFacade().getValidationName();
936         return name;
937     }
938 
939     /**
940      * @param validationMessages Collection<ModelValidationMessage>
941      * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
942      */
943     @Override
944     public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
945     {
946         this.getSuperParameterFacade().validateInvariants(validationMessages);
947     }
948 
949     /**
950      * The property that stores the name of the metafacade.
951      */
952     private static final String NAME_PROPERTY = "name";
953     private static final String FQNAME_PROPERTY = "fullyQualifiedName";
954 
955     /**
956      * @see Object#toString()
957      */
958     @Override
959     public String toString()
960     {
961         final StringBuilder toString = new StringBuilder(this.getClass().getName());
962         toString.append("[");
963         try
964         {
965             toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
966         }
967         catch (final Throwable tryAgain)
968         {
969             try
970             {
971                 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
972             }
973             catch (final Throwable ignore)
974             {
975                 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
976             }
977         }
978         toString.append("]");
979         return toString.toString();
980     }
981 }