001// license-header java merge-point 002// 003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify! 004// 005package org.andromda.cartridges.jsf2.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.AssociationEndFacade; 014import org.andromda.metafacades.uml.AttributeFacade; 015import org.andromda.metafacades.uml.ClassifierFacade; 016import org.andromda.metafacades.uml.ConstraintFacade; 017import org.andromda.metafacades.uml.DependencyFacade; 018import org.andromda.metafacades.uml.Destination; 019import org.andromda.metafacades.uml.GeneralizableElementFacade; 020import org.andromda.metafacades.uml.GeneralizationFacade; 021import org.andromda.metafacades.uml.ModelElementFacade; 022import org.andromda.metafacades.uml.ModelFacade; 023import org.andromda.metafacades.uml.OperationFacade; 024import org.andromda.metafacades.uml.PackageFacade; 025import org.andromda.metafacades.uml.Role; 026import org.andromda.metafacades.uml.Service; 027import org.andromda.metafacades.uml.StateMachineFacade; 028import org.andromda.metafacades.uml.StereotypeFacade; 029import org.andromda.metafacades.uml.TaggedValueFacade; 030import org.andromda.metafacades.uml.TemplateParameterFacade; 031import org.andromda.metafacades.uml.TypeMappings; 032 033/** 034 * Represents a back-end service that can be accessed by a JSF controller. 035 * MetafacadeLogic for JSFBackendService 036 * 037 * @see JSFBackendService 038 */ 039public abstract class JSFBackendServiceLogic 040 extends MetafacadeBase 041 implements JSFBackendService 042{ 043 /** 044 * The underlying UML object 045 * @see Object 046 */ 047 protected Object metaObject; 048 049 /** Create Metafacade implementation instance using the MetafacadeFactory from the context 050 * @param metaObjectIn 051 * @param context 052 */ 053 protected JSFBackendServiceLogic(Object metaObjectIn, String context) 054 { 055 super(metaObjectIn, getContext(context)); 056 this.superService = 057 (Service) 058 MetafacadeFactory.getInstance().createFacadeImpl( 059 "org.andromda.metafacades.uml.Service", 060 metaObjectIn, 061 getContext(context)); 062 this.metaObject = metaObjectIn; 063 } 064 065 /** 066 * Gets the context for this metafacade logic instance. 067 * @param context String. Set to JSFBackendService if null 068 * @return context String 069 */ 070 private static String getContext(String context) 071 { 072 if (context == null) 073 { 074 context = "org.andromda.cartridges.jsf2.metafacades.JSFBackendService"; 075 } 076 return context; 077 } 078 079 private Service superService; 080 private boolean superServiceInitialized = false; 081 082 /** 083 * Gets the Service parent instance. 084 * @return this.superService Service 085 */ 086 private Service getSuperService() 087 { 088 if (!this.superServiceInitialized) 089 { 090 ((MetafacadeBase)this.superService).setMetafacadeContext(this.getMetafacadeContext()); 091 this.superServiceInitialized = true; 092 } 093 return this.superService; 094 } 095 096 /** Reset context only for non-root metafacades 097 * @param context 098 * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context) 099 */ 100 @Override 101 public void resetMetafacadeContext(String context) 102 { 103 if (!this.contextRoot) // reset context only for non-root metafacades 104 { 105 context = getContext(context); // to have same value as in original constructor call 106 setMetafacadeContext (context); 107 if (this.superServiceInitialized) 108 { 109 ((MetafacadeBase)this.superService).resetMetafacadeContext(context); 110 } 111 } 112 } 113 114 /** 115 * @return boolean true always 116 * @see JSFBackendService 117 */ 118 public boolean isJSFBackendServiceMetaType() 119 { 120 return true; 121 } 122 123 // --------------- attributes --------------------- 124 125 /** 126 * @see org.andromda.cartridges.jsf2.metafacades.JSFBackendService#getAccessorImplementation() 127 * @return String 128 */ 129 protected abstract String handleGetAccessorImplementation(); 130 131 private String __accessorImplementation1a; 132 private boolean __accessorImplementation1aSet = false; 133 134 /** 135 * The implementation to use in a controller in order to get an instance of a back end service. 136 * @return (String)handleGetAccessorImplementation() 137 */ 138 public final String getAccessorImplementation() 139 { 140 String accessorImplementation1a = this.__accessorImplementation1a; 141 if (!this.__accessorImplementation1aSet) 142 { 143 // accessorImplementation has no pre constraints 144 accessorImplementation1a = handleGetAccessorImplementation(); 145 // accessorImplementation has no post constraints 146 this.__accessorImplementation1a = accessorImplementation1a; 147 if (isMetafacadePropertyCachingEnabled()) 148 { 149 this.__accessorImplementation1aSet = true; 150 } 151 } 152 return accessorImplementation1a; 153 } 154 155 /** 156 * @return true 157 * @see Service 158 */ 159 public boolean isServiceMetaType() 160 { 161 return true; 162 } 163 164 /** 165 * @return true 166 * @see ClassifierFacade 167 */ 168 public boolean isClassifierFacadeMetaType() 169 { 170 return true; 171 } 172 173 /** 174 * @return true 175 * @see GeneralizableElementFacade 176 */ 177 public boolean isGeneralizableElementFacadeMetaType() 178 { 179 return true; 180 } 181 182 /** 183 * @return true 184 * @see ModelElementFacade 185 */ 186 public boolean isModelElementFacadeMetaType() 187 { 188 return true; 189 } 190 191 // ----------- delegates to Service ------------ 192 /** 193 * Return the attribute which name matches the parameter 194 * @see ClassifierFacade#findAttribute(String name) 195 */ 196 public AttributeFacade findAttribute(String name) 197 { 198 return this.getSuperService().findAttribute(name); 199 } 200 201 /** 202 * Those abstraction dependencies for which this classifier is the client. 203 * @see ClassifierFacade#getAbstractions() 204 */ 205 public Collection<ClassifierFacade> getAbstractions() 206 { 207 return this.getSuperService().getAbstractions(); 208 } 209 210 /** 211 * Lists all classes associated to this one and any ancestor classes (through generalization). 212 * There will be no duplicates. The order of the elements is predictable. 213 * @see ClassifierFacade#getAllAssociatedClasses() 214 */ 215 public Collection<ClassifierFacade> getAllAssociatedClasses() 216 { 217 return this.getSuperService().getAllAssociatedClasses(); 218 } 219 220 /** 221 * A collection containing all 'properties' of the classifier and its ancestors. Properties are 222 * any attributes and navigable connecting association ends. 223 * @see ClassifierFacade#getAllProperties() 224 */ 225 public Collection<ModelElementFacade> getAllProperties() 226 { 227 return this.getSuperService().getAllProperties(); 228 } 229 230 /** 231 * A collection containing all required and/or read-only 'properties' of the classifier and its 232 * ancestors. Properties are any attributes and navigable connecting association ends. 233 * @see ClassifierFacade#getAllRequiredConstructorParameters() 234 */ 235 public Collection<ModelElementFacade> getAllRequiredConstructorParameters() 236 { 237 return this.getSuperService().getAllRequiredConstructorParameters(); 238 } 239 240 /** 241 * Gets the array type for this classifier. If this classifier already represents an array, it 242 * just returns itself. 243 * @see ClassifierFacade#getArray() 244 */ 245 public ClassifierFacade getArray() 246 { 247 return this.getSuperService().getArray(); 248 } 249 250 /** 251 * The name of the classifier as an array. 252 * @see ClassifierFacade#getArrayName() 253 */ 254 public String getArrayName() 255 { 256 return this.getSuperService().getArrayName(); 257 } 258 259 /** 260 * Lists the classes associated to this one, there is no repitition of classes. The order of the 261 * elements is predictable. 262 * @see ClassifierFacade#getAssociatedClasses() 263 */ 264 public Collection<ClassifierFacade> getAssociatedClasses() 265 { 266 return this.getSuperService().getAssociatedClasses(); 267 } 268 269 /** 270 * Gets the association ends belonging to a classifier. 271 * @see ClassifierFacade#getAssociationEnds() 272 */ 273 public List<AssociationEndFacade> getAssociationEnds() 274 { 275 return this.getSuperService().getAssociationEnds(); 276 } 277 278 /** 279 * Gets the attributes that belong to the classifier. 280 * @see ClassifierFacade#getAttributes() 281 */ 282 public List<AttributeFacade> getAttributes() 283 { 284 return this.getSuperService().getAttributes(); 285 } 286 287 /** 288 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance 289 * hierarchy and gets the attributes from the super classes as well. 290 * @see ClassifierFacade#getAttributes(boolean follow) 291 */ 292 public List<AttributeFacade> getAttributes(boolean follow) 293 { 294 return this.getSuperService().getAttributes(follow); 295 } 296 297 /** 298 * The fully qualified name of the classifier as an array. 299 * @see ClassifierFacade#getFullyQualifiedArrayName() 300 */ 301 public String getFullyQualifiedArrayName() 302 { 303 return this.getSuperService().getFullyQualifiedArrayName(); 304 } 305 306 /** 307 * Returns all those operations that could be implemented at this classifier's level. This means 308 * the operations owned by this classifier as well as any realized interface's operations 309 * (recursively) in case this classifier itself is not already an interface, or generalized when 310 * this classifier is an interface. 311 * @see ClassifierFacade#getImplementationOperations() 312 */ 313 public Collection<OperationFacade> getImplementationOperations() 314 { 315 return this.getSuperService().getImplementationOperations(); 316 } 317 318 /** 319 * A comma separated list of the fully qualified names of all implemented interfaces. 320 * @see ClassifierFacade#getImplementedInterfaceList() 321 */ 322 public String getImplementedInterfaceList() 323 { 324 return this.getSuperService().getImplementedInterfaceList(); 325 } 326 327 /** 328 * Those attributes that are scoped to an instance of this class. 329 * @see ClassifierFacade#getInstanceAttributes() 330 */ 331 public Collection<AttributeFacade> getInstanceAttributes() 332 { 333 return this.getSuperService().getInstanceAttributes(); 334 } 335 336 /** 337 * Those operations that are scoped to an instance of this class. 338 * @see ClassifierFacade#getInstanceOperations() 339 */ 340 public List<OperationFacade> getInstanceOperations() 341 { 342 return this.getSuperService().getInstanceOperations(); 343 } 344 345 /** 346 * Those interfaces that are abstractions of this classifier, this basically means this 347 * classifier realizes them. 348 * @see ClassifierFacade#getInterfaceAbstractions() 349 */ 350 public Collection<ClassifierFacade> getInterfaceAbstractions() 351 { 352 return this.getSuperService().getInterfaceAbstractions(); 353 } 354 355 /** 356 * A String representing a new Constructor declaration for this classifier type to be used in a 357 * Java environment. 358 * @see ClassifierFacade#getJavaNewString() 359 */ 360 public String getJavaNewString() 361 { 362 return this.getSuperService().getJavaNewString(); 363 } 364 365 /** 366 * A String representing the null-value for this classifier type to be used in a Java 367 * environment. 368 * @see ClassifierFacade#getJavaNullString() 369 */ 370 public String getJavaNullString() 371 { 372 return this.getSuperService().getJavaNullString(); 373 } 374 375 /** 376 * The other ends of this classifier's association ends which are navigable. 377 * @see ClassifierFacade#getNavigableConnectingEnds() 378 */ 379 public Collection<AssociationEndFacade> getNavigableConnectingEnds() 380 { 381 return this.getSuperService().getNavigableConnectingEnds(); 382 } 383 384 /** 385 * Get the other ends of this classifier's association ends which are navigable and if 'follow' 386 * is true goes up the inheritance hierarchy and gets the super association ends as well. 387 * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow) 388 */ 389 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow) 390 { 391 return this.getSuperService().getNavigableConnectingEnds(follow); 392 } 393 394 /** 395 * Assuming that the classifier is an array, this will return the non array type of the 396 * classifier from 397 * the model. If the classifier is NOT an array, it will just return itself. 398 * @see ClassifierFacade#getNonArray() 399 */ 400 public ClassifierFacade getNonArray() 401 { 402 return this.getSuperService().getNonArray(); 403 } 404 405 /** 406 * The attributes from this classifier in the form of an operation call (this example would be 407 * in Java): '(String attributeOne, String attributeTwo). If there were no attributes on the 408 * classifier, the result would be an empty '()'. 409 * @see ClassifierFacade#getOperationCallFromAttributes() 410 */ 411 public String getOperationCallFromAttributes() 412 { 413 return this.getSuperService().getOperationCallFromAttributes(); 414 } 415 416 /** 417 * The operations owned by this classifier. 418 * @see ClassifierFacade#getOperations() 419 */ 420 public List<OperationFacade> getOperations() 421 { 422 return this.getSuperService().getOperations(); 423 } 424 425 /** 426 * A collection containing all 'properties' of the classifier. Properties are any attributes 427 * and navigable connecting association ends. 428 * @see ClassifierFacade#getProperties() 429 */ 430 public List<ModelElementFacade> getProperties() 431 { 432 return this.getSuperService().getProperties(); 433 } 434 435 /** 436 * Gets all properties (attributes and navigable association ends) for the classifier and if 437 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super 438 * classes as well. 439 * @see ClassifierFacade#getProperties(boolean follow) 440 */ 441 public List getProperties(boolean follow) 442 { 443 return this.getSuperService().getProperties(follow); 444 } 445 446 /** 447 * A collection containing all required and/or read-only 'properties' of the classifier. 448 * Properties are any attributes and navigable connecting association ends. 449 * @see ClassifierFacade#getRequiredConstructorParameters() 450 */ 451 public Collection<ModelElementFacade> getRequiredConstructorParameters() 452 { 453 return this.getSuperService().getRequiredConstructorParameters(); 454 } 455 456 /** 457 * Returns the serial version UID of the underlying model element. 458 * @see ClassifierFacade#getSerialVersionUID() 459 */ 460 public long getSerialVersionUID() 461 { 462 return this.getSuperService().getSerialVersionUID(); 463 } 464 465 /** 466 * Those attributes that are scoped to the definition of this class. 467 * @see ClassifierFacade#getStaticAttributes() 468 */ 469 public Collection<AttributeFacade> getStaticAttributes() 470 { 471 return this.getSuperService().getStaticAttributes(); 472 } 473 474 /** 475 * Those operations that are scoped to the definition of this class. 476 * @see ClassifierFacade#getStaticOperations() 477 */ 478 public List<OperationFacade> getStaticOperations() 479 { 480 return this.getSuperService().getStaticOperations(); 481 } 482 483 /** 484 * This class' superclass, returns the generalization if it is a ClassifierFacade, null 485 * otherwise. 486 * @see ClassifierFacade#getSuperClass() 487 */ 488 public ClassifierFacade getSuperClass() 489 { 490 return this.getSuperService().getSuperClass(); 491 } 492 493 /** 494 * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long' 495 * maps to 'Long'). If the classifier doesn't have a wrapper defined for it, this method will 496 * return a null. Note that wrapper mappings must be defined for the namespace by defining the 497 * 'wrapperMappingsUri', this property must point to the location of the mappings file which 498 * maps the primitives to wrapper types. 499 * @see ClassifierFacade#getWrapperName() 500 */ 501 public String getWrapperName() 502 { 503 return this.getSuperService().getWrapperName(); 504 } 505 506 /** 507 * Indicates if this classifier is 'abstract'. 508 * @see ClassifierFacade#isAbstract() 509 */ 510 public boolean isAbstract() 511 { 512 return this.getSuperService().isAbstract(); 513 } 514 515 /** 516 * True if this classifier represents an array type. False otherwise. 517 * @see ClassifierFacade#isArrayType() 518 */ 519 public boolean isArrayType() 520 { 521 return this.getSuperService().isArrayType(); 522 } 523 524 /** 525 * True if the ClassifierFacade is an AssociationClass. 526 * @see ClassifierFacade#isAssociationClass() 527 */ 528 public boolean isAssociationClass() 529 { 530 return this.getSuperService().isAssociationClass(); 531 } 532 533 /** 534 * Returns true if this type represents a Blob type. 535 * @see ClassifierFacade#isBlobType() 536 */ 537 public boolean isBlobType() 538 { 539 return this.getSuperService().isBlobType(); 540 } 541 542 /** 543 * Indicates if this type represents a boolean type or not. 544 * @see ClassifierFacade#isBooleanType() 545 */ 546 public boolean isBooleanType() 547 { 548 return this.getSuperService().isBooleanType(); 549 } 550 551 /** 552 * Indicates if this type represents a char, Character, or java.lang.Character type or not. 553 * @see ClassifierFacade#isCharacterType() 554 */ 555 public boolean isCharacterType() 556 { 557 return this.getSuperService().isCharacterType(); 558 } 559 560 /** 561 * Returns true if this type represents a Clob type. 562 * @see ClassifierFacade#isClobType() 563 */ 564 public boolean isClobType() 565 { 566 return this.getSuperService().isClobType(); 567 } 568 569 /** 570 * True if this classifier represents a collection type. False otherwise. 571 * @see ClassifierFacade#isCollectionType() 572 */ 573 public boolean isCollectionType() 574 { 575 return this.getSuperService().isCollectionType(); 576 } 577 578 /** 579 * True/false depending on whether or not this classifier represents a datatype. A data type is 580 * a type whose instances are identified only by their value. A data type may contain attributes 581 * to support the modeling of structured data types. 582 * @see ClassifierFacade#isDataType() 583 */ 584 public boolean isDataType() 585 { 586 return this.getSuperService().isDataType(); 587 } 588 589 /** 590 * True when this classifier is a date type. 591 * @see ClassifierFacade#isDateType() 592 */ 593 public boolean isDateType() 594 { 595 return this.getSuperService().isDateType(); 596 } 597 598 /** 599 * Indicates if this type represents a Double type or not. 600 * @see ClassifierFacade#isDoubleType() 601 */ 602 public boolean isDoubleType() 603 { 604 return this.getSuperService().isDoubleType(); 605 } 606 607 /** 608 * Indicates whether or not this classifier represents an "EmbeddedValue'. 609 * @see ClassifierFacade#isEmbeddedValue() 610 */ 611 public boolean isEmbeddedValue() 612 { 613 return this.getSuperService().isEmbeddedValue(); 614 } 615 616 /** 617 * True if this classifier is in fact marked as an enumeration. 618 * @see ClassifierFacade#isEnumeration() 619 */ 620 public boolean isEnumeration() 621 { 622 return this.getSuperService().isEnumeration(); 623 } 624 625 /** 626 * Returns true if this type represents a 'file' type. 627 * @see ClassifierFacade#isFileType() 628 */ 629 public boolean isFileType() 630 { 631 return this.getSuperService().isFileType(); 632 } 633 634 /** 635 * Indicates if this type represents a Float type or not. 636 * @see ClassifierFacade#isFloatType() 637 */ 638 public boolean isFloatType() 639 { 640 return this.getSuperService().isFloatType(); 641 } 642 643 /** 644 * Indicates if this type represents an int or Integer or java.lang.Integer type or not. 645 * @see ClassifierFacade#isIntegerType() 646 */ 647 public boolean isIntegerType() 648 { 649 return this.getSuperService().isIntegerType(); 650 } 651 652 /** 653 * True/false depending on whether or not this Classifier represents an interface. 654 * @see ClassifierFacade#isInterface() 655 */ 656 public boolean isInterface() 657 { 658 return this.getSuperService().isInterface(); 659 } 660 661 /** 662 * True if this classifier cannot be extended and represent a leaf in the inheritance tree. 663 * @see ClassifierFacade#isLeaf() 664 */ 665 public boolean isLeaf() 666 { 667 return this.getSuperService().isLeaf(); 668 } 669 670 /** 671 * True if this classifier represents a list type. False otherwise. 672 * @see ClassifierFacade#isListType() 673 */ 674 public boolean isListType() 675 { 676 return this.getSuperService().isListType(); 677 } 678 679 /** 680 * Indicates if this type represents a Long type or not. 681 * @see ClassifierFacade#isLongType() 682 */ 683 public boolean isLongType() 684 { 685 return this.getSuperService().isLongType(); 686 } 687 688 /** 689 * Indicates whether or not this classifier represents a Map type. 690 * @see ClassifierFacade#isMapType() 691 */ 692 public boolean isMapType() 693 { 694 return this.getSuperService().isMapType(); 695 } 696 697 /** 698 * Indicates whether or not this classifier represents a primitive type. 699 * @see ClassifierFacade#isPrimitive() 700 */ 701 public boolean isPrimitive() 702 { 703 return this.getSuperService().isPrimitive(); 704 } 705 706 /** 707 * True if this classifier represents a set type. False otherwise. 708 * @see ClassifierFacade#isSetType() 709 */ 710 public boolean isSetType() 711 { 712 return this.getSuperService().isSetType(); 713 } 714 715 /** 716 * Indicates whether or not this classifier represents a string type. 717 * @see ClassifierFacade#isStringType() 718 */ 719 public boolean isStringType() 720 { 721 return this.getSuperService().isStringType(); 722 } 723 724 /** 725 * Indicates whether or not this classifier represents a time type. 726 * @see ClassifierFacade#isTimeType() 727 */ 728 public boolean isTimeType() 729 { 730 return this.getSuperService().isTimeType(); 731 } 732 733 /** 734 * Returns true if this type is a wrapped primitive type. 735 * @see ClassifierFacade#isWrappedPrimitive() 736 */ 737 public boolean isWrappedPrimitive() 738 { 739 return this.getSuperService().isWrappedPrimitive(); 740 } 741 742 /** 743 * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set 744 * to true. 745 * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow) 746 */ 747 public Object findTaggedValue(String tagName, boolean follow) 748 { 749 return this.getSuperService().findTaggedValue(tagName, follow); 750 } 751 752 /** 753 * All generalizations for this generalizable element, goes up the inheritance tree. 754 * @see GeneralizableElementFacade#getAllGeneralizations() 755 */ 756 public Collection<GeneralizableElementFacade> getAllGeneralizations() 757 { 758 return this.getSuperService().getAllGeneralizations(); 759 } 760 761 /** 762 * All specializations (travels down the inheritance hierarchy). 763 * @see GeneralizableElementFacade#getAllSpecializations() 764 */ 765 public Collection<GeneralizableElementFacade> getAllSpecializations() 766 { 767 return this.getSuperService().getAllSpecializations(); 768 } 769 770 /** 771 * Gets the direct generalization for this generalizable element. 772 * @see GeneralizableElementFacade#getGeneralization() 773 */ 774 public GeneralizableElementFacade getGeneralization() 775 { 776 return this.getSuperService().getGeneralization(); 777 } 778 779 /** 780 * Gets the actual links that this generalization element is part of (it plays either the 781 * specialization or generalization). 782 * @see GeneralizableElementFacade#getGeneralizationLinks() 783 */ 784 public Collection<GeneralizationFacade> getGeneralizationLinks() 785 { 786 return this.getSuperService().getGeneralizationLinks(); 787 } 788 789 /** 790 * A comma separated list of the fully qualified names of all generalizations. 791 * @see GeneralizableElementFacade#getGeneralizationList() 792 */ 793 public String getGeneralizationList() 794 { 795 return this.getSuperService().getGeneralizationList(); 796 } 797 798 /** 799 * The element found when you recursively follow the generalization path up to the root. If an 800 * element has no generalization itself will be considered the root. 801 * @see GeneralizableElementFacade#getGeneralizationRoot() 802 */ 803 public GeneralizableElementFacade getGeneralizationRoot() 804 { 805 return this.getSuperService().getGeneralizationRoot(); 806 } 807 808 /** 809 * Return all generalizations (ancestors) from this generalizable element. 810 * @see GeneralizableElementFacade#getGeneralizations() 811 */ 812 public Collection<GeneralizableElementFacade> getGeneralizations() 813 { 814 return this.getSuperService().getGeneralizations(); 815 } 816 817 /** 818 * Gets the direct specializations (i.e. sub elements) for this generalizatble element. 819 * @see GeneralizableElementFacade#getSpecializations() 820 */ 821 public Collection<GeneralizableElementFacade> getSpecializations() 822 { 823 return this.getSuperService().getSpecializations(); 824 } 825 826 /** 827 * Copies all tagged values from the given ModelElementFacade to this model element facade. 828 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element) 829 */ 830 public void copyTaggedValues(ModelElementFacade element) 831 { 832 this.getSuperService().copyTaggedValues(element); 833 } 834 835 /** 836 * Finds the tagged value with the specified 'tagName'. In case there are more values the first 837 * one found will be returned. 838 * @see ModelElementFacade#findTaggedValue(String tagName) 839 */ 840 public Object findTaggedValue(String tagName) 841 { 842 return this.getSuperService().findTaggedValue(tagName); 843 } 844 845 /** 846 * Returns all the values for the tagged value with the specified name. The returned collection 847 * will contains only String instances, or will be empty. Never null. 848 * @see ModelElementFacade#findTaggedValues(String tagName) 849 */ 850 public Collection<Object> findTaggedValues(String tagName) 851 { 852 return this.getSuperService().findTaggedValues(tagName); 853 } 854 855 /** 856 * Returns the fully qualified name of the model element. The fully qualified name includes 857 * complete package qualified name of the underlying model element. The templates parameter will 858 * be replaced by the correct one given the binding relation of the parameter to this element. 859 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement) 860 */ 861 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement) 862 { 863 return this.getSuperService().getBindedFullyQualifiedName(bindedElement); 864 } 865 866 /** 867 * Gets all constraints belonging to the model element. 868 * @see ModelElementFacade#getConstraints() 869 */ 870 public Collection<ConstraintFacade> getConstraints() 871 { 872 return this.getSuperService().getConstraints(); 873 } 874 875 /** 876 * Returns the constraints of the argument kind that have been placed onto this model. Typical 877 * kinds are "inv", "pre" and "post". Other kinds are possible. 878 * @see ModelElementFacade#getConstraints(String kind) 879 */ 880 public Collection<ConstraintFacade> getConstraints(String kind) 881 { 882 return this.getSuperService().getConstraints(kind); 883 } 884 885 /** 886 * Gets the documentation for the model element, The indent argument is prefixed to each line. 887 * By default this method wraps lines after 64 characters. 888 * This method is equivalent to <code>getDocumentation(indent, 64)</code>. 889 * @see ModelElementFacade#getDocumentation(String indent) 890 */ 891 public String getDocumentation(String indent) 892 { 893 return this.getSuperService().getDocumentation(indent); 894 } 895 896 /** 897 * This method returns the documentation for this model element, with the lines wrapped after 898 * the specified number of characters, values of less than 1 will indicate no line wrapping is 899 * required. By default paragraphs are returned as HTML. 900 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>. 901 * @see ModelElementFacade#getDocumentation(String indent, int lineLength) 902 */ 903 public String getDocumentation(String indent, int lineLength) 904 { 905 return this.getSuperService().getDocumentation(indent, lineLength); 906 } 907 908 /** 909 * This method returns the documentation for this model element, with the lines wrapped after 910 * the specified number of characters, values of less than 1 will indicate no line wrapping is 911 * required. HTML style determines if HTML Escaping is applied. 912 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle) 913 */ 914 public String getDocumentation(String indent, int lineLength, boolean htmlStyle) 915 { 916 return this.getSuperService().getDocumentation(indent, lineLength, htmlStyle); 917 } 918 919 /** 920 * The fully qualified name of this model element. 921 * @see ModelElementFacade#getFullyQualifiedName() 922 */ 923 public String getFullyQualifiedName() 924 { 925 return this.getSuperService().getFullyQualifiedName(); 926 } 927 928 /** 929 * Returns the fully qualified name of the model element. The fully qualified name includes 930 * complete package qualified name of the underlying model element. If modelName is true, then 931 * the original name of the model element (the name contained within the model) will be the name 932 * returned, otherwise a name from a language mapping will be returned. 933 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName) 934 */ 935 public String getFullyQualifiedName(boolean modelName) 936 { 937 return this.getSuperService().getFullyQualifiedName(modelName); 938 } 939 940 /** 941 * Returns the fully qualified name as a path, the returned value always starts with out a slash 942 * '/'. 943 * @see ModelElementFacade#getFullyQualifiedNamePath() 944 */ 945 public String getFullyQualifiedNamePath() 946 { 947 return this.getSuperService().getFullyQualifiedNamePath(); 948 } 949 950 /** 951 * Gets the unique identifier of the underlying model element. 952 * @see ModelElementFacade#getId() 953 */ 954 public String getId() 955 { 956 return this.getSuperService().getId(); 957 } 958 959 /** 960 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which 961 * are not represented by other properties, i.e. native, transient, volatile, synchronized, 962 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings: 963 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require 964 * JDK5 compiler level. 965 * @see ModelElementFacade#getKeywords() 966 */ 967 public Collection<String> getKeywords() 968 { 969 return this.getSuperService().getKeywords(); 970 } 971 972 /** 973 * UML2: Retrieves a localized label for this named element. 974 * @see ModelElementFacade#getLabel() 975 */ 976 public String getLabel() 977 { 978 return this.getSuperService().getLabel(); 979 } 980 981 /** 982 * The language mappings that have been set for this model element. 983 * @see ModelElementFacade#getLanguageMappings() 984 */ 985 public TypeMappings getLanguageMappings() 986 { 987 return this.getSuperService().getLanguageMappings(); 988 } 989 990 /** 991 * Return the model containing this model element (multiple models may be loaded and processed 992 * at the same time). 993 * @see ModelElementFacade#getModel() 994 */ 995 public ModelFacade getModel() 996 { 997 return this.getSuperService().getModel(); 998 } 999 1000 /** 1001 * The name of the model element. 1002 * @see ModelElementFacade#getName() 1003 */ 1004 public String getName() 1005 { 1006 return this.getSuperService().getName(); 1007 } 1008 1009 /** 1010 * Gets the package to which this model element belongs. 1011 * @see ModelElementFacade#getPackage() 1012 */ 1013 public ModelElementFacade getPackage() 1014 { 1015 return this.getSuperService().getPackage(); 1016 } 1017 1018 /** 1019 * The name of this model element's package. 1020 * @see ModelElementFacade#getPackageName() 1021 */ 1022 public String getPackageName() 1023 { 1024 return this.getSuperService().getPackageName(); 1025 } 1026 1027 /** 1028 * Gets the package name (optionally providing the ability to retrieve the model name and not 1029 * the mapped name). 1030 * @see ModelElementFacade#getPackageName(boolean modelName) 1031 */ 1032 public String getPackageName(boolean modelName) 1033 { 1034 return this.getSuperService().getPackageName(modelName); 1035 } 1036 1037 /** 1038 * Returns the package as a path, the returned value always starts with out a slash '/'. 1039 * @see ModelElementFacade#getPackagePath() 1040 */ 1041 public String getPackagePath() 1042 { 1043 return this.getSuperService().getPackagePath(); 1044 } 1045 1046 /** 1047 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the 1048 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from 1049 * the names of the containing namespaces starting at the root of the hierarchy and ending with 1050 * the name of the NamedElement itself. 1051 * @see ModelElementFacade#getQualifiedName() 1052 */ 1053 public String getQualifiedName() 1054 { 1055 return this.getSuperService().getQualifiedName(); 1056 } 1057 1058 /** 1059 * Gets the root package for the model element. 1060 * @see ModelElementFacade#getRootPackage() 1061 */ 1062 public PackageFacade getRootPackage() 1063 { 1064 return this.getSuperService().getRootPackage(); 1065 } 1066 1067 /** 1068 * Gets the dependencies for which this model element is the source. 1069 * @see ModelElementFacade#getSourceDependencies() 1070 */ 1071 public Collection<DependencyFacade> getSourceDependencies() 1072 { 1073 return this.getSuperService().getSourceDependencies(); 1074 } 1075 1076 /** 1077 * If this model element is the context of an activity graph, this represents that activity 1078 * graph. 1079 * @see ModelElementFacade#getStateMachineContext() 1080 */ 1081 public StateMachineFacade getStateMachineContext() 1082 { 1083 return this.getSuperService().getStateMachineContext(); 1084 } 1085 1086 /** 1087 * The collection of ALL stereotype names for this model element. 1088 * @see ModelElementFacade#getStereotypeNames() 1089 */ 1090 public Collection<String> getStereotypeNames() 1091 { 1092 return this.getSuperService().getStereotypeNames(); 1093 } 1094 1095 /** 1096 * Gets all stereotypes for this model element. 1097 * @see ModelElementFacade#getStereotypes() 1098 */ 1099 public Collection<StereotypeFacade> getStereotypes() 1100 { 1101 return this.getSuperService().getStereotypes(); 1102 } 1103 1104 /** 1105 * Return the TaggedValues associated with this model element, under all stereotypes. 1106 * @see ModelElementFacade#getTaggedValues() 1107 */ 1108 public Collection<TaggedValueFacade> getTaggedValues() 1109 { 1110 return this.getSuperService().getTaggedValues(); 1111 } 1112 1113 /** 1114 * Gets the dependencies for which this model element is the target. 1115 * @see ModelElementFacade#getTargetDependencies() 1116 */ 1117 public Collection<DependencyFacade> getTargetDependencies() 1118 { 1119 return this.getSuperService().getTargetDependencies(); 1120 } 1121 1122 /** 1123 * Get the template parameter for this model element having the parameterName 1124 * @see ModelElementFacade#getTemplateParameter(String parameterName) 1125 */ 1126 public Object getTemplateParameter(String parameterName) 1127 { 1128 return this.getSuperService().getTemplateParameter(parameterName); 1129 } 1130 1131 /** 1132 * Get the template parameters for this model element 1133 * @see ModelElementFacade#getTemplateParameters() 1134 */ 1135 public Collection<TemplateParameterFacade> getTemplateParameters() 1136 { 1137 return this.getSuperService().getTemplateParameters(); 1138 } 1139 1140 /** 1141 * The visibility (i.e. public, private, protected or package) of the model element, will 1142 * attempt a lookup for these values in the language mappings (if any). 1143 * @see ModelElementFacade#getVisibility() 1144 */ 1145 public String getVisibility() 1146 { 1147 return this.getSuperService().getVisibility(); 1148 } 1149 1150 /** 1151 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance 1152 * is taken into account when searching for the stereotype), false otherwise. 1153 * @see ModelElementFacade#hasExactStereotype(String stereotypeName) 1154 */ 1155 public boolean hasExactStereotype(String stereotypeName) 1156 { 1157 return this.getSuperService().hasExactStereotype(stereotypeName); 1158 } 1159 1160 /** 1161 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma, 1162 * pipe, semicolon, or << >> 1163 * @see ModelElementFacade#hasKeyword(String keywordName) 1164 */ 1165 public boolean hasKeyword(String keywordName) 1166 { 1167 return this.getSuperService().hasKeyword(keywordName); 1168 } 1169 1170 /** 1171 * Returns true if the model element has the specified stereotype. If the stereotype itself 1172 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if 1173 * one of the stereotype's ancestors has a matching name this method will return true, false 1174 * otherwise. 1175 * For example, if we have a certain stereotype called <<exception>> and a model element has a 1176 * stereotype called <<applicationException>> which extends <<exception>>, when calling this 1177 * method with 'stereotypeName' defined as 'exception' the method would return true since 1178 * <<applicationException>> inherits from <<exception>>. If you want to check if the model 1179 * element has the exact stereotype, then use the method 'hasExactStereotype' instead. 1180 * @see ModelElementFacade#hasStereotype(String stereotypeName) 1181 */ 1182 public boolean hasStereotype(String stereotypeName) 1183 { 1184 return this.getSuperService().hasStereotype(stereotypeName); 1185 } 1186 1187 /** 1188 * True if there are target dependencies from this element that are instances of BindingFacade. 1189 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies. 1190 * @see ModelElementFacade#isBindingDependenciesPresent() 1191 */ 1192 public boolean isBindingDependenciesPresent() 1193 { 1194 return this.getSuperService().isBindingDependenciesPresent(); 1195 } 1196 1197 /** 1198 * Indicates if any constraints are present on this model element. 1199 * @see ModelElementFacade#isConstraintsPresent() 1200 */ 1201 public boolean isConstraintsPresent() 1202 { 1203 return this.getSuperService().isConstraintsPresent(); 1204 } 1205 1206 /** 1207 * Indicates if any documentation is present on this model element. 1208 * @see ModelElementFacade#isDocumentationPresent() 1209 */ 1210 public boolean isDocumentationPresent() 1211 { 1212 return this.getSuperService().isDocumentationPresent(); 1213 } 1214 1215 /** 1216 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript. 1217 * @see ModelElementFacade#isReservedWord() 1218 */ 1219 public boolean isReservedWord() 1220 { 1221 return this.getSuperService().isReservedWord(); 1222 } 1223 1224 /** 1225 * True is there are template parameters on this model element. For UML2, applies to Class, 1226 * Operation, Property, and Parameter. 1227 * @see ModelElementFacade#isTemplateParametersPresent() 1228 */ 1229 public boolean isTemplateParametersPresent() 1230 { 1231 return this.getSuperService().isTemplateParametersPresent(); 1232 } 1233 1234 /** 1235 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++, 1236 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on 1237 * Enumerations and Interfaces, optionally applies on other model elements. 1238 * @see ModelElementFacade#isValidIdentifierName() 1239 */ 1240 public boolean isValidIdentifierName() 1241 { 1242 return this.getSuperService().isValidIdentifierName(); 1243 } 1244 1245 /** 1246 * Searches for the constraint with the specified 'name' on this model element, and if found 1247 * translates it using the specified 'translation' from a translation library discovered by the 1248 * framework. 1249 * @see ModelElementFacade#translateConstraint(String name, String translation) 1250 */ 1251 public String translateConstraint(String name, String translation) 1252 { 1253 return this.getSuperService().translateConstraint(name, translation); 1254 } 1255 1256 /** 1257 * Translates all constraints belonging to this model element with the given 'translation'. 1258 * @see ModelElementFacade#translateConstraints(String translation) 1259 */ 1260 public String[] translateConstraints(String translation) 1261 { 1262 return this.getSuperService().translateConstraints(translation); 1263 } 1264 1265 /** 1266 * Translates the constraints of the specified 'kind' belonging to this model element. 1267 * @see ModelElementFacade#translateConstraints(String kind, String translation) 1268 */ 1269 public String[] translateConstraints(String kind, String translation) 1270 { 1271 return this.getSuperService().translateConstraints(kind, translation); 1272 } 1273 1274 /** 1275 * Returns a collection of all entities this service and its ancestors have a relation to. 1276 * @see Service#getAllEntityReferences() 1277 */ 1278 public Collection<DependencyFacade> getAllEntityReferences() 1279 { 1280 return this.getSuperService().getAllEntityReferences(); 1281 } 1282 1283 /** 1284 * All messaging destinations that belong to this service and all decendent services. 1285 * @see Service#getAllMessagingDestinations() 1286 */ 1287 public Collection<Destination> getAllMessagingDestinations() 1288 { 1289 return this.getSuperService().getAllMessagingDestinations(); 1290 } 1291 1292 /** 1293 * All roles associated with the service, this includes both roles that have access to the 1294 * entire service, and any roles that have access to a single operation. 1295 * @see Service#getAllRoles() 1296 */ 1297 public Collection<Role> getAllRoles() 1298 { 1299 return this.getSuperService().getAllRoles(); 1300 } 1301 1302 /** 1303 * Returns a collection of all services this service and its ancestors have a relation to. 1304 * @see Service#getAllServiceReferences() 1305 */ 1306 public Collection<DependencyFacade> getAllServiceReferences() 1307 { 1308 return this.getSuperService().getAllServiceReferences(); 1309 } 1310 1311 /** 1312 * References to all entities to which this service has a dependency. 1313 * @see Service#getEntityReferences() 1314 */ 1315 public Collection<DependencyFacade> getEntityReferences() 1316 { 1317 return this.getSuperService().getEntityReferences(); 1318 } 1319 1320 /** 1321 * All messaging destinations available to this service. 1322 * @see Service#getMessagingDestinations() 1323 */ 1324 public Collection<Destination> getMessagingDestinations() 1325 { 1326 return this.getSuperService().getMessagingDestinations(); 1327 } 1328 1329 /** 1330 * The roles of the service, these are the actor's that can access this service. 1331 * @see Service#getRoles() 1332 */ 1333 public Collection<Role> getRoles() 1334 { 1335 return this.getSuperService().getRoles(); 1336 } 1337 1338 /** 1339 * References to all services to which this service has a dependency. 1340 * @see Service#getServiceReferences() 1341 */ 1342 public Collection<DependencyFacade> getServiceReferences() 1343 { 1344 return this.getSuperService().getServiceReferences(); 1345 } 1346 1347 /** 1348 * @see org.andromda.core.metafacade.MetafacadeBase#initialize() 1349 */ 1350 @Override 1351 public void initialize() 1352 { 1353 this.getSuperService().initialize(); 1354 } 1355 1356 /** 1357 * @return Object getSuperService().getValidationOwner() 1358 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner() 1359 */ 1360 @Override 1361 public Object getValidationOwner() 1362 { 1363 Object owner = this.getSuperService().getValidationOwner(); 1364 return owner; 1365 } 1366 1367 /** 1368 * @return String getSuperService().getValidationName() 1369 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName() 1370 */ 1371 @Override 1372 public String getValidationName() 1373 { 1374 String name = this.getSuperService().getValidationName(); 1375 return name; 1376 } 1377 1378 /** 1379 * @param validationMessages Collection<ModelValidationMessage> 1380 * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages) 1381 */ 1382 @Override 1383 public void validateInvariants(Collection<ModelValidationMessage> validationMessages) 1384 { 1385 this.getSuperService().validateInvariants(validationMessages); 1386 } 1387 1388 /** 1389 * The property that stores the name of the metafacade. 1390 */ 1391 private static final String NAME_PROPERTY = "name"; 1392 private static final String FQNAME_PROPERTY = "fullyQualifiedName"; 1393 1394 /** 1395 * @see Object#toString() 1396 */ 1397 @Override 1398 public String toString() 1399 { 1400 final StringBuilder toString = new StringBuilder(this.getClass().getName()); 1401 toString.append("["); 1402 try 1403 { 1404 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY)); 1405 } 1406 catch (final Throwable tryAgain) 1407 { 1408 try 1409 { 1410 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY)); 1411 } 1412 catch (final Throwable ignore) 1413 { 1414 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property 1415 } 1416 } 1417 toString.append("]"); 1418 return toString.toString(); 1419 } 1420}