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