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