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