1 // license-header java merge-point 2 // 3 // Attention: generated code (by MetafacadeLogic.vsl) - do not modify! 4 // 5 package org.andromda.cartridges.xmlschema.metafacades; 6 7 import java.util.Collection; 8 import org.andromda.core.common.Introspector; 9 import org.andromda.core.metafacade.MetafacadeBase; 10 import org.andromda.core.metafacade.MetafacadeFactory; 11 import org.andromda.core.metafacade.ModelValidationMessage; 12 import org.andromda.metafacades.uml.AssociationEndFacade; 13 import org.andromda.metafacades.uml.AssociationFacade; 14 import org.andromda.metafacades.uml.ClassifierFacade; 15 import org.andromda.metafacades.uml.ConstraintFacade; 16 import org.andromda.metafacades.uml.DependencyFacade; 17 import org.andromda.metafacades.uml.ModelElementFacade; 18 import org.andromda.metafacades.uml.ModelFacade; 19 import org.andromda.metafacades.uml.PackageFacade; 20 import org.andromda.metafacades.uml.StateMachineFacade; 21 import org.andromda.metafacades.uml.StereotypeFacade; 22 import org.andromda.metafacades.uml.TaggedValueFacade; 23 import org.andromda.metafacades.uml.TemplateParameterFacade; 24 import org.andromda.metafacades.uml.TypeMappings; 25 26 /** 27 * Can be either an XSD attribute or element. 28 * MetafacadeLogic for XSDAssociationEnd 29 * 30 * @see XSDAssociationEnd 31 */ 32 public abstract class XSDAssociationEndLogic 33 extends MetafacadeBase 34 implements XSDAssociationEnd 35 { 36 /** 37 * The underlying UML object 38 * @see Object 39 */ 40 protected Object metaObject; 41 42 /** Create Metafacade implementation instance using the MetafacadeFactory from the context 43 * @param metaObjectIn 44 * @param context 45 */ 46 protected XSDAssociationEndLogic(Object metaObjectIn, String context) 47 { 48 super(metaObjectIn, getContext(context)); 49 this.superAssociationEndFacade = 50 (AssociationEndFacade) 51 MetafacadeFactory.getInstance().createFacadeImpl( 52 "org.andromda.metafacades.uml.AssociationEndFacade", 53 metaObjectIn, 54 getContext(context)); 55 this.metaObject = metaObjectIn; 56 } 57 58 /** 59 * Gets the context for this metafacade logic instance. 60 * @param context String. Set to XSDAssociationEnd if null 61 * @return context String 62 */ 63 private static String getContext(String context) 64 { 65 if (context == null) 66 { 67 context = "org.andromda.cartridges.xmlschema.metafacades.XSDAssociationEnd"; 68 } 69 return context; 70 } 71 72 private AssociationEndFacade superAssociationEndFacade; 73 private boolean superAssociationEndFacadeInitialized = false; 74 75 /** 76 * Gets the AssociationEndFacade parent instance. 77 * @return this.superAssociationEndFacade AssociationEndFacade 78 */ 79 private AssociationEndFacade getSuperAssociationEndFacade() 80 { 81 if (!this.superAssociationEndFacadeInitialized) 82 { 83 ((MetafacadeBase)this.superAssociationEndFacade).setMetafacadeContext(this.getMetafacadeContext()); 84 this.superAssociationEndFacadeInitialized = true; 85 } 86 return this.superAssociationEndFacade; 87 } 88 89 /** Reset context only for non-root metafacades 90 * @param context 91 * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context) 92 */ 93 @Override 94 public void resetMetafacadeContext(String context) 95 { 96 if (!this.contextRoot) // reset context only for non-root metafacades 97 { 98 context = getContext(context); // to have same value as in original constructor call 99 setMetafacadeContext (context); 100 if (this.superAssociationEndFacadeInitialized) 101 { 102 ((MetafacadeBase)this.superAssociationEndFacade).resetMetafacadeContext(context); 103 } 104 } 105 } 106 107 /** 108 * @return boolean true always 109 * @see XSDAssociationEnd 110 */ 111 public boolean isXSDAssociationEndMetaType() 112 { 113 return true; 114 } 115 116 // --------------- attributes --------------------- 117 118 /** 119 * @see org.andromda.cartridges.xmlschema.metafacades.XSDAssociationEnd#isOwnerSchemaType() 120 * @return boolean 121 */ 122 protected abstract boolean handleIsOwnerSchemaType(); 123 124 /** 125 * Indicates whether or not the owner is a schema type. 126 * @return (boolean)handleIsOwnerSchemaType() 127 */ 128 public final boolean isOwnerSchemaType() 129 { 130 boolean ownerSchemaType1a = false; 131 // ownerSchemaType has no pre constraints 132 ownerSchemaType1a = handleIsOwnerSchemaType(); 133 // ownerSchemaType has no post constraints 134 return ownerSchemaType1a; 135 } 136 137 // ---------------- business methods ---------------------- 138 139 /** 140 * Method to be implemented in descendants 141 * Gets the maximum amount this element can occur within an XML Schema complex type (if the 142 * object represents an attribute this value will be null). 143 * @return String 144 */ 145 protected abstract String handleGetMaxOccurs(); 146 147 /** 148 * Gets the maximum amount this element can occur within an XML Schema complex type (if the 149 * object represents an attribute this value will be null). 150 * @return handleGetMaxOccurs() 151 */ 152 public String getMaxOccurs() 153 { 154 // getMaxOccurs has no pre constraints 155 String returnValue = handleGetMaxOccurs(); 156 // getMaxOccurs has no post constraints 157 return returnValue; 158 } 159 160 /** 161 * Method to be implemented in descendants 162 * Returns the minimum amount that this object can occur with an XML Schema complex type (if the 163 * object represents an attribute this value will be null). 164 * @return String 165 */ 166 protected abstract String handleGetMinOccurs(); 167 168 /** 169 * Returns the minimum amount that this object can occur with an XML Schema complex type (if the 170 * object represents an attribute this value will be null). 171 * @return handleGetMinOccurs() 172 */ 173 public String getMinOccurs() 174 { 175 // getMinOccurs has no pre constraints 176 String returnValue = handleGetMinOccurs(); 177 // getMinOccurs has no post constraints 178 return returnValue; 179 } 180 181 /** 182 * @return true 183 * @see AssociationEndFacade 184 */ 185 public boolean isAssociationEndFacadeMetaType() 186 { 187 return true; 188 } 189 190 /** 191 * @return true 192 * @see ModelElementFacade 193 */ 194 public boolean isModelElementFacadeMetaType() 195 { 196 return true; 197 } 198 199 // ----------- delegates to AssociationEndFacade ------------ 200 /** 201 * A name suitable for use when adding new elements to this association end in programming code. 202 * @see AssociationEndFacade#getAdderName() 203 */ 204 public String getAdderName() 205 { 206 return this.getSuperAssociationEndFacade().getAdderName(); 207 } 208 209 /** 210 * Returns the value of the 'Aggregation' attribute (none, shared, composite). The default value 211 * is "none". The literals are from the enumeration org.eclipse.uml2.uml.AggregationKind. 212 * Specifies the kind of aggregation that applies to the Property. 213 * @see AssociationEndFacade#getAggregationKind() 214 */ 215 public String getAggregationKind() 216 { 217 return this.getSuperAssociationEndFacade().getAggregationKind(); 218 } 219 220 /** 221 * The association owning this association end. 222 * @see AssociationEndFacade#getAssociation() 223 */ 224 public AssociationFacade getAssociation() 225 { 226 return this.getSuperAssociationEndFacade().getAssociation(); 227 } 228 229 /** 230 * UML2: Returns the value of the 'Default' attribute. Specifies a String that represents a 231 * value to be used when no argument is supplied for the Property. A String that is evaluated to 232 * give a default value for the Property when an object of the owning Classifier is 233 * instantiated. Can be something like: new ValueObject(values); 234 * @see AssociationEndFacade#getDefault() 235 */ 236 public String getDefault() 237 { 238 return this.getSuperAssociationEndFacade().getDefault(); 239 } 240 241 /** 242 * A name suitable for use when accessing this association end in programming code. 243 * @see AssociationEndFacade#getGetterName() 244 */ 245 public String getGetterName() 246 { 247 return this.getSuperAssociationEndFacade().getGetterName(); 248 } 249 250 /** 251 * The name of the type that is returned on the accessor and mutator operations, determined in 252 * part by the multiplicity. 253 * @see AssociationEndFacade#getGetterSetterTypeName() 254 */ 255 public String getGetterSetterTypeName() 256 { 257 return this.getSuperAssociationEndFacade().getGetterSetterTypeName(); 258 } 259 260 /** 261 * the lower value for the multiplicity 262 * -only applicable for UML2 263 * @see AssociationEndFacade#getLower() 264 */ 265 public int getLower() 266 { 267 return this.getSuperAssociationEndFacade().getLower(); 268 } 269 270 /** 271 * The other association end owned by this end's association. 272 * @see AssociationEndFacade#getOtherEnd() 273 */ 274 public AssociationEndFacade getOtherEnd() 275 { 276 return this.getSuperAssociationEndFacade().getOtherEnd(); 277 } 278 279 /** 280 * A name suitable for use when removing element from this association end in programming code. 281 * @see AssociationEndFacade#getRemoverName() 282 */ 283 public String getRemoverName() 284 { 285 return this.getSuperAssociationEndFacade().getRemoverName(); 286 } 287 288 /** 289 * A name suitable for use when accessing this association end in programming code. 290 * @see AssociationEndFacade#getSetterName() 291 */ 292 public String getSetterName() 293 { 294 return this.getSuperAssociationEndFacade().getSetterName(); 295 } 296 297 /** 298 * The classifier attached to this association end. 299 * @see AssociationEndFacade#getType() 300 */ 301 public ClassifierFacade getType() 302 { 303 return this.getSuperAssociationEndFacade().getType(); 304 } 305 306 /** 307 * the upper value for the multiplicity (will be -1 for *) 308 * -only applicable for UML2 309 * @see AssociationEndFacade#getUpper() 310 */ 311 public int getUpper() 312 { 313 return this.getSuperAssociationEndFacade().getUpper(); 314 } 315 316 /** 317 * True if this association end represents an aggregation relationship. 318 * @see AssociationEndFacade#isAggregation() 319 */ 320 public boolean isAggregation() 321 { 322 return this.getSuperAssociationEndFacade().isAggregation(); 323 } 324 325 /** 326 * Is true if update of one side of the association should also update the other side. false if 327 * not. 328 * @see AssociationEndFacade#isBidirectional() 329 */ 330 public boolean isBidirectional() 331 { 332 return this.getSuperAssociationEndFacade().isBidirectional(); 333 } 334 335 /** 336 * Returns whether or not (true/false) this association end is the child end of the assocation 337 * (i.e. the other end's aggregation is composition). 338 * @see AssociationEndFacade#isChild() 339 */ 340 public boolean isChild() 341 { 342 return this.getSuperAssociationEndFacade().isChild(); 343 } 344 345 /** 346 * True if this association end represents a composition relationship. 347 * @see AssociationEndFacade#isComposition() 348 */ 349 public boolean isComposition() 350 { 351 return this.getSuperAssociationEndFacade().isComposition(); 352 } 353 354 /** 355 * If the association end is derived (its value is computed). UML2 only. UML14 always returns 356 * false. Default=false. 357 * @see AssociationEndFacade#isDerived() 358 */ 359 public boolean isDerived() 360 { 361 return this.getSuperAssociationEndFacade().isDerived(); 362 } 363 364 /** 365 * IsLeaf property in the association end property. If true, attribute is final, cannot be 366 * extended or implemented by a descendant. Default=false. 367 * @see AssociationEndFacade#isLeaf() 368 */ 369 public boolean isLeaf() 370 { 371 return this.getSuperAssociationEndFacade().isLeaf(); 372 } 373 374 /** 375 * True if this association end's multiplicity is greater than one. 376 * @see AssociationEndFacade#isMany() 377 */ 378 public boolean isMany() 379 { 380 return this.getSuperAssociationEndFacade().isMany(); 381 } 382 383 /** 384 * True if this association end's and the other end's multiplicities are both many. 385 * @see AssociationEndFacade#isMany2Many() 386 */ 387 public boolean isMany2Many() 388 { 389 return this.getSuperAssociationEndFacade().isMany2Many(); 390 } 391 392 /** 393 * True if this association end's multiplicity is many while the other end's is one. 394 * @see AssociationEndFacade#isMany2One() 395 */ 396 public boolean isMany2One() 397 { 398 return this.getSuperAssociationEndFacade().isMany2One(); 399 } 400 401 /** 402 * True if it is possible to navigate from the other end to this association end . 403 * @see AssociationEndFacade#isNavigable() 404 */ 405 public boolean isNavigable() 406 { 407 return this.getSuperAssociationEndFacade().isNavigable(); 408 } 409 410 /** 411 * True if this association end's multiplicity is one while the other end's is many. 412 * @see AssociationEndFacade#isOne2Many() 413 */ 414 public boolean isOne2Many() 415 { 416 return this.getSuperAssociationEndFacade().isOne2Many(); 417 } 418 419 /** 420 * True if this association end's and the other end's multiplicities are both one. 421 * @see AssociationEndFacade#isOne2One() 422 */ 423 public boolean isOne2One() 424 { 425 return this.getSuperAssociationEndFacade().isOne2One(); 426 } 427 428 /** 429 * Indicates whether or not the association ends are ordered (if multiplicity is greater than 430 * 1). 431 * @see AssociationEndFacade#isOrdered() 432 */ 433 public boolean isOrdered() 434 { 435 return this.getSuperAssociationEndFacade().isOrdered(); 436 } 437 438 /** 439 * True if the association end cannot be changed. 440 * @see AssociationEndFacade#isReadOnly() 441 */ 442 public boolean isReadOnly() 443 { 444 return this.getSuperAssociationEndFacade().isReadOnly(); 445 } 446 447 /** 448 * True if this association end's multiplicity is strictly greater than zero. 449 * @see AssociationEndFacade#isRequired() 450 */ 451 public boolean isRequired() 452 { 453 return this.getSuperAssociationEndFacade().isRequired(); 454 } 455 456 /** 457 * Indicates if this associationEnd is 'static', meaning it has a classifier scope. 458 * @see AssociationEndFacade#isStatic() 459 */ 460 public boolean isStatic() 461 { 462 return this.getSuperAssociationEndFacade().isStatic(); 463 } 464 465 /** 466 * UML2: If the association attribute is unique within the Collection type. UML14 always returns 467 * false. Unique+Ordered determines the implementation Collection type. Default=false. 468 * @see AssociationEndFacade#isUnique() 469 */ 470 public boolean isUnique() 471 { 472 return this.getSuperAssociationEndFacade().isUnique(); 473 } 474 475 /** 476 * Copies all tagged values from the given ModelElementFacade to this model element facade. 477 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element) 478 */ 479 public void copyTaggedValues(ModelElementFacade element) 480 { 481 this.getSuperAssociationEndFacade().copyTaggedValues(element); 482 } 483 484 /** 485 * Finds the tagged value with the specified 'tagName'. In case there are more values the first 486 * one found will be returned. 487 * @see ModelElementFacade#findTaggedValue(String tagName) 488 */ 489 public Object findTaggedValue(String tagName) 490 { 491 return this.getSuperAssociationEndFacade().findTaggedValue(tagName); 492 } 493 494 /** 495 * Returns all the values for the tagged value with the specified name. The returned collection 496 * will contains only String instances, or will be empty. Never null. 497 * @see ModelElementFacade#findTaggedValues(String tagName) 498 */ 499 public Collection<Object> findTaggedValues(String tagName) 500 { 501 return this.getSuperAssociationEndFacade().findTaggedValues(tagName); 502 } 503 504 /** 505 * Returns the fully qualified name of the model element. The fully qualified name includes 506 * complete package qualified name of the underlying model element. The templates parameter will 507 * be replaced by the correct one given the binding relation of the parameter to this element. 508 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement) 509 */ 510 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement) 511 { 512 return this.getSuperAssociationEndFacade().getBindedFullyQualifiedName(bindedElement); 513 } 514 515 /** 516 * Gets all constraints belonging to the model element. 517 * @see ModelElementFacade#getConstraints() 518 */ 519 public Collection<ConstraintFacade> getConstraints() 520 { 521 return this.getSuperAssociationEndFacade().getConstraints(); 522 } 523 524 /** 525 * Returns the constraints of the argument kind that have been placed onto this model. Typical 526 * kinds are "inv", "pre" and "post". Other kinds are possible. 527 * @see ModelElementFacade#getConstraints(String kind) 528 */ 529 public Collection<ConstraintFacade> getConstraints(String kind) 530 { 531 return this.getSuperAssociationEndFacade().getConstraints(kind); 532 } 533 534 /** 535 * Gets the documentation for the model element, The indent argument is prefixed to each line. 536 * By default this method wraps lines after 64 characters. 537 * This method is equivalent to <code>getDocumentation(indent, 64)</code>. 538 * @see ModelElementFacade#getDocumentation(String indent) 539 */ 540 public String getDocumentation(String indent) 541 { 542 return this.getSuperAssociationEndFacade().getDocumentation(indent); 543 } 544 545 /** 546 * This method returns the documentation for this model element, with the lines wrapped after 547 * the specified number of characters, values of less than 1 will indicate no line wrapping is 548 * required. By default paragraphs are returned as HTML. 549 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>. 550 * @see ModelElementFacade#getDocumentation(String indent, int lineLength) 551 */ 552 public String getDocumentation(String indent, int lineLength) 553 { 554 return this.getSuperAssociationEndFacade().getDocumentation(indent, lineLength); 555 } 556 557 /** 558 * This method returns the documentation for this model element, with the lines wrapped after 559 * the specified number of characters, values of less than 1 will indicate no line wrapping is 560 * required. HTML style determines if HTML Escaping is applied. 561 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle) 562 */ 563 public String getDocumentation(String indent, int lineLength, boolean htmlStyle) 564 { 565 return this.getSuperAssociationEndFacade().getDocumentation(indent, lineLength, htmlStyle); 566 } 567 568 /** 569 * The fully qualified name of this model element. 570 * @see ModelElementFacade#getFullyQualifiedName() 571 */ 572 public String getFullyQualifiedName() 573 { 574 return this.getSuperAssociationEndFacade().getFullyQualifiedName(); 575 } 576 577 /** 578 * Returns the fully qualified name of the model element. The fully qualified name includes 579 * complete package qualified name of the underlying model element. If modelName is true, then 580 * the original name of the model element (the name contained within the model) will be the name 581 * returned, otherwise a name from a language mapping will be returned. 582 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName) 583 */ 584 public String getFullyQualifiedName(boolean modelName) 585 { 586 return this.getSuperAssociationEndFacade().getFullyQualifiedName(modelName); 587 } 588 589 /** 590 * Returns the fully qualified name as a path, the returned value always starts with out a slash 591 * '/'. 592 * @see ModelElementFacade#getFullyQualifiedNamePath() 593 */ 594 public String getFullyQualifiedNamePath() 595 { 596 return this.getSuperAssociationEndFacade().getFullyQualifiedNamePath(); 597 } 598 599 /** 600 * Gets the unique identifier of the underlying model element. 601 * @see ModelElementFacade#getId() 602 */ 603 public String getId() 604 { 605 return this.getSuperAssociationEndFacade().getId(); 606 } 607 608 /** 609 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which 610 * are not represented by other properties, i.e. native, transient, volatile, synchronized, 611 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings: 612 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require 613 * JDK5 compiler level. 614 * @see ModelElementFacade#getKeywords() 615 */ 616 public Collection<String> getKeywords() 617 { 618 return this.getSuperAssociationEndFacade().getKeywords(); 619 } 620 621 /** 622 * UML2: Retrieves a localized label for this named element. 623 * @see ModelElementFacade#getLabel() 624 */ 625 public String getLabel() 626 { 627 return this.getSuperAssociationEndFacade().getLabel(); 628 } 629 630 /** 631 * The language mappings that have been set for this model element. 632 * @see ModelElementFacade#getLanguageMappings() 633 */ 634 public TypeMappings getLanguageMappings() 635 { 636 return this.getSuperAssociationEndFacade().getLanguageMappings(); 637 } 638 639 /** 640 * Return the model containing this model element (multiple models may be loaded and processed 641 * at the same time). 642 * @see ModelElementFacade#getModel() 643 */ 644 public ModelFacade getModel() 645 { 646 return this.getSuperAssociationEndFacade().getModel(); 647 } 648 649 /** 650 * The name of the model element. 651 * @see ModelElementFacade#getName() 652 */ 653 public String getName() 654 { 655 return this.getSuperAssociationEndFacade().getName(); 656 } 657 658 /** 659 * Gets the package to which this model element belongs. 660 * @see ModelElementFacade#getPackage() 661 */ 662 public ModelElementFacade getPackage() 663 { 664 return this.getSuperAssociationEndFacade().getPackage(); 665 } 666 667 /** 668 * The name of this model element's package. 669 * @see ModelElementFacade#getPackageName() 670 */ 671 public String getPackageName() 672 { 673 return this.getSuperAssociationEndFacade().getPackageName(); 674 } 675 676 /** 677 * Gets the package name (optionally providing the ability to retrieve the model name and not 678 * the mapped name). 679 * @see ModelElementFacade#getPackageName(boolean modelName) 680 */ 681 public String getPackageName(boolean modelName) 682 { 683 return this.getSuperAssociationEndFacade().getPackageName(modelName); 684 } 685 686 /** 687 * Returns the package as a path, the returned value always starts with out a slash '/'. 688 * @see ModelElementFacade#getPackagePath() 689 */ 690 public String getPackagePath() 691 { 692 return this.getSuperAssociationEndFacade().getPackagePath(); 693 } 694 695 /** 696 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the 697 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from 698 * the names of the containing namespaces starting at the root of the hierarchy and ending with 699 * the name of the NamedElement itself. 700 * @see ModelElementFacade#getQualifiedName() 701 */ 702 public String getQualifiedName() 703 { 704 return this.getSuperAssociationEndFacade().getQualifiedName(); 705 } 706 707 /** 708 * Gets the root package for the model element. 709 * @see ModelElementFacade#getRootPackage() 710 */ 711 public PackageFacade getRootPackage() 712 { 713 return this.getSuperAssociationEndFacade().getRootPackage(); 714 } 715 716 /** 717 * Gets the dependencies for which this model element is the source. 718 * @see ModelElementFacade#getSourceDependencies() 719 */ 720 public Collection<DependencyFacade> getSourceDependencies() 721 { 722 return this.getSuperAssociationEndFacade().getSourceDependencies(); 723 } 724 725 /** 726 * If this model element is the context of an activity graph, this represents that activity 727 * graph. 728 * @see ModelElementFacade#getStateMachineContext() 729 */ 730 public StateMachineFacade getStateMachineContext() 731 { 732 return this.getSuperAssociationEndFacade().getStateMachineContext(); 733 } 734 735 /** 736 * The collection of ALL stereotype names for this model element. 737 * @see ModelElementFacade#getStereotypeNames() 738 */ 739 public Collection<String> getStereotypeNames() 740 { 741 return this.getSuperAssociationEndFacade().getStereotypeNames(); 742 } 743 744 /** 745 * Gets all stereotypes for this model element. 746 * @see ModelElementFacade#getStereotypes() 747 */ 748 public Collection<StereotypeFacade> getStereotypes() 749 { 750 return this.getSuperAssociationEndFacade().getStereotypes(); 751 } 752 753 /** 754 * Return the TaggedValues associated with this model element, under all stereotypes. 755 * @see ModelElementFacade#getTaggedValues() 756 */ 757 public Collection<TaggedValueFacade> getTaggedValues() 758 { 759 return this.getSuperAssociationEndFacade().getTaggedValues(); 760 } 761 762 /** 763 * Gets the dependencies for which this model element is the target. 764 * @see ModelElementFacade#getTargetDependencies() 765 */ 766 public Collection<DependencyFacade> getTargetDependencies() 767 { 768 return this.getSuperAssociationEndFacade().getTargetDependencies(); 769 } 770 771 /** 772 * Get the template parameter for this model element having the parameterName 773 * @see ModelElementFacade#getTemplateParameter(String parameterName) 774 */ 775 public Object getTemplateParameter(String parameterName) 776 { 777 return this.getSuperAssociationEndFacade().getTemplateParameter(parameterName); 778 } 779 780 /** 781 * Get the template parameters for this model element 782 * @see ModelElementFacade#getTemplateParameters() 783 */ 784 public Collection<TemplateParameterFacade> getTemplateParameters() 785 { 786 return this.getSuperAssociationEndFacade().getTemplateParameters(); 787 } 788 789 /** 790 * The visibility (i.e. public, private, protected or package) of the model element, will 791 * attempt a lookup for these values in the language mappings (if any). 792 * @see ModelElementFacade#getVisibility() 793 */ 794 public String getVisibility() 795 { 796 return this.getSuperAssociationEndFacade().getVisibility(); 797 } 798 799 /** 800 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance 801 * is taken into account when searching for the stereotype), false otherwise. 802 * @see ModelElementFacade#hasExactStereotype(String stereotypeName) 803 */ 804 public boolean hasExactStereotype(String stereotypeName) 805 { 806 return this.getSuperAssociationEndFacade().hasExactStereotype(stereotypeName); 807 } 808 809 /** 810 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma, 811 * pipe, semicolon, or << >> 812 * @see ModelElementFacade#hasKeyword(String keywordName) 813 */ 814 public boolean hasKeyword(String keywordName) 815 { 816 return this.getSuperAssociationEndFacade().hasKeyword(keywordName); 817 } 818 819 /** 820 * Returns true if the model element has the specified stereotype. If the stereotype itself 821 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if 822 * one of the stereotype's ancestors has a matching name this method will return true, false 823 * otherwise. 824 * For example, if we have a certain stereotype called <<exception>> and a model element has a 825 * stereotype called <<applicationException>> which extends <<exception>>, when calling this 826 * method with 'stereotypeName' defined as 'exception' the method would return true since 827 * <<applicationException>> inherits from <<exception>>. If you want to check if the model 828 * element has the exact stereotype, then use the method 'hasExactStereotype' instead. 829 * @see ModelElementFacade#hasStereotype(String stereotypeName) 830 */ 831 public boolean hasStereotype(String stereotypeName) 832 { 833 return this.getSuperAssociationEndFacade().hasStereotype(stereotypeName); 834 } 835 836 /** 837 * True if there are target dependencies from this element that are instances of BindingFacade. 838 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies. 839 * @see ModelElementFacade#isBindingDependenciesPresent() 840 */ 841 public boolean isBindingDependenciesPresent() 842 { 843 return this.getSuperAssociationEndFacade().isBindingDependenciesPresent(); 844 } 845 846 /** 847 * Indicates if any constraints are present on this model element. 848 * @see ModelElementFacade#isConstraintsPresent() 849 */ 850 public boolean isConstraintsPresent() 851 { 852 return this.getSuperAssociationEndFacade().isConstraintsPresent(); 853 } 854 855 /** 856 * Indicates if any documentation is present on this model element. 857 * @see ModelElementFacade#isDocumentationPresent() 858 */ 859 public boolean isDocumentationPresent() 860 { 861 return this.getSuperAssociationEndFacade().isDocumentationPresent(); 862 } 863 864 /** 865 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript. 866 * @see ModelElementFacade#isReservedWord() 867 */ 868 public boolean isReservedWord() 869 { 870 return this.getSuperAssociationEndFacade().isReservedWord(); 871 } 872 873 /** 874 * True is there are template parameters on this model element. For UML2, applies to Class, 875 * Operation, Property, and Parameter. 876 * @see ModelElementFacade#isTemplateParametersPresent() 877 */ 878 public boolean isTemplateParametersPresent() 879 { 880 return this.getSuperAssociationEndFacade().isTemplateParametersPresent(); 881 } 882 883 /** 884 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++, 885 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on 886 * Enumerations and Interfaces, optionally applies on other model elements. 887 * @see ModelElementFacade#isValidIdentifierName() 888 */ 889 public boolean isValidIdentifierName() 890 { 891 return this.getSuperAssociationEndFacade().isValidIdentifierName(); 892 } 893 894 /** 895 * Searches for the constraint with the specified 'name' on this model element, and if found 896 * translates it using the specified 'translation' from a translation library discovered by the 897 * framework. 898 * @see ModelElementFacade#translateConstraint(String name, String translation) 899 */ 900 public String translateConstraint(String name, String translation) 901 { 902 return this.getSuperAssociationEndFacade().translateConstraint(name, translation); 903 } 904 905 /** 906 * Translates all constraints belonging to this model element with the given 'translation'. 907 * @see ModelElementFacade#translateConstraints(String translation) 908 */ 909 public String[] translateConstraints(String translation) 910 { 911 return this.getSuperAssociationEndFacade().translateConstraints(translation); 912 } 913 914 /** 915 * Translates the constraints of the specified 'kind' belonging to this model element. 916 * @see ModelElementFacade#translateConstraints(String kind, String translation) 917 */ 918 public String[] translateConstraints(String kind, String translation) 919 { 920 return this.getSuperAssociationEndFacade().translateConstraints(kind, translation); 921 } 922 923 /** 924 * @see org.andromda.core.metafacade.MetafacadeBase#initialize() 925 */ 926 @Override 927 public void initialize() 928 { 929 this.getSuperAssociationEndFacade().initialize(); 930 } 931 932 /** 933 * @return Object getSuperAssociationEndFacade().getValidationOwner() 934 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner() 935 */ 936 @Override 937 public Object getValidationOwner() 938 { 939 Object owner = this.getSuperAssociationEndFacade().getValidationOwner(); 940 return owner; 941 } 942 943 /** 944 * @return String getSuperAssociationEndFacade().getValidationName() 945 * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName() 946 */ 947 @Override 948 public String getValidationName() 949 { 950 String name = this.getSuperAssociationEndFacade().getValidationName(); 951 return name; 952 } 953 954 /** 955 * @param validationMessages Collection<ModelValidationMessage> 956 * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages) 957 */ 958 @Override 959 public void validateInvariants(Collection<ModelValidationMessage> validationMessages) 960 { 961 this.getSuperAssociationEndFacade().validateInvariants(validationMessages); 962 } 963 964 /** 965 * The property that stores the name of the metafacade. 966 */ 967 private static final String NAME_PROPERTY = "name"; 968 private static final String FQNAME_PROPERTY = "fullyQualifiedName"; 969 970 /** 971 * @see Object#toString() 972 */ 973 @Override 974 public String toString() 975 { 976 final StringBuilder toString = new StringBuilder(this.getClass().getName()); 977 toString.append("["); 978 try 979 { 980 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY)); 981 } 982 catch (final Throwable tryAgain) 983 { 984 try 985 { 986 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY)); 987 } 988 catch (final Throwable ignore) 989 { 990 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property 991 } 992 } 993 toString.append("]"); 994 return toString.toString(); 995 } 996 }