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