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