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.List;
008
009/**
010 * An association describes a set of tuples whose values refer to typed instances. An instance of an
011 * association is called a link.
012 *
013 * Metafacade interface to be used by AndroMDA cartridges.
014 */
015public interface AssociationFacade
016    extends GeneralizableElementFacade
017{
018    /**
019     * Indicates the metafacade type (used for metafacade mappings).
020     *
021     * @return boolean always <code>true</code>
022     */
023    public boolean isAssociationFacadeMetaType();
024
025    /**
026     * The first association end.
027     * @return AssociationEndFacade
028     */
029    public AssociationEndFacade getAssociationEndA();
030
031    /**
032     * The second association end.
033     * @return AssociationEndFacade
034     */
035    public AssociationEndFacade getAssociationEndB();
036
037    /**
038     * Gets the association ends belonging to this association.
039     * @return List<AssociationEndFacade>
040     */
041    public List<AssociationEndFacade> getAssociationEnds();
042
043    /**
044     * A name suited for naming this relationship. This name will be constructed from both
045     * association ends.
046     * @return String
047     */
048    public String getRelationName();
049
050    /**
051     * Indicates if this association is 'abstract'.
052     * @return boolean
053     */
054    public boolean isAbstract();
055
056    /**
057     * True if the AssociationFacade is an AssociationClass.
058     * @return boolean
059     */
060    public boolean isAssociationClass();
061
062    /**
063     * UML2: Determines whether this association is a binary association, i.e. whether it has
064     * exactly two member ends. UML2 allows association classes in the association itself (many2many
065     * with association attributes). Default=true: only two member ends.
066     * @return boolean
067     */
068    public boolean isBinary();
069
070    /**
071     * UML2: Returns the value of the 'Is Derived' attribute. The default value is "false". If
072     * isDerived is true, the value of the attribute is derived from information elsewhere.
073     * Specifies whether the Property is derived, i.e., whether its value or values can be computed
074     * from other information.
075     * @return boolean
076     */
077    public boolean isDerived();
078
079    /**
080     * True if this association cannot be extended and represent a leaf in the inheritance tree.
081     * @return boolean
082     */
083    public boolean isLeaf();
084
085    /**
086     * Indicates whether or not this associations represents a many-to-many relation.
087     * @return boolean
088     */
089    public boolean isMany2Many();
090}