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