001// license-header java merge-point
002//
003// Attention: generated code (by Metafacade.vsl) - do not modify!
004//
005package org.andromda.metafacades.uml;
006
007/**
008 * A property related by memberEnd or its specializations to an association represents an end of the
009 * association. The type of the property is the type of the end of the association .Property
010 * represents a declared state of one or more instances in terms of a named relationship to a value
011 * or values. When a property is an association end, the value or values are related to the instance
012 * or instances at the other end(s) of the association.
013 *
014 * Metafacade interface to be used by AndroMDA cartridges.
015 */
016public interface AssociationEndFacade
017    extends ModelElementFacade
018{
019    /**
020     * Indicates the metafacade type (used for metafacade mappings).
021     *
022     * @return boolean always <code>true</code>
023     */
024    public boolean isAssociationEndFacadeMetaType();
025
026    /**
027     * A name suitable for use when adding new elements to this association end in programming code.
028     * @return String
029     */
030    public String getAdderName();
031
032    /**
033     * Returns the value of the 'Aggregation' attribute (none, shared, composite). The default value
034     * is "none". The literals are from the enumeration org.eclipse.uml2.uml.AggregationKind.
035     * Specifies the kind of aggregation that applies to the Property.
036     * @return String
037     */
038    public String getAggregationKind();
039
040    /**
041     * The association owning this association end.
042     * @return AssociationFacade
043     */
044    public AssociationFacade getAssociation();
045
046    /**
047     * UML2: Returns the value of the 'Default' attribute. Specifies a String that represents a
048     * value to be used when no argument is supplied for the Property. A String that is evaluated to
049     * give a default value for the Property when an object of the owning Classifier is
050     * instantiated.  Can be something like: new ValueObject(values);
051     * @return String
052     */
053    public String getDefault();
054
055    /**
056     * A name suitable for use when accessing this association end in programming code.
057     * @return String
058     */
059    public String getGetterName();
060
061    /**
062     * The name of the type that is returned on the accessor and mutator operations,  determined in
063     * part by the multiplicity.
064     * @return String
065     */
066    public String getGetterSetterTypeName();
067
068    /**
069     * the lower value for the multiplicity
070     * -only applicable for UML2
071     * @return int
072     */
073    public int getLower();
074
075    /**
076     * The other association end owned by this end's association.
077     * @return AssociationEndFacade
078     */
079    public AssociationEndFacade getOtherEnd();
080
081    /**
082     * A name suitable for use when removing element from this association end in programming code.
083     * @return String
084     */
085    public String getRemoverName();
086
087    /**
088     * A name suitable for use when accessing this association end in programming code.
089     * @return String
090     */
091    public String getSetterName();
092
093    /**
094     * The classifier attached to this association end.
095     * @return ClassifierFacade
096     */
097    public ClassifierFacade getType();
098
099    /**
100     * the upper value for the multiplicity (will be -1 for *)
101     * -only applicable for UML2
102     * @return int
103     */
104    public int getUpper();
105
106    /**
107     * True if this association end represents an aggregation relationship.
108     * @return boolean
109     */
110    public boolean isAggregation();
111
112    /**
113     * Is true if update of one side of the association should also update the other side. false if
114     * not.
115     * @return boolean
116     */
117    public boolean isBidirectional();
118
119    /**
120     * Returns whether or not (true/false) this association end is the child end of the assocation
121     * (i.e. the other end's aggregation is composition).
122     * @return boolean
123     */
124    public boolean isChild();
125
126    /**
127     * True if this association end represents a composition relationship.
128     * @return boolean
129     */
130    public boolean isComposition();
131
132    /**
133     * If the association end is derived (its value is computed). UML2 only. UML14 always returns
134     * false. Default=false.
135     * @return boolean
136     */
137    public boolean isDerived();
138
139    /**
140     * IsLeaf property in the association end property. If true, attribute is final, cannot be
141     * extended or implemented by a descendant. Default=false.
142     * @return boolean
143     */
144    public boolean isLeaf();
145
146    /**
147     * True if this association end's multiplicity is greater than one.
148     * @return boolean
149     */
150    public boolean isMany();
151
152    /**
153     * True if this association end's and the other end's multiplicities are both many.
154     * @return boolean
155     */
156    public boolean isMany2Many();
157
158    /**
159     * True if this association end's multiplicity is many while the other end's is one.
160     * @return boolean
161     */
162    public boolean isMany2One();
163
164    /**
165     * True if it is possible to navigate from the other end to this association end .
166     * @return boolean
167     */
168    public boolean isNavigable();
169
170    /**
171     * True if this association end's multiplicity is one while the other end's is many.
172     * @return boolean
173     */
174    public boolean isOne2Many();
175
176    /**
177     * True if this association end's and the other end's multiplicities are both one.
178     * @return boolean
179     */
180    public boolean isOne2One();
181
182    /**
183     * Indicates whether or not the association ends are ordered (if multiplicity is greater than
184     * 1).
185     * @return boolean
186     */
187    public boolean isOrdered();
188
189    /**
190     * True if the association end cannot be changed.
191     * @return boolean
192     */
193    public boolean isReadOnly();
194
195    /**
196     * True if this association end's multiplicity is strictly greater than zero.
197     * @return boolean
198     */
199    public boolean isRequired();
200
201    /**
202     * Indicates if this associationEnd is 'static', meaning it has a classifier scope.
203     * @return boolean
204     */
205    public boolean isStatic();
206
207    /**
208     * UML2: If the association attribute is unique within the Collection type. UML14 always returns
209     * false. Unique+Ordered determines the implementation Collection type. Default=false.
210     * @return boolean
211     */
212    public boolean isUnique();
213}