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