001// license-header java merge-point
002//
003// Attention: generated code (by MetafacadeLogic.vsl) - do not modify!
004//
005package org.andromda.cartridges.ejb3.metafacades;
006
007import java.util.Collection;
008import org.andromda.core.common.Introspector;
009import org.andromda.core.metafacade.MetafacadeBase;
010import org.andromda.core.metafacade.MetafacadeFactory;
011import org.andromda.core.metafacade.ModelValidationMessage;
012import org.andromda.metafacades.uml.ConstraintFacade;
013import org.andromda.metafacades.uml.DependencyFacade;
014import org.andromda.metafacades.uml.ModelElementFacade;
015import org.andromda.metafacades.uml.ModelFacade;
016import org.andromda.metafacades.uml.PackageFacade;
017import org.andromda.metafacades.uml.StateMachineFacade;
018import org.andromda.metafacades.uml.StereotypeFacade;
019import org.andromda.metafacades.uml.TaggedValueFacade;
020import org.andromda.metafacades.uml.TemplateParameterFacade;
021import org.andromda.metafacades.uml.TypeMappings;
022
023/**
024 * TODO: Model Documentation for org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade
025 * MetafacadeLogic for EJB3DependencyFacade
026 *
027 * @see EJB3DependencyFacade
028 */
029public abstract class EJB3DependencyFacadeLogic
030    extends MetafacadeBase
031    implements EJB3DependencyFacade
032{
033    /**
034     * The underlying UML object
035     * @see Object
036     */
037    protected Object metaObject;
038
039    /** Create Metafacade implementation instance using the MetafacadeFactory from the context
040     * @param metaObjectIn
041     * @param context
042     */
043    protected EJB3DependencyFacadeLogic(Object metaObjectIn, String context)
044    {
045        super(metaObjectIn, getContext(context));
046        this.superDependencyFacade =
047           (DependencyFacade)
048            MetafacadeFactory.getInstance().createFacadeImpl(
049                    "org.andromda.metafacades.uml.DependencyFacade",
050                    metaObjectIn,
051                    getContext(context));
052        this.metaObject = metaObjectIn;
053    }
054
055    /**
056     * Gets the context for this metafacade logic instance.
057     * @param context String. Set to EJB3DependencyFacade if null
058     * @return context String
059     */
060    private static String getContext(String context)
061    {
062        if (context == null)
063        {
064            context = "org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade";
065        }
066        return context;
067    }
068
069    private DependencyFacade superDependencyFacade;
070    private boolean superDependencyFacadeInitialized = false;
071
072    /**
073     * Gets the DependencyFacade parent instance.
074     * @return this.superDependencyFacade DependencyFacade
075     */
076    private DependencyFacade getSuperDependencyFacade()
077    {
078        if (!this.superDependencyFacadeInitialized)
079        {
080            ((MetafacadeBase)this.superDependencyFacade).setMetafacadeContext(this.getMetafacadeContext());
081            this.superDependencyFacadeInitialized = true;
082        }
083        return this.superDependencyFacade;
084    }
085
086    /** Reset context only for non-root metafacades
087     * @param context
088     * @see org.andromda.core.metafacade.MetafacadeBase#resetMetafacadeContext(String context)
089     */
090    @Override
091    public void resetMetafacadeContext(String context)
092    {
093        if (!this.contextRoot) // reset context only for non-root metafacades
094        {
095            context = getContext(context);  // to have same value as in original constructor call
096            setMetafacadeContext (context);
097            if (this.superDependencyFacadeInitialized)
098            {
099                ((MetafacadeBase)this.superDependencyFacade).resetMetafacadeContext(context);
100            }
101        }
102    }
103
104    /**
105     * @return boolean true always
106     * @see EJB3DependencyFacade
107     */
108    public boolean isEJB3DependencyFacadeMetaType()
109    {
110        return true;
111    }
112
113    // --------------- attributes ---------------------
114
115   /**
116    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getTransformationConstantName()
117    * @return String
118    */
119    protected abstract String handleGetTransformationConstantName();
120
121    private String __transformationConstantName1a;
122    private boolean __transformationConstantName1aSet = false;
123
124    /**
125     * The name of the constant designated for use as a transformation flag for value objects (only
126     * makes sense when this dependency goes into a value object).
127     * @return (String)handleGetTransformationConstantName()
128     */
129    public final String getTransformationConstantName()
130    {
131        String transformationConstantName1a = this.__transformationConstantName1a;
132        if (!this.__transformationConstantName1aSet)
133        {
134            // transformationConstantName has no pre constraints
135            transformationConstantName1a = handleGetTransformationConstantName();
136            // transformationConstantName has no post constraints
137            this.__transformationConstantName1a = transformationConstantName1a;
138            if (isMetafacadePropertyCachingEnabled())
139            {
140                this.__transformationConstantName1aSet = true;
141            }
142        }
143        return transformationConstantName1a;
144    }
145
146   /**
147    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getTransformationMethodName()
148    * @return String
149    */
150    protected abstract String handleGetTransformationMethodName();
151
152    private String __transformationMethodName2a;
153    private boolean __transformationMethodName2aSet = false;
154
155    /**
156     * The name of the method used for transformation into a value object (only makes sense when
157     * this dependency goes into a value object).
158     * @return (String)handleGetTransformationMethodName()
159     */
160    public final String getTransformationMethodName()
161    {
162        String transformationMethodName2a = this.__transformationMethodName2a;
163        if (!this.__transformationMethodName2aSet)
164        {
165            // transformationMethodName has no pre constraints
166            transformationMethodName2a = handleGetTransformationMethodName();
167            // transformationMethodName has no post constraints
168            this.__transformationMethodName2a = transformationMethodName2a;
169            if (isMetafacadePropertyCachingEnabled())
170            {
171                this.__transformationMethodName2aSet = true;
172            }
173        }
174        return transformationMethodName2a;
175    }
176
177   /**
178    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getTransformationAnonymousName()
179    * @return String
180    */
181    protected abstract String handleGetTransformationAnonymousName();
182
183    private String __transformationAnonymousName3a;
184    private boolean __transformationAnonymousName3aSet = false;
185
186    /**
187     * TODO: Model Documentation for
188     * org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade.transformationAnonymousName
189     * @return (String)handleGetTransformationAnonymousName()
190     */
191    public final String getTransformationAnonymousName()
192    {
193        String transformationAnonymousName3a = this.__transformationAnonymousName3a;
194        if (!this.__transformationAnonymousName3aSet)
195        {
196            // transformationAnonymousName has no pre constraints
197            transformationAnonymousName3a = handleGetTransformationAnonymousName();
198            // transformationAnonymousName has no post constraints
199            this.__transformationAnonymousName3a = transformationAnonymousName3a;
200            if (isMetafacadePropertyCachingEnabled())
201            {
202                this.__transformationAnonymousName3aSet = true;
203            }
204        }
205        return transformationAnonymousName3a;
206    }
207
208   /**
209    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#isCircularReference()
210    * @return boolean
211    */
212    protected abstract boolean handleIsCircularReference();
213
214    private boolean __circularReference4a;
215    private boolean __circularReference4aSet = false;
216
217    /**
218     * Indicates if this dependency is part of a circular reference (meaning that both entities
219     * reference each other).
220     * @return (boolean)handleIsCircularReference()
221     */
222    public final boolean isCircularReference()
223    {
224        boolean circularReference4a = this.__circularReference4a;
225        if (!this.__circularReference4aSet)
226        {
227            // circularReference has no pre constraints
228            circularReference4a = handleIsCircularReference();
229            // circularReference has no post constraints
230            this.__circularReference4a = circularReference4a;
231            if (isMetafacadePropertyCachingEnabled())
232            {
233                this.__circularReference4aSet = true;
234            }
235        }
236        return circularReference4a;
237    }
238
239   /**
240    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getTransformationConstantValue()
241    * @return int
242    */
243    protected abstract int handleGetTransformationConstantValue();
244
245    private int __transformationConstantValue5a;
246    private boolean __transformationConstantValue5aSet = false;
247
248    /**
249     * Gets the transformation constant integer value.
250     * @return (int)handleGetTransformationConstantValue()
251     */
252    public final int getTransformationConstantValue()
253    {
254        int transformationConstantValue5a = this.__transformationConstantValue5a;
255        if (!this.__transformationConstantValue5aSet)
256        {
257            // transformationConstantValue has no pre constraints
258            transformationConstantValue5a = handleGetTransformationConstantValue();
259            // transformationConstantValue has no post constraints
260            this.__transformationConstantValue5a = transformationConstantValue5a;
261            if (isMetafacadePropertyCachingEnabled())
262            {
263                this.__transformationConstantValue5aSet = true;
264            }
265        }
266        return transformationConstantValue5a;
267    }
268
269   /**
270    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getTransformationToCollectionMethodName()
271    * @return String
272    */
273    protected abstract String handleGetTransformationToCollectionMethodName();
274
275    private String __transformationToCollectionMethodName6a;
276    private boolean __transformationToCollectionMethodName6aSet = false;
277
278    /**
279     * Returns the name of the method for transforming the contents of a collection.
280     * @return (String)handleGetTransformationToCollectionMethodName()
281     */
282    public final String getTransformationToCollectionMethodName()
283    {
284        String transformationToCollectionMethodName6a = this.__transformationToCollectionMethodName6a;
285        if (!this.__transformationToCollectionMethodName6aSet)
286        {
287            // transformationToCollectionMethodName has no pre constraints
288            transformationToCollectionMethodName6a = handleGetTransformationToCollectionMethodName();
289            // transformationToCollectionMethodName has no post constraints
290            this.__transformationToCollectionMethodName6a = transformationToCollectionMethodName6a;
291            if (isMetafacadePropertyCachingEnabled())
292            {
293                this.__transformationToCollectionMethodName6aSet = true;
294            }
295        }
296        return transformationToCollectionMethodName6a;
297    }
298
299   /**
300    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getDaoName()
301    * @return String
302    */
303    protected abstract String handleGetDaoName();
304
305    private String __daoName7a;
306    private boolean __daoName7aSet = false;
307
308    /**
309     * The name given to a DAO reference.
310     * @return (String)handleGetDaoName()
311     */
312    public final String getDaoName()
313    {
314        String daoName7a = this.__daoName7a;
315        if (!this.__daoName7aSet)
316        {
317            // daoName has no pre constraints
318            daoName7a = handleGetDaoName();
319            // daoName has no post constraints
320            this.__daoName7a = daoName7a;
321            if (isMetafacadePropertyCachingEnabled())
322            {
323                this.__daoName7aSet = true;
324            }
325        }
326        return daoName7a;
327    }
328
329   /**
330    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getDaoGetterName()
331    * @return String
332    */
333    protected abstract String handleGetDaoGetterName();
334
335    private String __daoGetterName8a;
336    private boolean __daoGetterName8aSet = false;
337
338    /**
339     * The name of the DAO reference getter name.
340     * @return (String)handleGetDaoGetterName()
341     */
342    public final String getDaoGetterName()
343    {
344        String daoGetterName8a = this.__daoGetterName8a;
345        if (!this.__daoGetterName8aSet)
346        {
347            // daoGetterName has no pre constraints
348            daoGetterName8a = handleGetDaoGetterName();
349            // daoGetterName has no post constraints
350            this.__daoGetterName8a = daoGetterName8a;
351            if (isMetafacadePropertyCachingEnabled())
352            {
353                this.__daoGetterName8aSet = true;
354            }
355        }
356        return daoGetterName8a;
357    }
358
359   /**
360    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getDaoSetterName()
361    * @return String
362    */
363    protected abstract String handleGetDaoSetterName();
364
365    private String __daoSetterName9a;
366    private boolean __daoSetterName9aSet = false;
367
368    /**
369     * The DAO reference setter's name.
370     * @return (String)handleGetDaoSetterName()
371     */
372    public final String getDaoSetterName()
373    {
374        String daoSetterName9a = this.__daoSetterName9a;
375        if (!this.__daoSetterName9aSet)
376        {
377            // daoSetterName has no pre constraints
378            daoSetterName9a = handleGetDaoSetterName();
379            // daoSetterName has no post constraints
380            this.__daoSetterName9a = daoSetterName9a;
381            if (isMetafacadePropertyCachingEnabled())
382            {
383                this.__daoSetterName9aSet = true;
384            }
385        }
386        return daoSetterName9a;
387    }
388
389   /**
390    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getTransformationToEntityCollectionMethodName()
391    * @return String
392    */
393    protected abstract String handleGetTransformationToEntityCollectionMethodName();
394
395    private String __transformationToEntityCollectionMethodName10a;
396    private boolean __transformationToEntityCollectionMethodName10aSet = false;
397
398    /**
399     * The method name that performs the value object collection to entity collection
400     * transformation.
401     * @return (String)handleGetTransformationToEntityCollectionMethodName()
402     */
403    public final String getTransformationToEntityCollectionMethodName()
404    {
405        String transformationToEntityCollectionMethodName10a = this.__transformationToEntityCollectionMethodName10a;
406        if (!this.__transformationToEntityCollectionMethodName10aSet)
407        {
408            // transformationToEntityCollectionMethodName has no pre constraints
409            transformationToEntityCollectionMethodName10a = handleGetTransformationToEntityCollectionMethodName();
410            // transformationToEntityCollectionMethodName has no post constraints
411            this.__transformationToEntityCollectionMethodName10a = transformationToEntityCollectionMethodName10a;
412            if (isMetafacadePropertyCachingEnabled())
413            {
414                this.__transformationToEntityCollectionMethodName10aSet = true;
415            }
416        }
417        return transformationToEntityCollectionMethodName10a;
418    }
419
420   /**
421    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getTransformationToEntityMethodName()
422    * @return String
423    */
424    protected abstract String handleGetTransformationToEntityMethodName();
425
426    private String __transformationToEntityMethodName11a;
427    private boolean __transformationToEntityMethodName11aSet = false;
428
429    /**
430     * The name of the "to entity" transformation method name.
431     * @return (String)handleGetTransformationToEntityMethodName()
432     */
433    public final String getTransformationToEntityMethodName()
434    {
435        String transformationToEntityMethodName11a = this.__transformationToEntityMethodName11a;
436        if (!this.__transformationToEntityMethodName11aSet)
437        {
438            // transformationToEntityMethodName has no pre constraints
439            transformationToEntityMethodName11a = handleGetTransformationToEntityMethodName();
440            // transformationToEntityMethodName has no post constraints
441            this.__transformationToEntityMethodName11a = transformationToEntityMethodName11a;
442            if (isMetafacadePropertyCachingEnabled())
443            {
444                this.__transformationToEntityMethodName11aSet = true;
445            }
446        }
447        return transformationToEntityMethodName11a;
448    }
449
450   /**
451    * @see org.andromda.cartridges.ejb3.metafacades.EJB3DependencyFacade#getValueObjectToEntityTransformerName()
452    * @return String
453    */
454    protected abstract String handleGetValueObjectToEntityTransformerName();
455
456    private String __valueObjectToEntityTransformerName12a;
457    private boolean __valueObjectToEntityTransformerName12aSet = false;
458
459    /**
460     * The name of the class that performs the value object to entity transformation.
461     * @return (String)handleGetValueObjectToEntityTransformerName()
462     */
463    public final String getValueObjectToEntityTransformerName()
464    {
465        String valueObjectToEntityTransformerName12a = this.__valueObjectToEntityTransformerName12a;
466        if (!this.__valueObjectToEntityTransformerName12aSet)
467        {
468            // valueObjectToEntityTransformerName has no pre constraints
469            valueObjectToEntityTransformerName12a = handleGetValueObjectToEntityTransformerName();
470            // valueObjectToEntityTransformerName has no post constraints
471            this.__valueObjectToEntityTransformerName12a = valueObjectToEntityTransformerName12a;
472            if (isMetafacadePropertyCachingEnabled())
473            {
474                this.__valueObjectToEntityTransformerName12aSet = true;
475            }
476        }
477        return valueObjectToEntityTransformerName12a;
478    }
479
480    /**
481     * @return true
482     * @see DependencyFacade
483     */
484    public boolean isDependencyFacadeMetaType()
485    {
486        return true;
487    }
488
489    /**
490     * @return true
491     * @see ModelElementFacade
492     */
493    public boolean isModelElementFacadeMetaType()
494    {
495        return true;
496    }
497
498    // ----------- delegates to DependencyFacade ------------
499    /**
500     * The "getter" name for this dependency.
501     * @see DependencyFacade#getGetterName()
502     */
503    public String getGetterName()
504    {
505        return this.getSuperDependencyFacade().getGetterName();
506    }
507
508    /**
509     * The "setter" name for this dependency.
510     * @see DependencyFacade#getSetterName()
511     */
512    public String getSetterName()
513    {
514        return this.getSuperDependencyFacade().getSetterName();
515    }
516
517    /**
518     * The source element of this dependency.
519     * @see DependencyFacade#getSourceElement()
520     */
521    public ModelElementFacade getSourceElement()
522    {
523        return this.getSuperDependencyFacade().getSourceElement();
524    }
525
526    /**
527     * Gets the element to which the dependencies belong.
528     * @see DependencyFacade#getTargetElement()
529     */
530    public ModelElementFacade getTargetElement()
531    {
532        return this.getSuperDependencyFacade().getTargetElement();
533    }
534
535    /**
536     * Copies all tagged values from the given ModelElementFacade to this model element facade.
537     * @see ModelElementFacade#copyTaggedValues(ModelElementFacade element)
538     */
539    public void copyTaggedValues(ModelElementFacade element)
540    {
541        this.getSuperDependencyFacade().copyTaggedValues(element);
542    }
543
544    /**
545     * Finds the tagged value with the specified 'tagName'. In case there are more values the first
546     * one found will be returned.
547     * @see ModelElementFacade#findTaggedValue(String tagName)
548     */
549    public Object findTaggedValue(String tagName)
550    {
551        return this.getSuperDependencyFacade().findTaggedValue(tagName);
552    }
553
554    /**
555     * Returns all the values for the tagged value with the specified name. The returned collection
556     * will contains only String instances, or will be empty. Never null.
557     * @see ModelElementFacade#findTaggedValues(String tagName)
558     */
559    public Collection<Object> findTaggedValues(String tagName)
560    {
561        return this.getSuperDependencyFacade().findTaggedValues(tagName);
562    }
563
564    /**
565     * Returns the fully qualified name of the model element. The fully qualified name includes
566     * complete package qualified name of the underlying model element. The templates parameter will
567     * be replaced by the correct one given the binding relation of the parameter to this element.
568     * @see ModelElementFacade#getBindedFullyQualifiedName(ModelElementFacade bindedElement)
569     */
570    public String getBindedFullyQualifiedName(ModelElementFacade bindedElement)
571    {
572        return this.getSuperDependencyFacade().getBindedFullyQualifiedName(bindedElement);
573    }
574
575    /**
576     * Gets all constraints belonging to the model element.
577     * @see ModelElementFacade#getConstraints()
578     */
579    public Collection<ConstraintFacade> getConstraints()
580    {
581        return this.getSuperDependencyFacade().getConstraints();
582    }
583
584    /**
585     * Returns the constraints of the argument kind that have been placed onto this model. Typical
586     * kinds are "inv", "pre" and "post". Other kinds are possible.
587     * @see ModelElementFacade#getConstraints(String kind)
588     */
589    public Collection<ConstraintFacade> getConstraints(String kind)
590    {
591        return this.getSuperDependencyFacade().getConstraints(kind);
592    }
593
594    /**
595     * Gets the documentation for the model element, The indent argument is prefixed to each line.
596     * By default this method wraps lines after 64 characters.
597     * This method is equivalent to <code>getDocumentation(indent, 64)</code>.
598     * @see ModelElementFacade#getDocumentation(String indent)
599     */
600    public String getDocumentation(String indent)
601    {
602        return this.getSuperDependencyFacade().getDocumentation(indent);
603    }
604
605    /**
606     * This method returns the documentation for this model element, with the lines wrapped after
607     * the specified number of characters, values of less than 1 will indicate no line wrapping is
608     * required. By default paragraphs are returned as HTML.
609     * This method is equivalent to <code>getDocumentation(indent, lineLength, true)</code>.
610     * @see ModelElementFacade#getDocumentation(String indent, int lineLength)
611     */
612    public String getDocumentation(String indent, int lineLength)
613    {
614        return this.getSuperDependencyFacade().getDocumentation(indent, lineLength);
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. HTML style determines if HTML Escaping is applied.
621     * @see ModelElementFacade#getDocumentation(String indent, int lineLength, boolean htmlStyle)
622     */
623    public String getDocumentation(String indent, int lineLength, boolean htmlStyle)
624    {
625        return this.getSuperDependencyFacade().getDocumentation(indent, lineLength, htmlStyle);
626    }
627
628    /**
629     * The fully qualified name of this model element.
630     * @see ModelElementFacade#getFullyQualifiedName()
631     */
632    public String getFullyQualifiedName()
633    {
634        return this.getSuperDependencyFacade().getFullyQualifiedName();
635    }
636
637    /**
638     * Returns the fully qualified name of the model element. The fully qualified name includes
639     * complete package qualified name of the underlying model element.  If modelName is true, then
640     * the original name of the model element (the name contained within the model) will be the name
641     * returned, otherwise a name from a language mapping will be returned.
642     * @see ModelElementFacade#getFullyQualifiedName(boolean modelName)
643     */
644    public String getFullyQualifiedName(boolean modelName)
645    {
646        return this.getSuperDependencyFacade().getFullyQualifiedName(modelName);
647    }
648
649    /**
650     * Returns the fully qualified name as a path, the returned value always starts with out a slash
651     * '/'.
652     * @see ModelElementFacade#getFullyQualifiedNamePath()
653     */
654    public String getFullyQualifiedNamePath()
655    {
656        return this.getSuperDependencyFacade().getFullyQualifiedNamePath();
657    }
658
659    /**
660     * Gets the unique identifier of the underlying model element.
661     * @see ModelElementFacade#getId()
662     */
663    public String getId()
664    {
665        return this.getSuperDependencyFacade().getId();
666    }
667
668    /**
669     * UML2: Retrieves the keywords for this element. Used to modify implementation properties which
670     * are not represented by other properties, i.e. native, transient, volatile, synchronized,
671     * (added annotations) override, deprecated. Can also be used to suppress compiler warnings:
672     * (added annotations) unchecked, fallthrough, path, serial, finally, all. Annotations require
673     * JDK5 compiler level.
674     * @see ModelElementFacade#getKeywords()
675     */
676    public Collection<String> getKeywords()
677    {
678        return this.getSuperDependencyFacade().getKeywords();
679    }
680
681    /**
682     * UML2: Retrieves a localized label for this named element.
683     * @see ModelElementFacade#getLabel()
684     */
685    public String getLabel()
686    {
687        return this.getSuperDependencyFacade().getLabel();
688    }
689
690    /**
691     * The language mappings that have been set for this model element.
692     * @see ModelElementFacade#getLanguageMappings()
693     */
694    public TypeMappings getLanguageMappings()
695    {
696        return this.getSuperDependencyFacade().getLanguageMappings();
697    }
698
699    /**
700     * Return the model containing this model element (multiple models may be loaded and processed
701     * at the same time).
702     * @see ModelElementFacade#getModel()
703     */
704    public ModelFacade getModel()
705    {
706        return this.getSuperDependencyFacade().getModel();
707    }
708
709    /**
710     * The name of the model element.
711     * @see ModelElementFacade#getName()
712     */
713    public String getName()
714    {
715        return this.getSuperDependencyFacade().getName();
716    }
717
718    /**
719     * Gets the package to which this model element belongs.
720     * @see ModelElementFacade#getPackage()
721     */
722    public ModelElementFacade getPackage()
723    {
724        return this.getSuperDependencyFacade().getPackage();
725    }
726
727    /**
728     * The name of this model element's package.
729     * @see ModelElementFacade#getPackageName()
730     */
731    public String getPackageName()
732    {
733        return this.getSuperDependencyFacade().getPackageName();
734    }
735
736    /**
737     * Gets the package name (optionally providing the ability to retrieve the model name and not
738     * the mapped name).
739     * @see ModelElementFacade#getPackageName(boolean modelName)
740     */
741    public String getPackageName(boolean modelName)
742    {
743        return this.getSuperDependencyFacade().getPackageName(modelName);
744    }
745
746    /**
747     * Returns the package as a path, the returned value always starts with out a slash '/'.
748     * @see ModelElementFacade#getPackagePath()
749     */
750    public String getPackagePath()
751    {
752        return this.getSuperDependencyFacade().getPackagePath();
753    }
754
755    /**
756     * UML2: Returns the value of the 'Qualified Name' attribute. A name which allows the
757     * NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from
758     * the names of the containing namespaces starting at the root of the hierarchy and ending with
759     * the name of the NamedElement itself.
760     * @see ModelElementFacade#getQualifiedName()
761     */
762    public String getQualifiedName()
763    {
764        return this.getSuperDependencyFacade().getQualifiedName();
765    }
766
767    /**
768     * Gets the root package for the model element.
769     * @see ModelElementFacade#getRootPackage()
770     */
771    public PackageFacade getRootPackage()
772    {
773        return this.getSuperDependencyFacade().getRootPackage();
774    }
775
776    /**
777     * Gets the dependencies for which this model element is the source.
778     * @see ModelElementFacade#getSourceDependencies()
779     */
780    public Collection<DependencyFacade> getSourceDependencies()
781    {
782        return this.getSuperDependencyFacade().getSourceDependencies();
783    }
784
785    /**
786     * If this model element is the context of an activity graph, this represents that activity
787     * graph.
788     * @see ModelElementFacade#getStateMachineContext()
789     */
790    public StateMachineFacade getStateMachineContext()
791    {
792        return this.getSuperDependencyFacade().getStateMachineContext();
793    }
794
795    /**
796     * The collection of ALL stereotype names for this model element.
797     * @see ModelElementFacade#getStereotypeNames()
798     */
799    public Collection<String> getStereotypeNames()
800    {
801        return this.getSuperDependencyFacade().getStereotypeNames();
802    }
803
804    /**
805     * Gets all stereotypes for this model element.
806     * @see ModelElementFacade#getStereotypes()
807     */
808    public Collection<StereotypeFacade> getStereotypes()
809    {
810        return this.getSuperDependencyFacade().getStereotypes();
811    }
812
813    /**
814     * Return the TaggedValues associated with this model element, under all stereotypes.
815     * @see ModelElementFacade#getTaggedValues()
816     */
817    public Collection<TaggedValueFacade> getTaggedValues()
818    {
819        return this.getSuperDependencyFacade().getTaggedValues();
820    }
821
822    /**
823     * Gets the dependencies for which this model element is the target.
824     * @see ModelElementFacade#getTargetDependencies()
825     */
826    public Collection<DependencyFacade> getTargetDependencies()
827    {
828        return this.getSuperDependencyFacade().getTargetDependencies();
829    }
830
831    /**
832     * Get the template parameter for this model element having the parameterName
833     * @see ModelElementFacade#getTemplateParameter(String parameterName)
834     */
835    public Object getTemplateParameter(String parameterName)
836    {
837        return this.getSuperDependencyFacade().getTemplateParameter(parameterName);
838    }
839
840    /**
841     * Get the template parameters for this model element
842     * @see ModelElementFacade#getTemplateParameters()
843     */
844    public Collection<TemplateParameterFacade> getTemplateParameters()
845    {
846        return this.getSuperDependencyFacade().getTemplateParameters();
847    }
848
849    /**
850     * The visibility (i.e. public, private, protected or package) of the model element, will
851     * attempt a lookup for these values in the language mappings (if any).
852     * @see ModelElementFacade#getVisibility()
853     */
854    public String getVisibility()
855    {
856        return this.getSuperDependencyFacade().getVisibility();
857    }
858
859    /**
860     * Returns true if the model element has the exact stereotype (meaning no stereotype inheritance
861     * is taken into account when searching for the stereotype), false otherwise.
862     * @see ModelElementFacade#hasExactStereotype(String stereotypeName)
863     */
864    public boolean hasExactStereotype(String stereotypeName)
865    {
866        return this.getSuperDependencyFacade().hasExactStereotype(stereotypeName);
867    }
868
869    /**
870     * Does the UML Element contain the named Keyword? Keywords can be separated by space, comma,
871     * pipe, semicolon, or << >>
872     * @see ModelElementFacade#hasKeyword(String keywordName)
873     */
874    public boolean hasKeyword(String keywordName)
875    {
876        return this.getSuperDependencyFacade().hasKeyword(keywordName);
877    }
878
879    /**
880     * Returns true if the model element has the specified stereotype.  If the stereotype itself
881     * does not match, then a search will be made up the stereotype inheritance hierarchy, and if
882     * one of the stereotype's ancestors has a matching name this method will return true, false
883     * otherwise.
884     * For example, if we have a certain stereotype called <<exception>> and a model element has a
885     * stereotype called <<applicationException>> which extends <<exception>>, when calling this
886     * method with 'stereotypeName' defined as 'exception' the method would return true since
887     * <<applicationException>> inherits from <<exception>>.  If you want to check if the model
888     * element has the exact stereotype, then use the method 'hasExactStereotype' instead.
889     * @see ModelElementFacade#hasStereotype(String stereotypeName)
890     */
891    public boolean hasStereotype(String stereotypeName)
892    {
893        return this.getSuperDependencyFacade().hasStereotype(stereotypeName);
894    }
895
896    /**
897     * True if there are target dependencies from this element that are instances of BindingFacade.
898     * Deprecated in UML2: Use TemplateBinding parameters instead of dependencies.
899     * @see ModelElementFacade#isBindingDependenciesPresent()
900     */
901    public boolean isBindingDependenciesPresent()
902    {
903        return this.getSuperDependencyFacade().isBindingDependenciesPresent();
904    }
905
906    /**
907     * Indicates if any constraints are present on this model element.
908     * @see ModelElementFacade#isConstraintsPresent()
909     */
910    public boolean isConstraintsPresent()
911    {
912        return this.getSuperDependencyFacade().isConstraintsPresent();
913    }
914
915    /**
916     * Indicates if any documentation is present on this model element.
917     * @see ModelElementFacade#isDocumentationPresent()
918     */
919    public boolean isDocumentationPresent()
920    {
921        return this.getSuperDependencyFacade().isDocumentationPresent();
922    }
923
924    /**
925     * True if this element name is a reserved word in Java, C#, ANSI or ISO C, C++, JavaScript.
926     * @see ModelElementFacade#isReservedWord()
927     */
928    public boolean isReservedWord()
929    {
930        return this.getSuperDependencyFacade().isReservedWord();
931    }
932
933    /**
934     * True is there are template parameters on this model element. For UML2, applies to Class,
935     * Operation, Property, and Parameter.
936     * @see ModelElementFacade#isTemplateParametersPresent()
937     */
938    public boolean isTemplateParametersPresent()
939    {
940        return this.getSuperDependencyFacade().isTemplateParametersPresent();
941    }
942
943    /**
944     * True if this element name is a valid identifier name in Java, C#, ANSI or ISO C, C++,
945     * JavaScript. Contains no spaces, special characters etc. Constraint always applied on
946     * Enumerations and Interfaces, optionally applies on other model elements.
947     * @see ModelElementFacade#isValidIdentifierName()
948     */
949    public boolean isValidIdentifierName()
950    {
951        return this.getSuperDependencyFacade().isValidIdentifierName();
952    }
953
954    /**
955     * Searches for the constraint with the specified 'name' on this model element, and if found
956     * translates it using the specified 'translation' from a translation library discovered by the
957     * framework.
958     * @see ModelElementFacade#translateConstraint(String name, String translation)
959     */
960    public String translateConstraint(String name, String translation)
961    {
962        return this.getSuperDependencyFacade().translateConstraint(name, translation);
963    }
964
965    /**
966     * Translates all constraints belonging to this model element with the given 'translation'.
967     * @see ModelElementFacade#translateConstraints(String translation)
968     */
969    public String[] translateConstraints(String translation)
970    {
971        return this.getSuperDependencyFacade().translateConstraints(translation);
972    }
973
974    /**
975     * Translates the constraints of the specified 'kind' belonging to this model element.
976     * @see ModelElementFacade#translateConstraints(String kind, String translation)
977     */
978    public String[] translateConstraints(String kind, String translation)
979    {
980        return this.getSuperDependencyFacade().translateConstraints(kind, translation);
981    }
982
983    /**
984     * @see org.andromda.core.metafacade.MetafacadeBase#initialize()
985     */
986    @Override
987    public void initialize()
988    {
989        this.getSuperDependencyFacade().initialize();
990    }
991
992    /**
993     * @return Object getSuperDependencyFacade().getValidationOwner()
994     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationOwner()
995     */
996    @Override
997    public Object getValidationOwner()
998    {
999        Object owner = this.getSuperDependencyFacade().getValidationOwner();
1000        return owner;
1001    }
1002
1003    /**
1004     * @return String getSuperDependencyFacade().getValidationName()
1005     * @see org.andromda.core.metafacade.MetafacadeBase#getValidationName()
1006     */
1007    @Override
1008    public String getValidationName()
1009    {
1010        String name = this.getSuperDependencyFacade().getValidationName();
1011        return name;
1012    }
1013
1014    /**
1015     * @param validationMessages Collection<ModelValidationMessage>
1016     * @see org.andromda.core.metafacade.MetafacadeBase#validateInvariants(Collection validationMessages)
1017     */
1018    @Override
1019    public void validateInvariants(Collection<ModelValidationMessage> validationMessages)
1020    {
1021        this.getSuperDependencyFacade().validateInvariants(validationMessages);
1022    }
1023
1024    /**
1025     * The property that stores the name of the metafacade.
1026     */
1027    private static final String NAME_PROPERTY = "name";
1028    private static final String FQNAME_PROPERTY = "fullyQualifiedName";
1029
1030    /**
1031     * @see Object#toString()
1032     */
1033    @Override
1034    public String toString()
1035    {
1036        final StringBuilder toString = new StringBuilder(this.getClass().getName());
1037        toString.append("[");
1038        try
1039        {
1040            toString.append(Introspector.instance().getProperty(this, FQNAME_PROPERTY));
1041        }
1042        catch (final Throwable tryAgain)
1043        {
1044            try
1045            {
1046                toString.append(Introspector.instance().getProperty(this, NAME_PROPERTY));
1047            }
1048            catch (final Throwable ignore)
1049            {
1050                // - just ignore when the metafacade doesn't have a name or fullyQualifiedName property
1051            }
1052        }
1053        toString.append("]");
1054        return toString.toString();
1055    }
1056}