001// license-header java merge-point
002//
003// Attention: generated code (by Metafacade.vsl) - do not modify!
004//
005package org.andromda.metafacades.uml;
006
007import java.util.Collection;
008
009/**
010 * The model element that represents an element that can be generalized or specialized.
011 *
012 * Metafacade interface to be used by AndroMDA cartridges.
013 */
014public interface GeneralizableElementFacade
015    extends ModelElementFacade
016{
017    /**
018     * Indicates the metafacade type (used for metafacade mappings).
019     *
020     * @return boolean always <code>true</code>
021     */
022    public boolean isGeneralizableElementFacadeMetaType();
023
024    /**
025     * Finds the tagged value optional searching the entire inheritance hierarchy if 'follow' is set
026     * to true.
027     * @param tagName String
028     * @param follow boolean
029     * @return Object
030     */
031    public Object findTaggedValue(String tagName, boolean follow);
032
033    /**
034     * All generalizations for this generalizable element, goes up the inheritance tree.
035     * @return Collection<GeneralizableElementFacade>
036     */
037    public Collection<GeneralizableElementFacade> getAllGeneralizations();
038
039    /**
040     * All specializations (travels down the inheritance hierarchy).
041     * @return Collection<GeneralizableElementFacade>
042     */
043    public Collection<GeneralizableElementFacade> getAllSpecializations();
044
045    /**
046     * Gets the direct generalization for this generalizable element.
047     * @return GeneralizableElementFacade
048     */
049    public GeneralizableElementFacade getGeneralization();
050
051    /**
052     * Gets the actual links that this generalization element is part of (it plays either the
053     * specialization or generalization).
054     * @return Collection<GeneralizationFacade>
055     */
056    public Collection<GeneralizationFacade> getGeneralizationLinks();
057
058    /**
059     * A comma separated list of the fully qualified names of all generalizations.
060     * @return String
061     */
062    public String getGeneralizationList();
063
064    /**
065     * The element found when you recursively follow the generalization path up to the root. If an
066     * element has no generalization itself will be considered the root.
067     * @return GeneralizableElementFacade
068     */
069    public GeneralizableElementFacade getGeneralizationRoot();
070
071    /**
072     * Return all generalizations (ancestors) from this generalizable element.
073     * @return Collection<GeneralizableElementFacade>
074     */
075    public Collection<GeneralizableElementFacade> getGeneralizations();
076
077    /**
078     * Gets the direct specializations (i.e. sub elements) for this generalizatble element.
079     * @return Collection<GeneralizableElementFacade>
080     */
081    public Collection<GeneralizableElementFacade> getSpecializations();
082}