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 * Represents an attribute on a classifier. UML2 maps both Attributes and AssociationEnds to
009 * Property. A property is a structural feature of a classifier that characterizes instances of the
010 * classifier. A property related by ownedAttribute to a classifier (other than an association)
011 * represents an attribute and might also represent an association end. It relates an instance of
012 * the class to a value or set of values of the type of the attribute. A property represents a set
013 * of instances that are owned by a containing classifier instance. Property represents a declared
014 * state of one or more instances in terms of a named relationship to a value or values. When a
015 * property is an attribute of a classifier, the value or values are related to the instance of the
016 * classifier by being held in slots of the instance. The range of valid values represented by the
017 * property can be controlled by setting the property's type.
018 *
019 * Metafacade interface to be used by AndroMDA cartridges.
020 */
021public interface AttributeFacade
022    extends ModelElementFacade
023{
024    /**
025     * Indicates the metafacade type (used for metafacade mappings).
026     *
027     * @return boolean always <code>true</code>
028     */
029    public boolean isAttributeFacadeMetaType();
030
031    /**
032     * Searches the given feature for the specified tag.
033     * If the follow boolean is set to true then the search will continue from the class attribute
034     * to the class itself and then up the class hierarchy.
035     * @param name String
036     * @param follow boolean
037     * @return Object
038     */
039    public Object findTaggedValue(String name, boolean follow);
040
041    /**
042     * The default value of the attribute.  This is the value given if no value is defined.
043     * @return String
044     */
045    public String getDefaultValue();
046
047    /**
048     * If the attribute is an enumeration literal this represents the owning enumeration. Can be
049     * empty.
050     * @return EnumerationFacade
051     */
052    public EnumerationFacade getEnumeration();
053
054    /**
055     * Returns the enumeration literal parameters defined by tagged value as a comma separated list.
056     * @return String
057     */
058    public String getEnumerationLiteralParameters();
059
060    /**
061     * The value for this attribute if it is an enumeration literal, null otherwise. The default
062     * value is returned as a String if it has been specified, if it's not specified this
063     * attribute's name is assumed.
064     * @return String
065     */
066    public String getEnumerationValue();
067
068    /**
069     * The name of the accessor operation that would retrieve this attribute's value.
070     * @return String
071     */
072    public String getGetterName();
073
074    /**
075     * The name of the type that is returned on the accessor and mutator operations,  determined in
076     * part by the multiplicity.
077     * @return String
078     */
079    public String getGetterSetterTypeName();
080
081    /**
082     * the lower value for the multiplicity
083     * -only applicable for UML2
084     * @return int
085     */
086    public int getLower();
087
088    /**
089     * Gets the classifier who is the owner of the attributes.
090     * @return ClassifierFacade
091     */
092    public ClassifierFacade getOwner();
093
094    /**
095     * The name of the mutator operation that would retrieve this attribute's value.
096     * @return String
097     */
098    public String getSetterName();
099
100    /**
101     * The classifier owning this attribute.
102     * @return ClassifierFacade
103     */
104    public ClassifierFacade getType();
105
106    /**
107     * the upper value for the multiplicity (will be -1 for *)
108     * -only applicable for UML2
109     * @return int
110     */
111    public int getUpper();
112
113    /**
114     * True if this attribute can only be set.
115     * @return boolean
116     */
117    public boolean isAddOnly();
118
119    /**
120     * True if this attribute can be modified.
121     * @return boolean
122     */
123    public boolean isChangeable();
124
125    /**
126     * Indicates if the default value is present.
127     * @return boolean
128     */
129    public boolean isDefaultValuePresent();
130
131    /**
132     * If the attribute is derived (its value is computed). UML2 only. UML14 always returns false.
133     * Default=false.
134     * @return boolean
135     */
136    public boolean isDerived();
137
138    /**
139     * True if this attribute is owned by an enumeration.
140     * @return boolean
141     */
142    public boolean isEnumerationLiteral();
143
144    /**
145     * Returns true if enumeration literal parameters exist (defined by tagged value) for the
146     * literal.
147     * @return boolean
148     */
149    public boolean isEnumerationLiteralParametersExist();
150
151    /**
152     * True if this attribute is owned by an enumeration but is defined as a member variable (NOT a
153     * literal).
154     * @return boolean
155     */
156    public boolean isEnumerationMember();
157
158    /**
159     * IsLeaf property in the operation. If true, operation is final, cannot be extended or
160     * implemented by a descendant.
161     * @return boolean
162     */
163    public boolean isLeaf();
164
165    /**
166     * Whether or not this attribute has a multiplicity greater than 1.
167     * @return boolean
168     */
169    public boolean isMany();
170
171    /**
172     * Indicates whether or not the attributes are ordered (if multiplicity is greater than 1).
173     * @return boolean
174     */
175    public boolean isOrdered();
176
177    /**
178     * Whether or not this attribute can be modified.
179     * @return boolean
180     */
181    public boolean isReadOnly();
182
183    /**
184     * Whether or not the multiplicity of this attribute is 1.
185     * @return boolean
186     */
187    public boolean isRequired();
188
189    /**
190     * Indicates if this attribute is 'static', meaning it has a classifier scope.
191     * @return boolean
192     */
193    public boolean isStatic();
194
195    /**
196     * If the attribute is unique within the Collection type. UML2 only. UML14 always returns false.
197     * Unique+Ordered determines the implementation Collection type. Default=false.
198     * @return boolean
199     */
200    public boolean isUnique();
201}