001// license-header java merge-point 002// 003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify! 004// 005package org.andromda.cartridges.meta.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; 029import org.andromda.translation.ocl.validation.OCLCollections; 030import org.andromda.translation.ocl.validation.OCLIntrospector; 031import org.andromda.translation.ocl.validation.OCLResultEnsurer; 032import org.apache.commons.collections.Predicate; 033import org.apache.log4j.Logger; 034 035/** 036 * Facade for use in the andromda-meta cartridge. It hides a Classifier that represents a 037 * <<metafacade>> object. 038 * MetafacadeLogic for Metafacade 039 * 040 * @see Metafacade 041 */ 042public abstract class MetafacadeLogic 043 extends MetafacadeBase 044 implements Metafacade 045{ 046 /** 047 * The underlying UML object 048 * @see Object 049 */ 050 protected Object metaObject; 051 052 /** Create Metafacade implementation instance using the MetafacadeFactory from the context 053 * @param metaObjectIn 054 * @param context 055 */ 056 protected MetafacadeLogic(Object metaObjectIn, String context) 057 { 058 super(metaObjectIn, getContext(context)); 059 this.superClassifierFacade = 060 (ClassifierFacade) 061 MetafacadeFactory.getInstance().createFacadeImpl( 062 "org.andromda.metafacades.uml.ClassifierFacade", 063 metaObjectIn, 064 getContext(context)); 065 this.metaObject = metaObjectIn; 066 } 067 068 /** 069 * The logger instance. 070 */ 071 private static final Logger logger = Logger.getLogger(MetafacadeLogic.class); 072 073 /** 074 * Gets the context for this metafacade logic instance. 075 * @param context String. Set to Metafacade if null 076 * @return context String 077 */ 078 private static String getContext(String context) 079 { 080 if (context == null) 081 { 082 context = "org.andromda.cartridges.meta.metafacades.Metafacade"; 083 } 084 return context; 085 } 086 087 private ClassifierFacade superClassifierFacade; 088 private boolean superClassifierFacadeInitialized = false; 089 090 /** 091 * Gets the ClassifierFacade parent instance. 092 * @return this.superClassifierFacade ClassifierFacade 093 */ 094 private ClassifierFacade getSuperClassifierFacade() 095 { 096 if (!this.superClassifierFacadeInitialized) 097 { 098 ((MetafacadeBase)this.superClassifierFacade).setMetafacadeContext(this.getMetafacadeContext()); 099 this.superClassifierFacadeInitialized = true; 100 } 101 return this.superClassifierFacade; 102 } 103 104 /** Reset context only for non-root metafacades 105 * @param context 106 * @see MetafacadeBase#resetMetafacadeContext(String context) 107 */ 108 @Override 109 public void resetMetafacadeContext(String context) 110 { 111 if (!this.contextRoot) // reset context only for non-root metafacades 112 { 113 context = getContext(context); // to have same value as in original constructor call 114 setMetafacadeContext (context); 115 if (this.superClassifierFacadeInitialized) 116 { 117 ((MetafacadeBase)this.superClassifierFacade).resetMetafacadeContext(context); 118 } 119 } 120 } 121 122 /** 123 * @return boolean true always 124 * @see Metafacade 125 */ 126 public boolean isMetafacadeMetaType() 127 { 128 return true; 129 } 130 131 // --------------- attributes --------------------- 132 133 /** 134 * @see Metafacade#getLogicName() 135 * @return String 136 */ 137 protected abstract String handleGetLogicName(); 138 139 private String __logicName1a; 140 private boolean __logicName1aSet = false; 141 142 /** 143 * The name of the metafacade 'Logic' class. 144 * @return (String)handleGetLogicName() 145 */ 146 public final String getLogicName() 147 { 148 String logicName1a = this.__logicName1a; 149 if (!this.__logicName1aSet) 150 { 151 // logicName has no pre constraints 152 logicName1a = handleGetLogicName(); 153 // logicName has no post constraints 154 this.__logicName1a = logicName1a; 155 if (isMetafacadePropertyCachingEnabled()) 156 { 157 this.__logicName1aSet = true; 158 } 159 } 160 return logicName1a; 161 } 162 163 /** 164 * @see Metafacade#getLogicImplName() 165 * @return String 166 */ 167 protected abstract String handleGetLogicImplName(); 168 169 private String __logicImplName2a; 170 private boolean __logicImplName2aSet = false; 171 172 /** 173 * The name of the 'Logic' implementation name. 174 * @return (String)handleGetLogicImplName() 175 */ 176 public final String getLogicImplName() 177 { 178 String logicImplName2a = this.__logicImplName2a; 179 if (!this.__logicImplName2aSet) 180 { 181 // logicImplName has no pre constraints 182 logicImplName2a = handleGetLogicImplName(); 183 // logicImplName has no post constraints 184 this.__logicImplName2a = logicImplName2a; 185 if (isMetafacadePropertyCachingEnabled()) 186 { 187 this.__logicImplName2aSet = true; 188 } 189 } 190 return logicImplName2a; 191 } 192 193 /** 194 * @see Metafacade#isMetaclassDirectDependency() 195 * @return boolean 196 */ 197 protected abstract boolean handleIsMetaclassDirectDependency(); 198 199 private boolean __metaclassDirectDependency3a; 200 private boolean __metaclassDirectDependency3aSet = false; 201 202 /** 203 * True/false depending on whether or not this class's metaclass is a direct dependency (true) 204 * or an inherited dependency (false). 205 * @return (boolean)handleIsMetaclassDirectDependency() 206 */ 207 public final boolean isMetaclassDirectDependency() 208 { 209 boolean metaclassDirectDependency3a = this.__metaclassDirectDependency3a; 210 if (!this.__metaclassDirectDependency3aSet) 211 { 212 // metaclassDirectDependency has no pre constraints 213 metaclassDirectDependency3a = handleIsMetaclassDirectDependency(); 214 // metaclassDirectDependency has no post constraints 215 this.__metaclassDirectDependency3a = metaclassDirectDependency3a; 216 if (isMetafacadePropertyCachingEnabled()) 217 { 218 this.__metaclassDirectDependency3aSet = true; 219 } 220 } 221 return metaclassDirectDependency3a; 222 } 223 224 /** 225 * @see Metafacade#getFullyQualifiedLogicImplName() 226 * @return String 227 */ 228 protected abstract String handleGetFullyQualifiedLogicImplName(); 229 230 private String __fullyQualifiedLogicImplName4a; 231 private boolean __fullyQualifiedLogicImplName4aSet = false; 232 233 /** 234 * The fully qualified name for the implementation of the metafacade. 235 * @return (String)handleGetFullyQualifiedLogicImplName() 236 */ 237 public final String getFullyQualifiedLogicImplName() 238 { 239 String fullyQualifiedLogicImplName4a = this.__fullyQualifiedLogicImplName4a; 240 if (!this.__fullyQualifiedLogicImplName4aSet) 241 { 242 // fullyQualifiedLogicImplName has no pre constraints 243 fullyQualifiedLogicImplName4a = handleGetFullyQualifiedLogicImplName(); 244 // fullyQualifiedLogicImplName has no post constraints 245 this.__fullyQualifiedLogicImplName4a = fullyQualifiedLogicImplName4a; 246 if (isMetafacadePropertyCachingEnabled()) 247 { 248 this.__fullyQualifiedLogicImplName4aSet = true; 249 } 250 } 251 return fullyQualifiedLogicImplName4a; 252 } 253 254 /** 255 * @see Metafacade#getFullyQualifiedLogicName() 256 * @return String 257 */ 258 protected abstract String handleGetFullyQualifiedLogicName(); 259 260 private String __fullyQualifiedLogicName5a; 261 private boolean __fullyQualifiedLogicName5aSet = false; 262 263 /** 264 * The fully qualified name for the metafacade "Logic" class. 265 * @return (String)handleGetFullyQualifiedLogicName() 266 */ 267 public final String getFullyQualifiedLogicName() 268 { 269 String fullyQualifiedLogicName5a = this.__fullyQualifiedLogicName5a; 270 if (!this.__fullyQualifiedLogicName5aSet) 271 { 272 // fullyQualifiedLogicName has no pre constraints 273 fullyQualifiedLogicName5a = handleGetFullyQualifiedLogicName(); 274 // fullyQualifiedLogicName has no post constraints 275 this.__fullyQualifiedLogicName5a = fullyQualifiedLogicName5a; 276 if (isMetafacadePropertyCachingEnabled()) 277 { 278 this.__fullyQualifiedLogicName5aSet = true; 279 } 280 } 281 return fullyQualifiedLogicName5a; 282 } 283 284 /** 285 * @see Metafacade#getLogicFile() 286 * @return String 287 */ 288 protected abstract String handleGetLogicFile(); 289 290 private String __logicFile6a; 291 private boolean __logicFile6aSet = false; 292 293 /** 294 * The 'Logic' file location. 295 * @return (String)handleGetLogicFile() 296 */ 297 public final String getLogicFile() 298 { 299 String logicFile6a = this.__logicFile6a; 300 if (!this.__logicFile6aSet) 301 { 302 // logicFile has no pre constraints 303 logicFile6a = handleGetLogicFile(); 304 // logicFile has no post constraints 305 this.__logicFile6a = logicFile6a; 306 if (isMetafacadePropertyCachingEnabled()) 307 { 308 this.__logicFile6aSet = true; 309 } 310 } 311 return logicFile6a; 312 } 313 314 /** 315 * @see Metafacade#getLogicImplFile() 316 * @return String 317 */ 318 protected abstract String handleGetLogicImplFile(); 319 320 private String __logicImplFile7a; 321 private boolean __logicImplFile7aSet = false; 322 323 /** 324 * The 'Logic' implementation file location. 325 * @return (String)handleGetLogicImplFile() 326 */ 327 public final String getLogicImplFile() 328 { 329 String logicImplFile7a = this.__logicImplFile7a; 330 if (!this.__logicImplFile7aSet) 331 { 332 // logicImplFile has no pre constraints 333 logicImplFile7a = handleGetLogicImplFile(); 334 // logicImplFile has no post constraints 335 this.__logicImplFile7a = logicImplFile7a; 336 if (isMetafacadePropertyCachingEnabled()) 337 { 338 this.__logicImplFile7aSet = true; 339 } 340 } 341 return logicImplFile7a; 342 } 343 344 /** 345 * @see Metafacade#getLogicPackageName() 346 * @return String 347 */ 348 protected abstract String handleGetLogicPackageName(); 349 350 private String __logicPackageName8a; 351 private boolean __logicPackageName8aSet = false; 352 353 /** 354 * The package name to which the 'Logic' metafacade classes are generated. 355 * @return (String)handleGetLogicPackageName() 356 */ 357 public final String getLogicPackageName() 358 { 359 String logicPackageName8a = this.__logicPackageName8a; 360 if (!this.__logicPackageName8aSet) 361 { 362 // logicPackageName has no pre constraints 363 logicPackageName8a = handleGetLogicPackageName(); 364 // logicPackageName has no post constraints 365 this.__logicPackageName8a = logicPackageName8a; 366 if (isMetafacadePropertyCachingEnabled()) 367 { 368 this.__logicPackageName8aSet = true; 369 } 370 } 371 return logicPackageName8a; 372 } 373 374 /** 375 * @see Metafacade#isRequiresInheritanceDelegatation() 376 * @return boolean 377 */ 378 protected abstract boolean handleIsRequiresInheritanceDelegatation(); 379 380 private boolean __requiresInheritanceDelegatation9a; 381 private boolean __requiresInheritanceDelegatation9aSet = false; 382 383 /** 384 * Indicates if the metafacade requires a delegate for inheritance instead of actual 385 * inheritance. This is true, when the metafacade is inheriting from a metafacade from a 386 * different package (since that means it will most likely be a cartridge metafacade inheriting 387 * from a set of shared metafacades for a meta model). 388 * @return (boolean)handleIsRequiresInheritanceDelegatation() 389 */ 390 public final boolean isRequiresInheritanceDelegatation() 391 { 392 boolean requiresInheritanceDelegatation9a = this.__requiresInheritanceDelegatation9a; 393 if (!this.__requiresInheritanceDelegatation9aSet) 394 { 395 // requiresInheritanceDelegatation has no pre constraints 396 requiresInheritanceDelegatation9a = handleIsRequiresInheritanceDelegatation(); 397 // requiresInheritanceDelegatation has no post constraints 398 this.__requiresInheritanceDelegatation9a = requiresInheritanceDelegatation9a; 399 if (isMetafacadePropertyCachingEnabled()) 400 { 401 this.__requiresInheritanceDelegatation9aSet = true; 402 } 403 } 404 return requiresInheritanceDelegatation9a; 405 } 406 407 /** 408 * @see Metafacade#isConstructorRequiresMetaclassCast() 409 * @return boolean 410 */ 411 protected abstract boolean handleIsConstructorRequiresMetaclassCast(); 412 413 private boolean __constructorRequiresMetaclassCast10a; 414 private boolean __constructorRequiresMetaclassCast10aSet = false; 415 416 /** 417 * Indicates if the meta class construct argument requires a cast to the super metafacade's 418 * metaclass. 419 * @return (boolean)handleIsConstructorRequiresMetaclassCast() 420 */ 421 public final boolean isConstructorRequiresMetaclassCast() 422 { 423 boolean constructorRequiresMetaclassCast10a = this.__constructorRequiresMetaclassCast10a; 424 if (!this.__constructorRequiresMetaclassCast10aSet) 425 { 426 // constructorRequiresMetaclassCast has no pre constraints 427 constructorRequiresMetaclassCast10a = handleIsConstructorRequiresMetaclassCast(); 428 // constructorRequiresMetaclassCast has no post constraints 429 this.__constructorRequiresMetaclassCast10a = constructorRequiresMetaclassCast10a; 430 if (isMetafacadePropertyCachingEnabled()) 431 { 432 this.__constructorRequiresMetaclassCast10aSet = true; 433 } 434 } 435 return constructorRequiresMetaclassCast10a; 436 } 437 438 /** 439 * @see Metafacade#getGeneralizationCount() 440 * @return int 441 */ 442 protected abstract int handleGetGeneralizationCount(); 443 444 private int __generalizationCount11a; 445 private boolean __generalizationCount11aSet = false; 446 447 /** 448 * The number of parents this metafacade has. 449 * @return (int)handleGetGeneralizationCount() 450 */ 451 public final int getGeneralizationCount() 452 { 453 int generalizationCount11a = this.__generalizationCount11a; 454 if (!this.__generalizationCount11aSet) 455 { 456 // generalizationCount has no pre constraints 457 generalizationCount11a = handleGetGeneralizationCount(); 458 // generalizationCount has no post constraints 459 this.__generalizationCount11a = generalizationCount11a; 460 if (isMetafacadePropertyCachingEnabled()) 461 { 462 this.__generalizationCount11aSet = true; 463 } 464 } 465 return generalizationCount11a; 466 } 467 468 // ---------------- business methods ---------------------- 469 470 /** 471 * Method to be implemented in descendants 472 * Gets all inherited method information as a collection of MethodData instances for the given 473 * superMetafacade. 474 * @param superMetafacade 475 * @return Collection 476 */ 477 protected abstract Collection handleGetMethodDataForPSM(ClassifierFacade superMetafacade); 478 479 /** 480 * Gets all inherited method information as a collection of MethodData instances for the given 481 * superMetafacade. 482 * @param superMetafacade ClassifierFacade 483 * The super metafacade for which to retrieve the collection of method data. 484 * @return handleGetMethodDataForPSM(superMetafacade) 485 */ 486 public Collection getMethodDataForPSM(ClassifierFacade superMetafacade) 487 { 488 // getMethodDataForPSM has no pre constraints 489 Collection returnValue = handleGetMethodDataForPSM(superMetafacade); 490 // getMethodDataForPSM has no post constraints 491 return returnValue; 492 } 493 494 /** 495 * Method to be implemented in descendants 496 * Gets all method information as a collection of MethodData instances for the metafacade. 497 * @return Collection 498 */ 499 protected abstract Collection handleGetMethodDataForPSM(); 500 501 /** 502 * Gets all method information as a collection of MethodData instances for the metafacade. 503 * @return handleGetMethodDataForPSM() 504 */ 505 public Collection getMethodDataForPSM() 506 { 507 // getMethodDataForPSM has no pre constraints 508 Collection returnValue = handleGetMethodDataForPSM(); 509 // getMethodDataForPSM has no post constraints 510 return returnValue; 511 } 512 513 // ------------- associations ------------------ 514 515 private ClassifierFacade __getMetaclass1r; 516 private boolean __getMetaclass1rSet = false; 517 518 /** 519 * Facade for use in the andromda-meta cartridge. It hides a Classifier that represents a 520 * <<metafacade>> object. 521 * @return (ClassifierFacade)handleGetMetaclass() 522 */ 523 public final ClassifierFacade getMetaclass() 524 { 525 ClassifierFacade getMetaclass1r = this.__getMetaclass1r; 526 if (!this.__getMetaclass1rSet) 527 { 528 // metafacade has no pre constraints 529 Object result = handleGetMetaclass(); 530 MetafacadeBase shieldedResult = this.shieldedElement(result); 531 try 532 { 533 getMetaclass1r = (ClassifierFacade)shieldedResult; 534 } 535 catch (ClassCastException ex) 536 { 537 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 538 MetafacadeLogic.logger.warn("incorrect metafacade cast for MetafacadeLogic.getMetaclass ClassifierFacade " + result + ": " + shieldedResult); 539 } 540 // metafacade has no post constraints 541 this.__getMetaclass1r = getMetaclass1r; 542 if (isMetafacadePropertyCachingEnabled()) 543 { 544 this.__getMetaclass1rSet = true; 545 } 546 } 547 return getMetaclass1r; 548 } 549 550 /** 551 * UML Specific type is transformed by shieldedElements to AndroMDA Metafacade type 552 * @return Object 553 */ 554 protected abstract Object handleGetMetaclass(); 555 556 /** 557 * Facade for use in the andromda-meta cartridge. It hides a Classifier that represents a 558 * <<metafacade>> object. 559 * @return (Collection<Metafacade>)handleGetAllParents() 560 */ 561 public final Collection<Metafacade> getAllParents() 562 { 563 Collection<Metafacade> getAllParents2r = null; 564 // metafacade has no pre constraints 565 Collection result = handleGetAllParents(); 566 List shieldedResult = this.shieldedElements(result); 567 try 568 { 569 getAllParents2r = (Collection<Metafacade>)shieldedResult; 570 } 571 catch (ClassCastException ex) 572 { 573 // Bad things happen if the metafacade type mapping in metafacades.xml is wrong - Warn 574 MetafacadeLogic.logger.warn("incorrect metafacade cast for MetafacadeLogic.getAllParents Collection<Metafacade> " + result + ": " + shieldedResult); 575 } 576 // metafacade has no post constraints 577 return getAllParents2r; 578 } 579 580 /** 581 * UML Specific type is returned in Collection, transformed by shieldedElements to AndroMDA Metafacade type 582 * @return Collection 583 */ 584 protected abstract Collection handleGetAllParents(); 585 586 /** 587 * @return true 588 * @see ClassifierFacade 589 */ 590 public boolean isClassifierFacadeMetaType() 591 { 592 return true; 593 } 594 595 /** 596 * @return true 597 * @see GeneralizableElementFacade 598 */ 599 public boolean isGeneralizableElementFacadeMetaType() 600 { 601 return true; 602 } 603 604 /** 605 * @return true 606 * @see ModelElementFacade 607 */ 608 public boolean isModelElementFacadeMetaType() 609 { 610 return true; 611 } 612 613 // ----------- delegates to ClassifierFacade ------------ 614 /** 615 * Return the attribute which name matches the parameter 616 * @see ClassifierFacade#findAttribute(String name) 617 */ 618 public AttributeFacade findAttribute(String name) 619 { 620 return this.getSuperClassifierFacade().findAttribute(name); 621 } 622 623 /** 624 * Those abstraction dependencies for which this classifier is the client. 625 * @see ClassifierFacade#getAbstractions() 626 */ 627 public Collection<ClassifierFacade> getAbstractions() 628 { 629 return this.getSuperClassifierFacade().getAbstractions(); 630 } 631 632 /** 633 * Lists all classes associated to this one and any ancestor classes (through generalization). 634 * There will be no duplicates. The order of the elements is predictable. 635 * @see ClassifierFacade#getAllAssociatedClasses() 636 */ 637 public Collection<ClassifierFacade> getAllAssociatedClasses() 638 { 639 return this.getSuperClassifierFacade().getAllAssociatedClasses(); 640 } 641 642 /** 643 * A collection containing all 'properties' of the classifier and its ancestors. Properties are 644 * any attributes and navigable connecting association ends. 645 * @see ClassifierFacade#getAllProperties() 646 */ 647 public Collection<ModelElementFacade> getAllProperties() 648 { 649 return this.getSuperClassifierFacade().getAllProperties(); 650 } 651 652 /** 653 * A collection containing all required and/or read-only 'properties' of the classifier and its 654 * ancestors. Properties are any attributes and navigable connecting association ends. 655 * @see ClassifierFacade#getAllRequiredConstructorParameters() 656 */ 657 public Collection<ModelElementFacade> getAllRequiredConstructorParameters() 658 { 659 return this.getSuperClassifierFacade().getAllRequiredConstructorParameters(); 660 } 661 662 /** 663 * Gets the array type for this classifier. If this classifier already represents an array, it 664 * just returns itself. 665 * @see ClassifierFacade#getArray() 666 */ 667 public ClassifierFacade getArray() 668 { 669 return this.getSuperClassifierFacade().getArray(); 670 } 671 672 /** 673 * The name of the classifier as an array. 674 * @see ClassifierFacade#getArrayName() 675 */ 676 public String getArrayName() 677 { 678 return this.getSuperClassifierFacade().getArrayName(); 679 } 680 681 /** 682 * Lists the classes associated to this one, there is no repitition of classes. The order of the 683 * elements is predictable. 684 * @see ClassifierFacade#getAssociatedClasses() 685 */ 686 public Collection<ClassifierFacade> getAssociatedClasses() 687 { 688 return this.getSuperClassifierFacade().getAssociatedClasses(); 689 } 690 691 /** 692 * Gets the association ends belonging to a classifier. 693 * @see ClassifierFacade#getAssociationEnds() 694 */ 695 public List<AssociationEndFacade> getAssociationEnds() 696 { 697 return this.getSuperClassifierFacade().getAssociationEnds(); 698 } 699 700 /** 701 * Gets the attributes that belong to the classifier. 702 * @see ClassifierFacade#getAttributes() 703 */ 704 public List<AttributeFacade> getAttributes() 705 { 706 return this.getSuperClassifierFacade().getAttributes(); 707 } 708 709 /** 710 * Gets all attributes for the classifier and if 'follow' is true goes up the inheritance 711 * hierarchy and gets the attributes from the super classes as well. 712 * @see ClassifierFacade#getAttributes(boolean follow) 713 */ 714 public List<AttributeFacade> getAttributes(boolean follow) 715 { 716 return this.getSuperClassifierFacade().getAttributes(follow); 717 } 718 719 /** 720 * The fully qualified name of the classifier as an array. 721 * @see ClassifierFacade#getFullyQualifiedArrayName() 722 */ 723 public String getFullyQualifiedArrayName() 724 { 725 return this.getSuperClassifierFacade().getFullyQualifiedArrayName(); 726 } 727 728 /** 729 * Returns all those operations that could be implemented at this classifier's level. This means 730 * the operations owned by this classifier as well as any realized interface's operations 731 * (recursively) in case this classifier itself is not already an interface, or generalized when 732 * this classifier is an interface. 733 * @see ClassifierFacade#getImplementationOperations() 734 */ 735 public Collection<OperationFacade> getImplementationOperations() 736 { 737 return this.getSuperClassifierFacade().getImplementationOperations(); 738 } 739 740 /** 741 * A comma separated list of the fully qualified names of all implemented interfaces. 742 * @see ClassifierFacade#getImplementedInterfaceList() 743 */ 744 public String getImplementedInterfaceList() 745 { 746 return this.getSuperClassifierFacade().getImplementedInterfaceList(); 747 } 748 749 /** 750 * Those attributes that are scoped to an instance of this class. 751 * @see ClassifierFacade#getInstanceAttributes() 752 */ 753 public Collection<AttributeFacade> getInstanceAttributes() 754 { 755 return this.getSuperClassifierFacade().getInstanceAttributes(); 756 } 757 758 /** 759 * Those operations that are scoped to an instance of this class. 760 * @see ClassifierFacade#getInstanceOperations() 761 */ 762 public List<OperationFacade> getInstanceOperations() 763 { 764 return this.getSuperClassifierFacade().getInstanceOperations(); 765 } 766 767 /** 768 * Those interfaces that are abstractions of this classifier, this basically means this 769 * classifier realizes them. 770 * @see ClassifierFacade#getInterfaceAbstractions() 771 */ 772 public Collection<ClassifierFacade> getInterfaceAbstractions() 773 { 774 return this.getSuperClassifierFacade().getInterfaceAbstractions(); 775 } 776 777 /** 778 * A String representing a new Constructor declaration for this classifier type to be used in a 779 * Java environment. 780 * @see ClassifierFacade#getJavaNewString() 781 */ 782 public String getJavaNewString() 783 { 784 return this.getSuperClassifierFacade().getJavaNewString(); 785 } 786 787 /** 788 * A String representing the null-value for this classifier type to be used in a Java 789 * environment. 790 * @see ClassifierFacade#getJavaNullString() 791 */ 792 public String getJavaNullString() 793 { 794 return this.getSuperClassifierFacade().getJavaNullString(); 795 } 796 797 /** 798 * The other ends of this classifier's association ends which are navigable. 799 * @see ClassifierFacade#getNavigableConnectingEnds() 800 */ 801 public Collection<AssociationEndFacade> getNavigableConnectingEnds() 802 { 803 return this.getSuperClassifierFacade().getNavigableConnectingEnds(); 804 } 805 806 /** 807 * Get the other ends of this classifier's association ends which are navigable and if 'follow' 808 * is true goes up the inheritance hierarchy and gets the super association ends as well. 809 * @see ClassifierFacade#getNavigableConnectingEnds(boolean follow) 810 */ 811 public List<AssociationEndFacade> getNavigableConnectingEnds(boolean follow) 812 { 813 return this.getSuperClassifierFacade().getNavigableConnectingEnds(follow); 814 } 815 816 /** 817 * Assuming that the classifier is an array, this will return the non array type of the 818 * classifier from 819 * the model. If the classifier is NOT an array, it will just return itself. 820 * @see ClassifierFacade#getNonArray() 821 */ 822 public ClassifierFacade getNonArray() 823 { 824 return this.getSuperClassifierFacade().getNonArray(); 825 } 826 827 /** 828 * The attributes from this classifier in the form of an operation call (this example would be 829 * in Java): '(String attributeOne, String attributeTwo). If there were no attributes on the 830 * classifier, the result would be an empty '()'. 831 * @see ClassifierFacade#getOperationCallFromAttributes() 832 */ 833 public String getOperationCallFromAttributes() 834 { 835 return this.getSuperClassifierFacade().getOperationCallFromAttributes(); 836 } 837 838 /** 839 * The operations owned by this classifier. 840 * @see ClassifierFacade#getOperations() 841 */ 842 public List<OperationFacade> getOperations() 843 { 844 return this.getSuperClassifierFacade().getOperations(); 845 } 846 847 /** 848 * A collection containing all 'properties' of the classifier. Properties are any attributes 849 * and navigable connecting association ends. 850 * @see ClassifierFacade#getProperties() 851 */ 852 public List<ModelElementFacade> getProperties() 853 { 854 return this.getSuperClassifierFacade().getProperties(); 855 } 856 857 /** 858 * Gets all properties (attributes and navigable association ends) for the classifier and if 859 * 'follow' is true goes up the inheritance hierarchy and gets the properties from the super 860 * classes as well. 861 * @see ClassifierFacade#getProperties(boolean follow) 862 */ 863 public List getProperties(boolean follow) 864 { 865 return this.getSuperClassifierFacade().getProperties(follow); 866 } 867 868 /** 869 * A collection containing all required and/or read-only 'properties' of the classifier. 870 * Properties are any attributes and navigable connecting association ends. 871 * @see ClassifierFacade#getRequiredConstructorParameters() 872 */ 873 public Collection<ModelElementFacade> getRequiredConstructorParameters() 874 { 875 return this.getSuperClassifierFacade().getRequiredConstructorParameters(); 876 } 877 878 /** 879 * Returns the serial version UID of the underlying model element. 880 * @see ClassifierFacade#getSerialVersionUID() 881 */ 882 public long getSerialVersionUID() 883 { 884 return this.getSuperClassifierFacade().getSerialVersionUID(); 885 } 886 887 /** 888 * Those attributes that are scoped to the definition of this class. 889 * @see ClassifierFacade#getStaticAttributes() 890 */ 891 public Collection<AttributeFacade> getStaticAttributes() 892 { 893 return this.getSuperClassifierFacade().getStaticAttributes(); 894 } 895 896 /** 897 * Those operations that are scoped to the definition of this class. 898 * @see ClassifierFacade#getStaticOperations() 899 */ 900 public List<OperationFacade> getStaticOperations() 901 { 902 return this.getSuperClassifierFacade().getStaticOperations(); 903 } 904 905 /** 906 * This class' superclass, returns the generalization if it is a ClassifierFacade, null 907 * otherwise. 908 * @see ClassifierFacade#getSuperClass() 909 */ 910 public ClassifierFacade getSuperClass() 911 { 912 return this.getSuperClassifierFacade().getSuperClass(); 913 } 914 915 /** 916 * The wrapper name for this classifier if a mapped type has a defined wrapper class (ie. 'long' 917 * maps to 'Long'). If the classifier doesn't have a wrapper defined for it, this method will 918 * return a null. Note that wrapper mappings must be defined for the namespace by defining the 919 * 'wrapperMappingsUri', this property must point to the location of the mappings file which 920 * maps the primitives to wrapper types. 921 * @see ClassifierFacade#getWrapperName() 922 */ 923 public String getWrapperName() 924 { 925 return this.getSuperClassifierFacade().getWrapperName(); 926 } 927 928 /** 929 * Indicates if this classifier is 'abstract'. 930 * @see ClassifierFacade#isAbstract() 931 */ 932 public boolean isAbstract() 933 { 934 return this.getSuperClassifierFacade().isAbstract(); 935 } 936 937 /** 938 * True if this classifier represents an array type. False otherwise. 939 * @see ClassifierFacade#isArrayType() 940 */ 941 public boolean isArrayType() 942 { 943 return this.getSuperClassifierFacade().isArrayType(); 944 } 945 946 /** 947 * True if the ClassifierFacade is an AssociationClass. 948 * @see ClassifierFacade#isAssociationClass() 949 */ 950 public boolean isAssociationClass() 951 { 952 return this.getSuperClassifierFacade().isAssociationClass(); 953 } 954 955 /** 956 * Returns true if this type represents a Blob type. 957 * @see ClassifierFacade#isBlobType() 958 */ 959 public boolean isBlobType() 960 { 961 return this.getSuperClassifierFacade().isBlobType(); 962 } 963 964 /** 965 * Indicates if this type represents a boolean type or not. 966 * @see ClassifierFacade#isBooleanType() 967 */ 968 public boolean isBooleanType() 969 { 970 return this.getSuperClassifierFacade().isBooleanType(); 971 } 972 973 /** 974 * Indicates if this type represents a char, Character, or java.lang.Character type or not. 975 * @see ClassifierFacade#isCharacterType() 976 */ 977 public boolean isCharacterType() 978 { 979 return this.getSuperClassifierFacade().isCharacterType(); 980 } 981 982 /** 983 * Returns true if this type represents a Clob type. 984 * @see ClassifierFacade#isClobType() 985 */ 986 public boolean isClobType() 987 { 988 return this.getSuperClassifierFacade().isClobType(); 989 } 990 991 /** 992 * True if this classifier represents a collection type. False otherwise. 993 * @see ClassifierFacade#isCollectionType() 994 */ 995 public boolean isCollectionType() 996 { 997 return this.getSuperClassifierFacade().isCollectionType(); 998 } 999 1000 /** 1001 * True/false depending on whether or not this classifier represents a datatype. A data type is 1002 * a type whose instances are identified only by their value. A data type may contain attributes 1003 * to support the modeling of structured data types. 1004 * @see ClassifierFacade#isDataType() 1005 */ 1006 public boolean isDataType() 1007 { 1008 return this.getSuperClassifierFacade().isDataType(); 1009 } 1010 1011 /** 1012 * True when this classifier is a date type. 1013 * @see ClassifierFacade#isDateType() 1014 */ 1015 public boolean isDateType() 1016 { 1017 return this.getSuperClassifierFacade().isDateType(); 1018 } 1019 1020 /** 1021 * Indicates if this type represents a Double type or not. 1022 * @see ClassifierFacade#isDoubleType() 1023 */ 1024 public boolean isDoubleType() 1025 { 1026 return this.getSuperClassifierFacade().isDoubleType(); 1027 } 1028 1029 /** 1030 * Indicates whether or not this classifier represents an "EmbeddedValue'. 1031 * @see ClassifierFacade#isEmbeddedValue() 1032 */ 1033 public boolean isEmbeddedValue() 1034 { 1035 return this.getSuperClassifierFacade().isEmbeddedValue(); 1036 } 1037 1038 /** 1039 * True if this classifier is in fact marked as an enumeration. 1040 * @see ClassifierFacade#isEnumeration() 1041 */ 1042 public boolean isEnumeration() 1043 { 1044 return this.getSuperClassifierFacade().isEnumeration(); 1045 } 1046 1047 /** 1048 * Returns true if this type represents a 'file' type. 1049 * @see ClassifierFacade#isFileType() 1050 */ 1051 public boolean isFileType() 1052 { 1053 return this.getSuperClassifierFacade().isFileType(); 1054 } 1055 1056 /** 1057 * Indicates if this type represents a Float type or not. 1058 * @see ClassifierFacade#isFloatType() 1059 */ 1060 public boolean isFloatType() 1061 { 1062 return this.getSuperClassifierFacade().isFloatType(); 1063 } 1064 1065 /** 1066 * Indicates if this type represents an int or Integer or java.lang.Integer type or not. 1067 * @see ClassifierFacade#isIntegerType() 1068 */ 1069 public boolean isIntegerType() 1070 { 1071 return this.getSuperClassifierFacade().isIntegerType(); 1072 } 1073 1074 /** 1075 * True/false depending on whether or not this Classifier represents an interface. 1076 * @see ClassifierFacade#isInterface() 1077 */ 1078 public boolean isInterface() 1079 { 1080 return this.getSuperClassifierFacade().isInterface(); 1081 } 1082 1083 /** 1084 * True if this classifier cannot be extended and represent a leaf in the inheritance tree. 1085 * @see ClassifierFacade#isLeaf() 1086 */ 1087 public boolean isLeaf() 1088 { 1089 return this.getSuperClassifierFacade().isLeaf(); 1090 } 1091 1092 /** 1093 * True if this classifier represents a list type. False otherwise. 1094 * @see ClassifierFacade#isListType() 1095 */ 1096 public boolean isListType() 1097 { 1098 return this.getSuperClassifierFacade().isListType(); 1099 } 1100 1101 /** 1102 * Indicates if this type represents a Long type or not. 1103 * @see ClassifierFacade#isLongType() 1104 */ 1105 public boolean isLongType() 1106 { 1107 return this.getSuperClassifierFacade().isLongType(); 1108 } 1109 1110 /** 1111 * Indicates whether or not this classifier represents a Map type. 1112 * @see ClassifierFacade#isMapType() 1113 */ 1114 public boolean isMapType() 1115 { 1116 return this.getSuperClassifierFacade().isMapType(); 1117 } 1118 1119 /** 1120 * Indicates whether or not this classifier represents a primitive type. 1121 * @see ClassifierFacade#isPrimitive() 1122 */ 1123 public boolean isPrimitive() 1124 { 1125 return this.getSuperClassifierFacade().isPrimitive(); 1126 } 1127 1128 /** 1129 * True if this classifier represents a set type. False otherwise. 1130 * @see ClassifierFacade#isSetType() 1131 */ 1132 public boolean isSetType() 1133 { 1134 return this.getSuperClassifierFacade().isSetType(); 1135 } 1136 1137 /** 1138 * Indicates whether or not this classifier represents a string type. 1139 * @see ClassifierFacade#isStringType() 1140 */ 1141 public boolean isStringType() 1142 { 1143 return this.getSuperClassifierFacade().isStringType(); 1144 } 1145 1146 /** 1147 * Indicates whether or not this classifier represents a time type. 1148 * @see ClassifierFacade#isTimeType() 1149 */ 1150 public boolean isTimeType() 1151 { 1152 return this.getSuperClassifierFacade().isTimeType(); 1153 } 1154 1155 /** 1156 * Returns true if this type is a wrapped primitive type. 1157 * @see ClassifierFacade#isWrappedPrimitive() 1158 */ 1159 public boolean isWrappedPrimitive() 1160 { 1161 return this.getSuperClassifierFacade().isWrappedPrimitive(); 1162 } 1163 1164 /** 1165 * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set 1166 * to true. 1167 * @see GeneralizableElementFacade#findTaggedValue(String tagName, boolean follow) 1168 */ 1169 public Object findTaggedValue(String tagName, boolean follow) 1170 { 1171 return this.getSuperClassifierFacade().findTaggedValue(tagName, follow); 1172 } 1173 1174 /** 1175 * All generalizations for this generalizable element, goes up the inheritance tree. 1176 * @see GeneralizableElementFacade#getAllGeneralizations() 1177 */ 1178 public Collection<GeneralizableElementFacade> getAllGeneralizations() 1179 { 1180 return this.getSuperClassifierFacade().getAllGeneralizations(); 1181 } 1182 1183 /** 1184 * All specializations (travels down the inheritance hierarchy). 1185 * @see GeneralizableElementFacade#getAllSpecializations() 1186 */ 1187 public Collection<GeneralizableElementFacade> getAllSpecializations() 1188 { 1189 return this.getSuperClassifierFacade().getAllSpecializations(); 1190 } 1191 1192 /** 1193 * Gets the direct generalization for this generalizable element. 1194 * @see GeneralizableElementFacade#getGeneralization() 1195 */ 1196 public GeneralizableElementFacade getGeneralization() 1197 { 1198 return this.getSuperClassifierFacade().getGeneralization(); 1199 } 1200 1201 /** 1202 * Gets the actual links that this generalization element is part of (it plays either the 1203 * specialization or generalization). 1204 * @see GeneralizableElementFacade#getGeneralizationLinks() 1205 */ 1206 public Collection<GeneralizationFacade> getGeneralizationLinks() 1207 { 1208 return this.getSuperClassifierFacade().getGeneralizationLinks(); 1209 } 1210 1211 /** 1212 * A comma separated list of the fully qualified names of all generalizations. 1213 * @see GeneralizableElementFacade#getGeneralizationList() 1214 */ 1215 public String getGeneralizationList() 1216 { 1217 return this.getSuperClassifierFacade().getGeneralizationList(); 1218 } 1219 1220 /** 1221 * The element found when you recursively follow the generalization path up to the root. If an 1222 * element has no generalization itself will be considered the root. 1223 * @see GeneralizableElementFacade#getGeneralizationRoot() 1224 */ 1225 public GeneralizableElementFacade getGeneralizationRoot() 1226 { 1227 return this.getSuperClassifierFacade().getGeneralizationRoot(); 1228 } 1229 1230 /** 1231 * Return all generalizations (ancestors) from this generalizable element. 1232 * @see GeneralizableElementFacade#getGeneralizations() 1233 */ 1234 public Collection<GeneralizableElementFacade> getGeneralizations() 1235 { 1236 return this.getSuperClassifierFacade().getGeneralizations(); 1237 } 1238 1239 /** 1240 * Gets the direct specializations (i.e. sub elements) for this generalizatble element. 1241 * @see GeneralizableElementFacade#getSpecializations() 1242 */ 1243 public Collection<GeneralizableElementFacade> getSpecializations() 1244 { 1245 return this.getSuperClassifierFacade().getSpecializations(); 1246 } 1247 1248 /** 1249 * Copies all tagged values from the given ModelElementFacade to this model element facade. 1250 * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element) 1251 */ 1252 public void copyTaggedValues(ModelElementFacade element) 1253 { 1254 this.getSuperClassifierFacade().copyTaggedValues(element); 1255 } 1256 1257 /** 1258 * Finds the tagged value with the specified 'tagName'. In case there are more values the first 1259 * one found will be returned. 1260 * @see ModelElementFacade#findTaggedValue(String tagName) 1261 */ 1262 public Object findTaggedValue(String tagName) 1263 { 1264 return this.getSuperClassifierFacade().findTaggedValue(tagName); 1265 } 1266 1267 /** 1268 * Returns all the values for the tagged value with the specified name. The returned collection 1269 * will contains only String instances, or will be empty. Never null. 1270 * @see ModelElementFacade#findTaggedValues(String tagName) 1271 */ 1272 public Collection<Object> findTaggedValues(String tagName) 1273 { 1274 return this.getSuperClassifierFacade().findTaggedValues(tagName); 1275 } 1276 1277 /** 1278 * Returns the fully qualified name of the model element. The fully qualified name includes 1279 * complete package qualified name of the underlying model element. The templates parameter will 1280 * be replaced by the correct one given the binding relation of the parameter to this element. 1281 * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement) 1282 */ 1283 public String getBindedFullyQualifiedName(ModelElementFacade bindedElement) 1284 { 1285 return this.getSuperClassifierFacade().getBindedFullyQualifiedName(bindedElement); 1286 } 1287 1288 /** 1289 * Gets all constraints belonging to the model element. 1290 * @see ModelElementFacade#getConstraints() 1291 */ 1292 public Collection<ConstraintFacade> getConstraints() 1293 { 1294 return this.getSuperClassifierFacade().getConstraints(); 1295 } 1296 1297 /** 1298 * Returns the constraints of the argument kind that have been placed onto this model. Typical 1299 * kinds are "inv", "pre" and "post". Other kinds are possible. 1300 * @see ModelElementFacade#getConstraints(String kind) 1301 */ 1302 public Collection<ConstraintFacade> getConstraints(String kind) 1303 { 1304 return this.getSuperClassifierFacade().getConstraints(kind); 1305 } 1306 1307 /** 1308 * Gets the documentation for the model element, The indent argument is prefixed to each line. 1309 * By default this method wraps lines after 64 characters. 1310 * This method is equivalent to <code>getDocumentation(indent, 64)</code>. 1311 * @see ModelElementFacade#getDocumentation(String indent) 1312 */ 1313 public String getDocumentation(String indent) 1314 { 1315 return this.getSuperClassifierFacade().getDocumentation(indent); 1316 } 1317 1318 /** 1319 * This method returns the documentation for this model element, with the lines wrapped after 1320 * the specified number of characters, values of less than 1 will indicate no line wrapping is 1321 * required. By default paragraphs are returned as HTML. 1322 * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>. 1323 * @see ModelElementFacade#getDocumentation(String indent, int lineLength) 1324 */ 1325 public String getDocumentation(String indent, int lineLength) 1326 { 1327 return this.getSuperClassifierFacade().getDocumentation(indent, lineLength); 1328 } 1329 1330 /** 1331 * This method returns the documentation for this model element, with the lines wrapped after 1332 * the specified number of characters, values of less than 1 will indicate no line wrapping is 1333 * required. HTML style determines if HTML Escaping is applied. 1334 * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle) 1335 */ 1336 public String getDocumentation(String indent, int lineLength, boolean htmlStyle) 1337 { 1338 return this.getSuperClassifierFacade().getDocumentation(indent, lineLength, htmlStyle); 1339 } 1340 1341 /** 1342 * The fully qualified name of this model element. 1343 * @see ModelElementFacade#getFullyQualifiedName() 1344 */ 1345 public String getFullyQualifiedName() 1346 { 1347 return this.getSuperClassifierFacade().getFullyQualifiedName(); 1348 } 1349 1350 /** 1351 * Returns the fully qualified name of the model element. The fully qualified name includes 1352 * complete package qualified name of the underlying model element. If modelName is true, then 1353 * the original name of the model element (the name contained within the model) will be the name 1354 * returned, otherwise a name from a language mapping will be returned. 1355 * @see ModelElementFacade#getFullyQualifiedName(boolean modelName) 1356 */ 1357 public String getFullyQualifiedName(boolean modelName) 1358 { 1359 return this.getSuperClassifierFacade().getFullyQualifiedName(modelName); 1360 } 1361 1362 /** 1363 * Returns the fully qualified name as a path, the returned value always starts with out a slash 1364 * '/'. 1365 * @see ModelElementFacade#getFullyQualifiedNamePath() 1366 */ 1367 public String getFullyQualifiedNamePath() 1368 { 1369 return this.getSuperClassifierFacade().getFullyQualifiedNamePath(); 1370 } 1371 1372 /** 1373 * Gets the unique identifier of the underlying model element. 1374 * @see ModelElementFacade#getId() 1375 */ 1376 public String getId() 1377 { 1378 return this.getSuperClassifierFacade().getId(); 1379 } 1380 1381 /** 1382 * UML2: Retrieves the keywords for this element. Used to modify implementation properties which 1383 * are not represented by other properties, i.e. native, transient, volatile, synchronized, 1384 * (added annotations) override, deprecated. Can also be used to suppress compiler warnings: 1385 * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require 1386 * JDK5 compiler level. 1387 * @see ModelElementFacade#getKeywords() 1388 */ 1389 public Collection<String> getKeywords() 1390 { 1391 return this.getSuperClassifierFacade().getKeywords(); 1392 } 1393 1394 /** 1395 * UML2: Retrieves a localized label for this named element. 1396 * @see ModelElementFacade#getLabel() 1397 */ 1398 public String getLabel() 1399 { 1400 return this.getSuperClassifierFacade().getLabel(); 1401 } 1402 1403 /** 1404 * The language mappings that have been set for this model element. 1405 * @see ModelElementFacade#getLanguageMappings() 1406 */ 1407 public TypeMappings getLanguageMappings() 1408 { 1409 return this.getSuperClassifierFacade().getLanguageMappings(); 1410 } 1411 1412 /** 1413 * Return the model containing this model element (multiple models may be loaded and processed 1414 * at the same time). 1415 * @see ModelElementFacade#getModel() 1416 */ 1417 public ModelFacade getModel() 1418 { 1419 return this.getSuperClassifierFacade().getModel(); 1420 } 1421 1422 /** 1423 * The name of the model element. 1424 * @see ModelElementFacade#getName() 1425 */ 1426 public String getName() 1427 { 1428 return this.getSuperClassifierFacade().getName(); 1429 } 1430 1431 /** 1432 * Gets the package to which this model element belongs. 1433 * @see ModelElementFacade#getPackage() 1434 */ 1435 public ModelElementFacade getPackage() 1436 { 1437 return this.getSuperClassifierFacade().getPackage(); 1438 } 1439 1440 /** 1441 * The name of this model element's package. 1442 * @see ModelElementFacade#getPackageName() 1443 */ 1444 public String getPackageName() 1445 { 1446 return this.getSuperClassifierFacade().getPackageName(); 1447 } 1448 1449 /** 1450 * Gets the package name (optionally providing the ability to retrieve the model name and not 1451 * the mapped name). 1452 * @see ModelElementFacade#getPackageName(boolean modelName) 1453 */ 1454 public String getPackageName(boolean modelName) 1455 { 1456 return this.getSuperClassifierFacade().getPackageName(modelName); 1457 } 1458 1459 /** 1460 * Returns the package as a path, the returned value always starts with out a slash '/'. 1461 * @see ModelElementFacade#getPackagePath() 1462 */ 1463 public String getPackagePath() 1464 { 1465 return this.getSuperClassifierFacade().getPackagePath(); 1466 } 1467 1468 /** 1469 * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the 1470 * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from 1471 * the names of the containing namespaces starting at the root of the hierarchy and ending with 1472 * the name of the NamedElement itself. 1473 * @see ModelElementFacade#getQualifiedName() 1474 */ 1475 public String getQualifiedName() 1476 { 1477 return this.getSuperClassifierFacade().getQualifiedName(); 1478 } 1479 1480 /** 1481 * Gets the root package for the model element. 1482 * @see ModelElementFacade#getRootPackage() 1483 */ 1484 public PackageFacade getRootPackage() 1485 { 1486 return this.getSuperClassifierFacade().getRootPackage(); 1487 } 1488 1489 /** 1490 * Gets the dependencies for which this model element is the source. 1491 * @see ModelElementFacade#getSourceDependencies() 1492 */ 1493 public Collection<DependencyFacade> getSourceDependencies() 1494 { 1495 return this.getSuperClassifierFacade().getSourceDependencies(); 1496 } 1497 1498 /** 1499 * If this model element is the context of an activity graph, this represents that activity 1500 * graph. 1501 * @see ModelElementFacade#getStateMachineContext() 1502 */ 1503 public StateMachineFacade getStateMachineContext() 1504 { 1505 return this.getSuperClassifierFacade().getStateMachineContext(); 1506 } 1507 1508 /** 1509 * The collection of ALL stereotype names for this model element. 1510 * @see ModelElementFacade#getStereotypeNames() 1511 */ 1512 public Collection<String> getStereotypeNames() 1513 { 1514 return this.getSuperClassifierFacade().getStereotypeNames(); 1515 } 1516 1517 /** 1518 * Gets all stereotypes for this model element. 1519 * @see ModelElementFacade#getStereotypes() 1520 */ 1521 public Collection<StereotypeFacade> getStereotypes() 1522 { 1523 return this.getSuperClassifierFacade().getStereotypes(); 1524 } 1525 1526 /** 1527 * Return the TaggedValues associated with this model element, under all stereotypes. 1528 * @see ModelElementFacade#getTaggedValues() 1529 */ 1530 public Collection<TaggedValueFacade> getTaggedValues() 1531 { 1532 return this.getSuperClassifierFacade().getTaggedValues(); 1533 } 1534 1535 /** 1536 * Gets the dependencies for which this model element is the target. 1537 * @see ModelElementFacade#getTargetDependencies() 1538 */ 1539 public Collection<DependencyFacade> getTargetDependencies() 1540 { 1541 return this.getSuperClassifierFacade().getTargetDependencies(); 1542 } 1543 1544 /** 1545 * Get the template parameter for this model element having the parameterName 1546 * @see ModelElementFacade#getTemplateParameter(String parameterName) 1547 */ 1548 public Object getTemplateParameter(String parameterName) 1549 { 1550 return this.getSuperClassifierFacade().getTemplateParameter(parameterName); 1551 } 1552 1553 /** 1554 * Get the template parameters for this model element 1555 * @see ModelElementFacade#getTemplateParameters() 1556 */ 1557 public Collection<TemplateParameterFacade> getTemplateParameters() 1558 { 1559 return this.getSuperClassifierFacade().getTemplateParameters(); 1560 } 1561 1562 /** 1563 * The visibility (i.e. public, private, protected or package) of the model element, will 1564 * attempt a lookup for these values in the language mappings (if any). 1565 * @see ModelElementFacade#getVisibility() 1566 */ 1567 public String getVisibility() 1568 { 1569 return this.getSuperClassifierFacade().getVisibility(); 1570 } 1571 1572 /** 1573 * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance 1574 * is taken into account when searching for the stereotype), false otherwise. 1575 * @see ModelElementFacade#hasExactStereotype(String stereotypeName) 1576 */ 1577 public boolean hasExactStereotype(String stereotypeName) 1578 { 1579 return this.getSuperClassifierFacade().hasExactStereotype(stereotypeName); 1580 } 1581 1582 /** 1583 * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma, 1584 * pipe, semicolon, or << >> 1585 * @see ModelElementFacade#hasKeyword(String keywordName) 1586 */ 1587 public boolean hasKeyword(String keywordName) 1588 { 1589 return this.getSuperClassifierFacade().hasKeyword(keywordName); 1590 } 1591 1592 /** 1593 * Returns true if the model element has the specified stereotype. If the stereotype itself 1594 * does not match, then a search will be made up the stereotype inheritance hierarchy, and if 1595 * one of the stereotype's ancestors has a matching name this method will return true, false 1596 * otherwise. 1597 * For example, if we have a certain stereotype called <<exception>> and a model element has a 1598 * stereotype called <<applicationException>> which extends <<exception>>, when calling this 1599 * method with 'stereotypeName' defined as 'exception' the method would return true since 1600 * <<applicationException>> inherits from <<exception>>. If you want to check if the model 1601 * element has the exact stereotype, then use the method 'hasExactStereotype' instead. 1602 * @see ModelElementFacade#hasStereotype(String stereotypeName) 1603 */ 1604 public boolean hasStereotype(String stereotypeName) 1605 { 1606 return this.getSuperClassifierFacade().hasStereotype(stereotypeName); 1607 } 1608 1609 /** 1610 * True if there are target dependencies from this element that are instances of BindingFacade. 1611 * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies. 1612 * @see ModelElementFacade#isBindingDependenciesPresent() 1613 */ 1614 public boolean isBindingDependenciesPresent() 1615 { 1616 return this.getSuperClassifierFacade().isBindingDependenciesPresent(); 1617 } 1618 1619 /** 1620 * Indicates if any constraints are present on this model element. 1621 * @see ModelElementFacade#isConstraintsPresent() 1622 */ 1623 public boolean isConstraintsPresent() 1624 { 1625 return this.getSuperClassifierFacade().isConstraintsPresent(); 1626 } 1627 1628 /** 1629 * Indicates if any documentation is present on this model element. 1630 * @see ModelElementFacade#isDocumentationPresent() 1631 */ 1632 public boolean isDocumentationPresent() 1633 { 1634 return this.getSuperClassifierFacade().isDocumentationPresent(); 1635 } 1636 1637 /** 1638 * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript. 1639 * @see ModelElementFacade#isReservedWord() 1640 */ 1641 public boolean isReservedWord() 1642 { 1643 return this.getSuperClassifierFacade().isReservedWord(); 1644 } 1645 1646 /** 1647 * True is there are template parameters on this model element. For UML2, applies to Class, 1648 * Operation, Property, and Parameter. 1649 * @see ModelElementFacade#isTemplateParametersPresent() 1650 */ 1651 public boolean isTemplateParametersPresent() 1652 { 1653 return this.getSuperClassifierFacade().isTemplateParametersPresent(); 1654 } 1655 1656 /** 1657 * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++, 1658 * JavaScript. Contains no spaces, special characters etc. Constraint always applied on 1659 * Enumerations and Interfaces, optionally applies on other model elements. 1660 * @see ModelElementFacade#isValidIdentifierName() 1661 */ 1662 public boolean isValidIdentifierName() 1663 { 1664 return this.getSuperClassifierFacade().isValidIdentifierName(); 1665 } 1666 1667 /** 1668 * Searches for the constraint with the specified 'name' on this model element, and if found 1669 * translates it using the specified 'translation' from a translation library discovered by the 1670 * framework. 1671 * @see ModelElementFacade#translateConstraint(String name, String translation) 1672 */ 1673 public String translateConstraint(String name, String translation) 1674 { 1675 return this.getSuperClassifierFacade().translateConstraint(name, translation); 1676 } 1677 1678 /** 1679 * Translates all constraints belonging to this model element with the given 'translation'. 1680 * @see ModelElementFacade#translateConstraints(String translation) 1681 */ 1682 public String[] translateConstraints(String translation) 1683 { 1684 return this.getSuperClassifierFacade().translateConstraints(translation); 1685 } 1686 1687 /** 1688 * Translates the constraints of the specified 'kind' belonging to this model element. 1689 * @see ModelElementFacade#translateConstraints(String kind, String translation) 1690 */ 1691 public String[] translateConstraints(String kind, String translation) 1692 { 1693 return this.getSuperClassifierFacade().translateConstraints(kind, translation); 1694 } 1695 1696 /** 1697 * @see MetafacadeBase#initialize() 1698 */ 1699 @Override 1700 public void initialize() 1701 { 1702 this.getSuperClassifierFacade().initialize(); 1703 } 1704 1705 /** 1706 * @return Object getSuperClassifierFacade().getValidationOwner() 1707 * @see MetafacadeBase#getValidationOwner() 1708 */ 1709 @Override 1710 public Object getValidationOwner() 1711 { 1712 Object owner = this.getSuperClassifierFacade().getValidationOwner(); 1713 return owner; 1714 } 1715 1716 /** 1717 * @return String getSuperClassifierFacade().getValidationName() 1718 * @see MetafacadeBase#getValidationName() 1719 */ 1720 @Override 1721 public String getValidationName() 1722 { 1723 String name = this.getSuperClassifierFacade().getValidationName(); 1724 return name; 1725 } 1726 1727 /** 1728 * <p><b>Constraint:</b> org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade can only generalize another metafacade</p> 1729 * <p><b>Error:</b> A metafacade can only generalize another metafacade.</p> 1730 * <p><b>OCL:</b> context Metafacade 1731inv : generalization -> notEmpty() implies generalization.oclIsKindOf(Metafacade)</p> 1732 * <p><b>Constraint:</b> org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade can only specialize another metafacade</p> 1733 * <p><b>Error:</b> A metafacade can only specialize another metafacade.</p> 1734 * <p><b>OCL:</b> context Metafacade inv : 1735specializations -> notEmpty() implies specializations -> forAll(oclIsKindOf(Metafacade))</p> 1736 * <p><b>Constraint:</b> org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade must either extend an existing metafacade or have a direct dependency to a metaclass</p> 1737 * <p><b>Error:</b> A metafacade must at the least, either extend an existing metafacade or have a direct dependency to a metaclass.</p> 1738 * <p><b>OCL:</b> context Metafacade 1739inv: generalizations -> notEmpty() or sourceDependencies -> notEmpty()</p> 1740 * @param validationMessages Collection<ModelValidationMessage> 1741 * @see MetafacadeBase#validateInvariants(Collection validationMessages) 1742 */ 1743 @Override 1744 public void validateInvariants(Collection<ModelValidationMessage> validationMessages) 1745 { 1746 this.getSuperClassifierFacade().validateInvariants(validationMessages); 1747 try 1748 { 1749 final Object contextElement = this.THIS(); 1750 boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"generalization")))).booleanValue()?OCLIntrospector.invoke(contextElement,"generalization") instanceof Metafacade:true)); 1751 if (!constraintValid) 1752 { 1753 validationMessages.add( 1754 new ModelValidationMessage( 1755 (MetafacadeBase)contextElement , 1756 "org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade can only generalize another metafacade", 1757 "A metafacade can only generalize another metafacade.")); 1758 } 1759 } 1760 catch (Throwable th) 1761 { 1762 Throwable cause = th.getCause(); 1763 int depth = 0; // Some throwables have infinite recursion 1764 while (cause != null && depth < 7) 1765 { 1766 th = cause; 1767 depth++; 1768 } 1769 logger.error("Error validating constraint 'org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade can only generalize another metafacade' ON " 1770 + this.THIS().toString() + ": " + th.getMessage(), th); 1771 } 1772 try 1773 { 1774 final Object contextElement = this.THIS(); 1775 boolean constraintValid = OCLResultEnsurer.ensure((Boolean.valueOf(String.valueOf(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"specializations")))).booleanValue()?OCLCollections.forAll(OCLIntrospector.invoke(contextElement,"specializations"),new Predicate(){public boolean evaluate(Object object){return Boolean.valueOf(String.valueOf(object instanceof Metafacade)).booleanValue();}}):true)); 1776 if (!constraintValid) 1777 { 1778 validationMessages.add( 1779 new ModelValidationMessage( 1780 (MetafacadeBase)contextElement , 1781 "org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade can only specialize another metafacade", 1782 "A metafacade can only specialize another metafacade.")); 1783 } 1784 } 1785 catch (Throwable th) 1786 { 1787 Throwable cause = th.getCause(); 1788 int depth = 0; // Some throwables have infinite recursion 1789 while (cause != null && depth < 7) 1790 { 1791 th = cause; 1792 depth++; 1793 } 1794 logger.error("Error validating constraint 'org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade can only specialize another metafacade' ON " 1795 + this.THIS().toString() + ": " + th.getMessage(), th); 1796 } 1797 try 1798 { 1799 final Object contextElement = this.THIS(); 1800 boolean constraintValid = OCLResultEnsurer.ensure(OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"generalizations"))||OCLCollections.notEmpty(OCLIntrospector.invoke(contextElement,"sourceDependencies"))); 1801 if (!constraintValid) 1802 { 1803 validationMessages.add( 1804 new ModelValidationMessage( 1805 (MetafacadeBase)contextElement , 1806 "org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade must either extend an existing metafacade or have a direct dependency to a metaclass", 1807 "A metafacade must at the least, either extend an existing metafacade or have a direct dependency to a metaclass.")); 1808 } 1809 } 1810 catch (Throwable th) 1811 { 1812 Throwable cause = th.getCause(); 1813 int depth = 0; // Some throwables have infinite recursion 1814 while (cause != null && depth < 7) 1815 { 1816 th = cause; 1817 depth++; 1818 } 1819 logger.error("Error validating constraint 'org::andromda::cartridges::meta::metafacades::Metafacade::a metafacade must either extend an existing metafacade or have a direct dependency to a metaclass' ON " 1820 + this.THIS().toString() + ": " + th.getMessage(), th); 1821 } 1822 } 1823 1824 /** 1825 * The property that stores the name of the metafacade. 1826 */ 1827 private static final String NAME_PROPERTY = "name"; 1828 private static final String FQNAME_PROPERTY = "fullyQualifiedName"; 1829 1830 /** 1831 * @see Object#toString() 1832 */ 1833 @Override 1834 public String toString() 1835 { 1836 final StringBuilder toString = new StringBuilder(this.getClass().getName()); 1837 toString.append("["); 1838 try 1839 { 1840 toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY)); 1841 } 1842 catch (final Throwable tryAgain) 1843 { 1844 try 1845 { 1846 toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY)); 1847 } 1848 catch (final Throwable ignore) 1849 { 1850 // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property 1851 } 1852 } 1853 toString.append("]"); 1854 return toString.toString(); 1855 } 1856}