001// license-header java merge-point 002// 003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify! 004// 005package org.andromda.cartridges.jsf.metafacades; 006 007import java.util.Collection; 008import java.util.List; 009import org.andromda.core.common.Introspector; 010import org.andromda.core.metafacade.MetafacadeBase; 011import org.andromda.core.metafacade.MetafacadeFactory; 012import org.andromda.core.metafacade.ModelValidationMessage; 013import org.andromda.metafacades.uml.ClassifierFacade; 014import org.andromda.metafacades.uml.ConstraintFacade; 015import org.andromda.metafacades.uml.DependencyFacade; 016import org.andromda.metafacades.uml.FrontEndAction; 017import org.andromda.metafacades.uml.FrontEndActivityGraph; 018import org.andromda.metafacades.uml.FrontEndControllerOperation; 019import org.andromda.metafacades.uml.FrontEndParameter; 020import org.andromda.metafacades.uml.ModelElementFacade; 021import org.andromda.metafacades.uml.ModelFacade; 022import org.andromda.metafacades.uml.OperationFacade; 023import org.andromda.metafacades.uml.PackageFacade; 024import org.andromda.metafacades.uml.ParameterFacade; 025import org.andromda.metafacades.uml.StateMachineFacade; 026import org.andromda.metafacades.uml.StereotypeFacade; 027import org.andromda.metafacades.uml.TaggedValueFacade; 028import org.andromda.metafacades.uml.TemplateParameterFacade; 029import org.andromda.metafacades.uml.TypeMappings; 030 031/** 032 * Represents an operation for a JSF controller. 033 * MetafacadeLogic for JSFControllerOperation 034 * 035 * @see JSFControllerOperation 036 */ 037public abstract class JSFControllerOperationLogic 038 extends MetafacadeBase 039 implements JSFControllerOperation 040{ 041 /** 042 * The underlying UML object 043 * @see Object 044 */ 045 protected Object metaObject; 046 047 /** Create Metafacade implementation instance using the MetafacadeFactory from the context 048 * @param metaObjectIn 049 * @param context 050 */ 051 protected JSFControllerOperationLogic(Object metaObjectIn, String context) 052 { 053 super(metaObjectIn, getContext(context)); 054 this.superFrontEndControllerOperation = 055 (FrontEndControllerOperation) 056 MetafacadeFactory.getInstance().createFacadeImpl( 057 "org.andromda.metafacades.uml.FrontEndControllerOperation", 058 metaObjectIn, 059 getContext(context)); 060 this.metaObject = metaObjectIn; 061 } 062 063 /** 064 * Gets the context for this metafacade logic instance. 065 * @param context String. Set to JSFControllerOperation if null 066 * @return context String 067 */ 068 private static String getContext(String context) 069 { 070 if (context == null) 071 { 072 context = "org.andromda.cartridges.jsf.metafacades.JSFControllerOperation"; 073 } 074 return context; 075 } 076 077 private FrontEndControllerOperation superFrontEndControllerOperation; 078 private boolean superFrontEndControllerOperationInitialized = false; 079 080 /** 081 * Gets the FrontEndControllerOperation parent instance. 082 * @return this.superFrontEndControllerOperation FrontEndControllerOperation 083 */ 084 private FrontEndControllerOperation getSuperFrontEndControllerOperation() 085 { 086 if (!this.superFrontEndControllerOperationInitialized) 087 { 088 ((MetafacadeBase)this.superFrontEndControllerOperation).setMetafacadeContext(this.getMetafacadeContext()); 089 this.superFrontEndControllerOperationInitialized = true; 090 } 091 return this.superFrontEndControllerOperation; 092 } 093 094 /** Reset context only for non-root metafacades 095 * @param context 096 * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context) 097 */ 098 @Override 099 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}