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