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