001// license-header java merge-point
002//
003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
004//
005package org.andromda.cartridges.jsf2.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.ConstraintFacade;
014import org.andromda.metafacades.uml.DependencyFacade;
015import org.andromda.metafacades.uml.FrontEndAction;
016import org.andromda.metafacades.uml.FrontEndControllerOperation;
017import org.andromda.metafacades.uml.FrontEndEvent;
018import org.andromda.metafacades.uml.ModelElementFacade;
019import org.andromda.metafacades.uml.ModelFacade;
020import org.andromda.metafacades.uml.PackageFacade;
021import org.andromda.metafacades.uml.ParameterFacade;
022import org.andromda.metafacades.uml.StateFacade;
023import org.andromda.metafacades.uml.StateMachineFacade;
024import org.andromda.metafacades.uml.StereotypeFacade;
025import org.andromda.metafacades.uml.TaggedValueFacade;
026import org.andromda.metafacades.uml.TemplateParameterFacade;
027import org.andromda.metafacades.uml.TransitionFacade;
028import org.andromda.metafacades.uml.TypeMappings;
029
030/**
031 * A front-end JSF even (like the pressing of a button, etc).
032 * MetafacadeLogic for JSFEvent
033 *
034 * @see JSFEvent
035 */
036public abstract class JSFEventLogic
037    extends MetafacadeBase
038    implements JSFEvent
039{
040    /**
041     * The underlying UML object
042     * @see Object
043     */
044    protected Object metaObject;
045
046    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
047     * @param metaObjectIn
048     * @param context
049     */
050    protected JSFEventLogic(Object metaObjectIn, String context)
051    {
052        super(metaObjectIn, getContext(context));
053        this.superFrontEndEvent =
054           (FrontEndEvent)
055            MetafacadeFactory.getInstance().createFacadeImpl(
056                    "org.andromda.metafacades.uml.FrontEndEvent",
057                    metaObjectIn,
058                    getContext(context));
059        this.metaObject = metaObjectIn;
060    }
061
062    /**
063     * Gets the context for this metafacade logic instance.
064     * @param context String. Set to JSFEvent if null
065     * @return context String
066     */
067    private static String getContext(String context)
068    {
069        if (context == null)
070        {
071            context = "org.andromda.cartridges.jsf2.metafacades.JSFEvent";
072        }
073        return context;
074    }
075
076    private FrontEndEvent superFrontEndEvent;
077    private boolean superFrontEndEventInitialized = false;
078
079    /**
080     * Gets the FrontEndEvent parent instance.
081     * @return this.superFrontEndEvent FrontEndEvent
082     */
083    private FrontEndEvent getSuperFrontEndEvent()
084    {
085        if (!this.superFrontEndEventInitialized)
086        {
087            ((MetafacadeBase)this.superFrontEndEvent).setMetafacadeContext(this.getMetafacadeContext());
088            this.superFrontEndEventInitialized = true;
089        }
090        return this.superFrontEndEvent;
091    }
092
093    /** Reset context only for non-root metafacades
094     * @param context
095     * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
096     */
097    @Override
098    public void resetMetafacadeContext(String context)
099    {
100        if (!this.contextRoot) // reset context only for non-root metafacades
101        {
102            context = getContext(context);  // to have same value as in original constructor call
103            setMetafacadeContext (context);
104            if (this.superFrontEndEventInitialized)
105            {
106                ((MetafacadeBase)this.superFrontEndEvent).resetMetafacadeContext(context);
107            }
108        }
109    }
110
111    /**
112     * @return boolean true always
113     * @see JSFEvent
114     */
115    public boolean isJSFEventMetaType()
116    {
117        return true;
118    }
119
120    // --------------- attributes ---------------------
121
122   /**
123    * @see org.andromda.cartridges.jsf2.metafacades.JSFEvent#getMessageKey()
124    * @return String
125    */
126    protected abstract String handleGetMessageKey();
127
128    private String __messageKey1a;
129    private boolean __messageKey1aSet = false;
130
131    /**
132     * The resource message key for this trigger.
133     * @return (String)handleGetMessageKey()
134     */
135    public final String getMessageKey()
136    {
137        String messageKey1a = this.__messageKey1a;
138        if (!this.__messageKey1aSet)
139        {
140            // messageKey has no pre constraints
141            messageKey1a = handleGetMessageKey();
142            // messageKey has no post constraints
143            this.__messageKey1a = messageKey1a;
144            if (isMetafacadePropertyCachingEnabled())
145            {
146                this.__messageKey1aSet = true;
147            }
148        }
149        return messageKey1a;
150    }
151
152   /**
153    * @see org.andromda.cartridges.jsf2.metafacades.JSFEvent#getMessageValue()
154    * @return String
155    */
156    protected abstract String handleGetMessageValue();
157
158    private String __messageValue2a;
159    private boolean __messageValue2aSet = false;
160
161    /**
162     * The resource message value  for this trigger, this would be the button label or hyperlink
163     * name.
164     * @return (String)handleGetMessageValue()
165     */
166    public final String getMessageValue()
167    {
168        String messageValue2a = this.__messageValue2a;
169        if (!this.__messageValue2aSet)
170        {
171            // messageValue has no pre constraints
172            messageValue2a = handleGetMessageValue();
173            // messageValue has no post constraints
174            this.__messageValue2a = messageValue2a;
175            if (isMetafacadePropertyCachingEnabled())
176            {
177                this.__messageValue2aSet = true;
178            }
179        }
180        return messageValue2a;
181    }
182
183   /**
184    * @see org.andromda.cartridges.jsf2.metafacades.JSFEvent#getResetMessageKey()
185    * @return String
186    */
187    protected abstract String handleGetResetMessageKey();
188
189    private String __resetMessageKey3a;
190    private boolean __resetMessageKey3aSet = false;
191
192    /**
193     * The resource message key for the reset button.
194     * @return (String)handleGetResetMessageKey()
195     */
196    public final String getResetMessageKey()
197    {
198        String resetMessageKey3a = this.__resetMessageKey3a;
199        if (!this.__resetMessageKey3aSet)
200        {
201            // resetMessageKey has no pre constraints
202            resetMessageKey3a = handleGetResetMessageKey();
203            // resetMessageKey has no post constraints
204            this.__resetMessageKey3a = resetMessageKey3a;
205            if (isMetafacadePropertyCachingEnabled())
206            {
207                this.__resetMessageKey3aSet = true;
208            }
209        }
210        return resetMessageKey3a;
211    }
212
213   /**
214    * @see org.andromda.cartridges.jsf2.metafacades.JSFEvent#getResetMessageValue()
215    * @return String
216    */
217    protected abstract String handleGetResetMessageValue();
218
219    private String __resetMessageValue4a;
220    private boolean __resetMessageValue4aSet = false;
221
222    /**
223     * The default value for the reset button's message.
224     * @return (String)handleGetResetMessageValue()
225     */
226    public final String getResetMessageValue()
227    {
228        String resetMessageValue4a = this.__resetMessageValue4a;
229        if (!this.__resetMessageValue4aSet)
230        {
231            // resetMessageValue has no pre constraints
232            resetMessageValue4a = handleGetResetMessageValue();
233            // resetMessageValue has no post constraints
234            this.__resetMessageValue4a = resetMessageValue4a;
235            if (isMetafacadePropertyCachingEnabled())
236            {
237                this.__resetMessageValue4aSet = true;
238            }
239        }
240        return resetMessageValue4a;
241    }
242
243    /**
244     * @return true
245     * @see FrontEndEvent
246     */
247    public boolean isFrontEndEventMetaType()
248    {
249        return true;
250    }
251
252    /**
253     * @return true
254     * @see org.andromda.metafacades.uml.EventFacade
255     */
256    public boolean isEventFacadeMetaType()
257    {
258        return true;
259    }
260
261    /**
262     * @return true
263     * @see ModelElementFacade
264     */
265    public boolean isModelElementFacadeMetaType()
266    {
267        return true;
268    }
269
270    // ----------- delegates to FrontEndEvent ------------
271    /**
272     * The parameters to this event.
273     * @see org.andromda.metafacades.uml.EventFacade#getParameters()
274     */
275    public Collection<ParameterFacade> getParameters()
276    {
277        return this.getSuperFrontEndEvent().getParameters();
278    }
279
280    /**
281     * If this event is located on an action state, this will represent that state.
282     * @see org.andromda.metafacades.uml.EventFacade#getState()
283     */
284    public StateFacade getState()
285    {
286        return this.getSuperFrontEndEvent().getState();
287    }
288
289    /**
290     * If this event is located on a transition, this represents that transition.
291     * @see org.andromda.metafacades.uml.EventFacade#getTransition()
292     */
293    public TransitionFacade getTransition()
294    {
295        return this.getSuperFrontEndEvent().getTransition();
296    }
297
298    /**
299     * The action which triggers the "front-end" event.
300     * @see FrontEndEvent#getAction()
301     */
302    public FrontEndAction getAction()
303    {
304        return this.getSuperFrontEndEvent().getAction();
305    }
306
307    /**
308     * The call to the controller for this front-end event (if any).
309     * @see FrontEndEvent#getControllerCall()
310     */
311    public FrontEndControllerOperation getControllerCall()
312    {
313        return this.getSuperFrontEndEvent().getControllerCall();
314    }
315
316    /**
317     * Gets all controller operation calls for the front-end event.
318     * @see FrontEndEvent#getControllerCalls()
319     */
320    public List<FrontEndControllerOperation> getControllerCalls()
321    {
322        return this.getSuperFrontEndEvent().getControllerCalls();
323    }
324
325    /**
326     * Indicates whether or not this front end event is contained within a FrontEndUseCase.
327     * @see FrontEndEvent#isContainedInFrontEndUseCase()
328     */
329    public boolean isContainedInFrontEndUseCase()
330    {
331        return this.getSuperFrontEndEvent().isContainedInFrontEndUseCase();
332    }
333
334    /**
335     * Copies all tagged values from the given ModelElementFacade to this model element facade.
336     * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
337     */
338    public void copyTaggedValues(ModelElementFacade element)
339    {
340        this.getSuperFrontEndEvent().copyTaggedValues(element);
341    }
342
343    /**
344     * Finds the tagged value with the specified 'tagName'. In case there are more values the first
345     * one found will be returned.
346     * @see ModelElementFacade#findTaggedValue(String tagName)
347     */
348    public Object findTaggedValue(String tagName)
349    {
350        return this.getSuperFrontEndEvent().findTaggedValue(tagName);
351    }
352
353    /**
354     * Returns all the values for the tagged value with the specified name. The returned collection
355     * will contains only String instances, or will be empty. Never null.
356     * @see ModelElementFacade#findTaggedValues(String tagName)
357     */
358    public Collection<Object> findTaggedValues(String tagName)
359    {
360        return this.getSuperFrontEndEvent().findTaggedValues(tagName);
361    }
362
363    /**
364     * Returns the fully qualified name of the model element. The fully qualified name includes
365     * complete package qualified name of the underlying model element. The templates parameter will
366     * be replaced by the correct one given the binding relation of the parameter to this element.
367     * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
368     */
369    public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
370    {
371        return this.getSuperFrontEndEvent().getBindedFullyQualifiedName(bindedElement);
372    }
373
374    /**
375     * Gets all constraints belonging to the model element.
376     * @see ModelElementFacade#getConstraints()
377     */
378    public Collection<ConstraintFacade> getConstraints()
379    {
380        return this.getSuperFrontEndEvent().getConstraints();
381    }
382
383    /**
384     * Returns the constraints of the argument kind that have been placed onto this model. Typical
385     * kinds are "inv", "pre" and "post". Other kinds are possible.
386     * @see ModelElementFacade#getConstraints(String kind)
387     */
388    public Collection<ConstraintFacade> getConstraints(String kind)
389    {
390        return this.getSuperFrontEndEvent().getConstraints(kind);
391    }
392
393    /**
394     * Gets the documentation for the model element, The indent argument is prefixed to each line.
395     * By default this method wraps lines after 64 characters.
396     * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
397     * @see ModelElementFacade#getDocumentation(String indent)
398     */
399    public String getDocumentation(String indent)
400    {
401        return this.getSuperFrontEndEvent().getDocumentation(indent);
402    }
403
404    /**
405     * This method returns the documentation for this model element, with the lines wrapped after
406     * the specified number of characters, values of less than 1 will indicate no line wrapping is
407     * required. By default paragraphs are returned as HTML.
408     * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
409     * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
410     */
411    public String getDocumentation(String indent, int lineLength)
412    {
413        return this.getSuperFrontEndEvent().getDocumentation(indent, lineLength);
414    }
415
416    /**
417     * This method returns the documentation for this model element, with the lines wrapped after
418     * the specified number of characters, values of less than 1 will indicate no line wrapping is
419     * required. HTML style determines if HTML Escaping is applied.
420     * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
421     */
422    public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
423    {
424        return this.getSuperFrontEndEvent().getDocumentation(indent, lineLength, htmlStyle);
425    }
426
427    /**
428     * The fully qualified name of this model element.
429     * @see ModelElementFacade#getFullyQualifiedName()
430     */
431    public String getFullyQualifiedName()
432    {
433        return this.getSuperFrontEndEvent().getFullyQualifiedName();
434    }
435
436    /**
437     * Returns the fully qualified name of the model element. The fully qualified name includes
438     * complete package qualified name of the underlying model element.  If modelName is true, then
439     * the original name of the model element (the name contained within the model) will be the name
440     * returned, otherwise a name from a language mapping will be returned.
441     * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
442     */
443    public String getFullyQualifiedName(boolean modelName)
444    {
445        return this.getSuperFrontEndEvent().getFullyQualifiedName(modelName);
446    }
447
448    /**
449     * Returns the fully qualified name as a path, the returned value always starts with out a slash
450     * '/'.
451     * @see ModelElementFacade#getFullyQualifiedNamePath()
452     */
453    public String getFullyQualifiedNamePath()
454    {
455        return this.getSuperFrontEndEvent().getFullyQualifiedNamePath();
456    }
457
458    /**
459     * Gets the unique identifier of the underlying model element.
460     * @see ModelElementFacade#getId()
461     */
462    public String getId()
463    {
464        return this.getSuperFrontEndEvent().getId();
465    }
466
467    /**
468     * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
469     * are not represented by other properties, i.e. native, transient, volatile, synchronized,
470     * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
471     * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
472     * JDK5 compiler level.
473     * @see ModelElementFacade#getKeywords()
474     */
475    public Collection<String> getKeywords()
476    {
477        return this.getSuperFrontEndEvent().getKeywords();
478    }
479
480    /**
481     * UML2: Retrieves a localized label for this named element.
482     * @see ModelElementFacade#getLabel()
483     */
484    public String getLabel()
485    {
486        return this.getSuperFrontEndEvent().getLabel();
487    }
488
489    /**
490     * The language mappings that have been set for this model element.
491     * @see ModelElementFacade#getLanguageMappings()
492     */
493    public TypeMappings getLanguageMappings()
494    {
495        return this.getSuperFrontEndEvent().getLanguageMappings();
496    }
497
498    /**
499     * Return the model containing this model element (multiple models may be loaded and processed
500     * at the same time).
501     * @see ModelElementFacade#getModel()
502     */
503    public ModelFacade getModel()
504    {
505        return this.getSuperFrontEndEvent().getModel();
506    }
507
508    /**
509     * The name of the model element.
510     * @see ModelElementFacade#getName()
511     */
512    public String getName()
513    {
514        return this.getSuperFrontEndEvent().getName();
515    }
516
517    /**
518     * Gets the package to which this model element belongs.
519     * @see ModelElementFacade#getPackage()
520     */
521    public ModelElementFacade getPackage()
522    {
523        return this.getSuperFrontEndEvent().getPackage();
524    }
525
526    /**
527     * The name of this model element's package.
528     * @see ModelElementFacade#getPackageName()
529     */
530    public String getPackageName()
531    {
532        return this.getSuperFrontEndEvent().getPackageName();
533    }
534
535    /**
536     * Gets the package name (optionally providing the ability to retrieve the model name and not
537     * the mapped name).
538     * @see ModelElementFacade#getPackageName(boolean modelName)
539     */
540    public String getPackageName(boolean modelName)
541    {
542        return this.getSuperFrontEndEvent().getPackageName(modelName);
543    }
544
545    /**
546     * Returns the package as a path, the returned value always starts with out a slash '/'.
547     * @see ModelElementFacade#getPackagePath()
548     */
549    public String getPackagePath()
550    {
551        return this.getSuperFrontEndEvent().getPackagePath();
552    }
553
554    /**
555     * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
556     * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
557     * the names of the containing namespaces starting at the root of the hierarchy and ending with
558     * the name of the NamedElement itself.
559     * @see ModelElementFacade#getQualifiedName()
560     */
561    public String getQualifiedName()
562    {
563        return this.getSuperFrontEndEvent().getQualifiedName();
564    }
565
566    /**
567     * Gets the root package for the model element.
568     * @see ModelElementFacade#getRootPackage()
569     */
570    public PackageFacade getRootPackage()
571    {
572        return this.getSuperFrontEndEvent().getRootPackage();
573    }
574
575    /**
576     * Gets the dependencies for which this model element is the source.
577     * @see ModelElementFacade#getSourceDependencies()
578     */
579    public Collection<DependencyFacade> getSourceDependencies()
580    {
581        return this.getSuperFrontEndEvent().getSourceDependencies();
582    }
583
584    /**
585     * If this model element is the context of an activity graph, this represents that activity
586     * graph.
587     * @see ModelElementFacade#getStateMachineContext()
588     */
589    public StateMachineFacade getStateMachineContext()
590    {
591        return this.getSuperFrontEndEvent().getStateMachineContext();
592    }
593
594    /**
595     * The collection of ALL stereotype names for this model element.
596     * @see ModelElementFacade#getStereotypeNames()
597     */
598    public Collection<String> getStereotypeNames()
599    {
600        return this.getSuperFrontEndEvent().getStereotypeNames();
601    }
602
603    /**
604     * Gets all stereotypes for this model element.
605     * @see ModelElementFacade#getStereotypes()
606     */
607    public Collection<StereotypeFacade> getStereotypes()
608    {
609        return this.getSuperFrontEndEvent().getStereotypes();
610    }
611
612    /**
613     * Return the TaggedValues associated with this model element, under all stereotypes.
614     * @see ModelElementFacade#getTaggedValues()
615     */
616    public Collection<TaggedValueFacade> getTaggedValues()
617    {
618        return this.getSuperFrontEndEvent().getTaggedValues();
619    }
620
621    /**
622     * Gets the dependencies for which this model element is the target.
623     * @see ModelElementFacade#getTargetDependencies()
624     */
625    public Collection<DependencyFacade> getTargetDependencies()
626    {
627        return this.getSuperFrontEndEvent().getTargetDependencies();
628    }
629
630    /**
631     * Get the template parameter for this model element having the parameterName
632     * @see ModelElementFacade#getTemplateParameter(String parameterName)
633     */
634    public Object getTemplateParameter(String parameterName)
635    {
636        return this.getSuperFrontEndEvent().getTemplateParameter(parameterName);
637    }
638
639    /**
640     * Get the template parameters for this model element
641     * @see ModelElementFacade#getTemplateParameters()
642     */
643    public Collection<TemplateParameterFacade> getTemplateParameters()
644    {
645        return this.getSuperFrontEndEvent().getTemplateParameters();
646    }
647
648    /**
649     * The visibility (i.e. public, private, protected or package) of the model element, will
650     * attempt a lookup for these values in the language mappings (if any).
651     * @see ModelElementFacade#getVisibility()
652     */
653    public String getVisibility()
654    {
655        return this.getSuperFrontEndEvent().getVisibility();
656    }
657
658    /**
659     * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
660     * is taken into account when searching for the stereotype), false otherwise.
661     * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
662     */
663    public boolean hasExactStereotype(String stereotypeName)
664    {
665        return this.getSuperFrontEndEvent().hasExactStereotype(stereotypeName);
666    }
667
668    /**
669     * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
670     * pipe, semicolon, or << >>
671     * @see ModelElementFacade#hasKeyword(String keywordName)
672     */
673    public boolean hasKeyword(String keywordName)
674    {
675        return this.getSuperFrontEndEvent().hasKeyword(keywordName);
676    }
677
678    /**
679     * Returns true if the model element has the specified stereotype.  If the stereotype itself
680     * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
681     * one of the stereotype's ancestors has a matching name this method will return true, false
682     * otherwise.
683     * For example, if we have a certain stereotype called <<exception>> and a model element has a
684     * stereotype called <<applicationException>> which extends <<exception>>, when calling this
685     * method with 'stereotypeName' defined as 'exception' the method would return true since
686     * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
687     * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
688     * @see ModelElementFacade#hasStereotype(String stereotypeName)
689     */
690    public boolean hasStereotype(String stereotypeName)
691    {
692        return this.getSuperFrontEndEvent().hasStereotype(stereotypeName);
693    }
694
695    /**
696     * True if there are target dependencies from this element that are instances of BindingFacade.
697     * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
698     * @see ModelElementFacade#isBindingDependenciesPresent()
699     */
700    public boolean isBindingDependenciesPresent()
701    {
702        return this.getSuperFrontEndEvent().isBindingDependenciesPresent();
703    }
704
705    /**
706     * Indicates if any constraints are present on this model element.
707     * @see ModelElementFacade#isConstraintsPresent()
708     */
709    public boolean isConstraintsPresent()
710    {
711        return this.getSuperFrontEndEvent().isConstraintsPresent();
712    }
713
714    /**
715     * Indicates if any documentation is present on this model element.
716     * @see ModelElementFacade#isDocumentationPresent()
717     */
718    public boolean isDocumentationPresent()
719    {
720        return this.getSuperFrontEndEvent().isDocumentationPresent();
721    }
722
723    /**
724     * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
725     * @see ModelElementFacade#isReservedWord()
726     */
727    public boolean isReservedWord()
728    {
729        return this.getSuperFrontEndEvent().isReservedWord();
730    }
731
732    /**
733     * True is there are template parameters on this model element. For UML2, applies to Class,
734     * Operation, Property, and Parameter.
735     * @see ModelElementFacade#isTemplateParametersPresent()
736     */
737    public boolean isTemplateParametersPresent()
738    {
739        return this.getSuperFrontEndEvent().isTemplateParametersPresent();
740    }
741
742    /**
743     * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
744     * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
745     * Enumerations and Interfaces, optionally applies on other model elements.
746     * @see ModelElementFacade#isValidIdentifierName()
747     */
748    public boolean isValidIdentifierName()
749    {
750        return this.getSuperFrontEndEvent().isValidIdentifierName();
751    }
752
753    /**
754     * Searches for the constraint with the specified 'name' on this model element, and if found
755     * translates it using the specified 'translation' from a translation library discovered by the
756     * framework.
757     * @see ModelElementFacade#translateConstraint(String name, String translation)
758     */
759    public String translateConstraint(String name, String translation)
760    {
761        return this.getSuperFrontEndEvent().translateConstraint(name, translation);
762    }
763
764    /**
765     * Translates all constraints belonging to this model element with the given 'translation'.
766     * @see ModelElementFacade#translateConstraints(String translation)
767     */
768    public String[] translateConstraints(String translation)
769    {
770        return this.getSuperFrontEndEvent().translateConstraints(translation);
771    }
772
773    /**
774     * Translates the constraints of the specified 'kind' belonging to this model element.
775     * @see ModelElementFacade#translateConstraints(String kind, String translation)
776     */
777    public String[] translateConstraints(String kind, String translation)
778    {
779        return this.getSuperFrontEndEvent().translateConstraints(kind, translation);
780    }
781
782    /**
783     * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
784     */
785    @Override
786    public void initialize()
787    {
788        this.getSuperFrontEndEvent().initialize();
789    }
790
791    /**
792     * @return Object getSuperFrontEndEvent().getValidationOwner()
793     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
794     */
795    @Override
796    public Object getValidationOwner()
797    {
798        Object owner = this.getSuperFrontEndEvent().getValidationOwner();
799        return owner;
800    }
801
802    /**
803     * @return String getSuperFrontEndEvent().getValidationName()
804     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
805     */
806    @Override
807    public String getValidationName()
808    {
809        String name = this.getSuperFrontEndEvent().getValidationName();
810        return name;
811    }
812
813    /**
814     * @param validationMessages Collection<ModelValidationMessage>
815     * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
816     */
817    @Override
818    public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
819    {
820        this.getSuperFrontEndEvent().validateInvariants(validationMessages);
821    }
822
823    /**
824     * The property that stores the name of the metafacade.
825     */
826    private static final String NAME_PROPERTY = "name";
827    private static final String FQNAME_PROPERTY = "fullyQualifiedName";
828
829    /**
830     * @see Object#toString()
831     */
832    @Override
833    public String toString()
834    {
835        final StringBuilder toString = new StringBuilder(this.getClass().getName());
836        toString.append("[");
837        try
838        {
839            toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
840        }
841        catch (final Throwable tryAgain)
842        {
843            try
844            {
845                toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
846            }
847            catch (final Throwable ignore)
848            {
849                // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
850            }
851        }
852        toString.append("]");
853        return toString.toString();
854    }
855}