blob: 68ca3397f66b0dceea17a6ff3e249adc091886da [file] [log] [blame]
/*
* Copyright (c) 2005, 2014 IBM Corporation, CEA, and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM - initial API and implementation
* Kenn Hussey (CEA) - 327039, 351774, 351777, 382718, 418466
* Christian W. Damus (CEA) - 251963
*
*/
package org.eclipse.uml2.uml;
import java.util.Map;
import org.eclipse.emf.common.util.DiagnosticChain;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Property</b></em>'.
* <!-- end-user-doc -->
*
* <!-- begin-model-doc -->
* A Property is a StructuralFeature. A Property related by ownedAttribute to a Classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the Classifier to a value or set of values of the type of the attribute. A Property related by memberEnd to an Association represents an end of the Association. The type of the Property is the type of the end of the Association. A Property has the capability of being a DeploymentTarget in a Deployment relationship. This enables modeling the deployment to hierarchical nodes that have Properties functioning as internal parts. Property specializes ParameterableElement to specify that a Property can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.uml2.uml.Property#getDatatype <em>Datatype</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getInterface <em>Interface</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getAggregation <em>Aggregation</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getAssociationEnd <em>Association End</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getQualifiers <em>Qualifier</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getClass_ <em>Class</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getDefaultValue <em>Default Value</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#isComposite <em>Is Composite</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#isDerived <em>Is Derived</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#isDerivedUnion <em>Is Derived Union</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#isID <em>Is ID</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getOpposite <em>Opposite</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getOwningAssociation <em>Owning Association</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getRedefinedProperties <em>Redefined Property</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getSubsettedProperties <em>Subsetted Property</em>}</li>
* <li>{@link org.eclipse.uml2.uml.Property#getAssociation <em>Association</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.uml2.uml.UMLPackage#getProperty()
* @model features="default"
* defaultUnsettable="true" defaultDataType="org.eclipse.uml2.types.String" defaultTransient="true" defaultVolatile="true" defaultDerived="true" defaultOrdered="false" defaultSuppressedGetVisibility="true" defaultSuppressedSetVisibility="true" defaultSuppressedIsSetVisibility="true" defaultSuppressedUnsetVisibility="true"
* @generated
*/
public interface Property
extends StructuralFeature, ConnectableElement, DeploymentTarget {
/**
* Returns the value of the '<em><b>Datatype</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.DataType#getOwnedAttributes <em>Owned Attribute</em>}'.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.NamedElement#getNamespace() <em>Namespace</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.Feature#getFeaturingClassifiers() <em>Featuring Classifier</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.RedefinableElement#getRedefinitionContexts() <em>Redefinition Context</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The DataType that owns this Property, if any.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Datatype</em>' container reference.
* @see #setDatatype(DataType)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_Datatype()
* @see org.eclipse.uml2.uml.DataType#getOwnedAttributes
* @model opposite="ownedAttribute" transient="false" ordered="false"
* @generated
*/
DataType getDatatype();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getDatatype <em>Datatype</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Datatype</em>' container reference.
* @see #getDatatype()
* @generated
*/
void setDatatype(DataType value);
/**
* Returns the value of the '<em><b>Interface</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Interface#getOwnedAttributes <em>Owned Attribute</em>}'.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.NamedElement#getNamespace() <em>Namespace</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.Feature#getFeaturingClassifiers() <em>Featuring Classifier</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.RedefinableElement#getRedefinitionContexts() <em>Redefinition Context</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The Interface that owns this Property, if any.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Interface</em>' container reference.
* @see #setInterface(Interface)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_Interface()
* @see org.eclipse.uml2.uml.Interface#getOwnedAttributes
* @model opposite="ownedAttribute" transient="false" ordered="false"
* @generated
*/
Interface getInterface();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getInterface <em>Interface</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Interface</em>' container reference.
* @see #getInterface()
* @generated
*/
void setInterface(Interface value);
/**
* Returns the value of the '<em><b>Is Derived</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Is Derived</em>' attribute.
* @see #setIsDerived(boolean)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_IsDerived()
* @model default="false" dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
* @generated
*/
boolean isDerived();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#isDerived <em>Is Derived</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is Derived</em>' attribute.
* @see #isDerived()
* @generated
*/
void setIsDerived(boolean value);
/**
* Returns the value of the '<em><b>Is Derived Union</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Specifies whether the property is derived as the union of all of the Properties that are constrained to subset it.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Is Derived Union</em>' attribute.
* @see #setIsDerivedUnion(boolean)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_IsDerivedUnion()
* @model default="false" dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
* @generated
*/
boolean isDerivedUnion();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#isDerivedUnion <em>Is Derived Union</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is Derived Union</em>' attribute.
* @see #isDerivedUnion()
* @generated
*/
void setIsDerivedUnion(boolean value);
/**
* Returns the value of the '<em><b>Is ID</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* True indicates this property can be used to uniquely identify an instance of the containing Class.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Is ID</em>' attribute.
* @see #setIsID(boolean)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_IsID()
* @model default="false" dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
* @generated
*/
boolean isID();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#isID <em>Is ID</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is ID</em>' attribute.
* @see #isID()
* @generated
*/
void setIsID(boolean value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Retrieves a string representation of the default value for this property.
* <!-- end-model-doc -->
* @model ordered="false"
* @generated NOT
*/
String getDefault();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the default value for this property based on the specified string representation.
* @param newDefault A string representation of the new default value.
* <!-- end-model-doc -->
* @model ordered="false" newDefaultRequired="true" newDefaultOrdered="false"
* @generated NOT
*/
void setDefault(String newDefault);
/**
* Returns the value of the '<em><b>Aggregation</b></em>' attribute.
* The default value is <code>"none"</code>.
* The literals are from the enumeration {@link org.eclipse.uml2.uml.AggregationKind}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Specifies the kind of aggregation that applies to the Property.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Aggregation</em>' attribute.
* @see org.eclipse.uml2.uml.AggregationKind
* @see #setAggregation(AggregationKind)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_Aggregation()
* @model default="none" required="true" ordered="false"
* @generated
*/
AggregationKind getAggregation();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getAggregation <em>Aggregation</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Aggregation</em>' attribute.
* @see org.eclipse.uml2.uml.AggregationKind
* @see #getAggregation()
* @generated
*/
void setAggregation(AggregationKind value);
/**
* Returns the value of the '<em><b>Is Composite</b></em>' attribute.
* The default value is <code>"false"</code>.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute. This is a derived value, indicating whether the aggregation of the Property is composite or not.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Is Composite</em>' attribute.
* @see #setIsComposite(boolean)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_IsComposite()
* @model default="false" dataType="org.eclipse.uml2.types.Boolean" required="true" transient="true" volatile="true" derived="true" ordered="false"
* @generated
*/
boolean isComposite();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#isComposite <em>Is Composite</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Is Composite</em>' attribute.
* @see #isComposite()
* @generated
*/
void setIsComposite(boolean value);
/**
* Returns the value of the '<em><b>Class</b></em>' reference.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.NamedElement#getNamespace() <em>Namespace</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.Feature#getFeaturingClassifiers() <em>Featuring Classifier</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.RedefinableElement#getRedefinitionContexts() <em>Redefinition Context</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The Class that owns this Property, if any.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Class</em>' reference.
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_Class()
* @model transient="true" changeable="false" volatile="true" ordered="false"
* @generated
*/
org.eclipse.uml2.uml.Class getClass_();
/**
* Returns the value of the '<em><b>Redefined Property</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Property}.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.RedefinableElement#getRedefinedElements() <em>Redefined Element</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The properties that are redefined by this property, if any.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Redefined Property</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_RedefinedProperty()
* @model ordered="false"
* @generated
*/
EList<Property> getRedefinedProperties();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Redefined Property</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getRedefinedProperties()
* @generated
*/
Property getRedefinedProperty(String name, Type type);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Redefined Property</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getRedefinedProperties()
* @generated
*/
Property getRedefinedProperty(String name, Type type, boolean ignoreCase,
EClass eClass);
/**
* Returns the value of the '<em><b>Owning Association</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Association#getOwnedEnds <em>Owned End</em>}'.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.Feature#getFeaturingClassifiers() <em>Featuring Classifier</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.NamedElement#getNamespace() <em>Namespace</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.Property#getAssociation() <em>Association</em>}'</li>
* <li>'{@link org.eclipse.uml2.uml.RedefinableElement#getRedefinitionContexts() <em>Redefinition Context</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The owning association of this property, if any.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Owning Association</em>' container reference.
* @see #setOwningAssociation(Association)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_OwningAssociation()
* @see org.eclipse.uml2.uml.Association#getOwnedEnds
* @model opposite="ownedEnd" transient="false" ordered="false"
* @generated
*/
Association getOwningAssociation();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getOwningAssociation <em>Owning Association</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Owning Association</em>' container reference.
* @see #getOwningAssociation()
* @generated
*/
void setOwningAssociation(Association value);
/**
* Returns the value of the '<em><b>Association</b></em>' reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Association#getMemberEnds <em>Member End</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The Association of which this Property is a member, if any.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Association</em>' reference.
* @see #setAssociation(Association)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_Association()
* @see org.eclipse.uml2.uml.Association#getMemberEnds
* @model opposite="memberEnd" ordered="false"
* @generated
*/
Association getAssociation();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getAssociation <em>Association</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Association</em>' reference.
* @see #getAssociation()
* @generated
*/
void setAssociation(Association value);
/**
* Returns the value of the '<em><b>Default Value</b></em>' containment reference.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.Element#getOwnedElements() <em>Owned Element</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A ValueSpecification that is evaluated to give a default value for the Property when an instance of the owning Classifier is instantiated.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Default Value</em>' containment reference.
* @see #setDefaultValue(ValueSpecification)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_DefaultValue()
* @model containment="true" resolveProxies="true" ordered="false"
* @generated
*/
ValueSpecification getDefaultValue();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getDefaultValue <em>Default Value</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Default Value</em>' containment reference.
* @see #getDefaultValue()
* @generated
*/
void setDefaultValue(ValueSpecification value);
/**
* Creates a new {@link org.eclipse.uml2.uml.ValueSpecification}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and sets the '<em><b>Default Value</b></em>' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.ValueSpecification}, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' for the new {@link org.eclipse.uml2.uml.ValueSpecification}, or <code>null</code>.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.ValueSpecification} to create.
* @return The new {@link org.eclipse.uml2.uml.ValueSpecification}.
* @see #getDefaultValue()
* @generated
*/
ValueSpecification createDefaultValue(String name, Type type, EClass eClass);
/**
* Returns the value of the '<em><b>Opposite</b></em>' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* In the case where the Property is one end of a binary association this gives the other end.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Opposite</em>' reference.
* @see #setOpposite(Property)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_Opposite()
* @model transient="true" volatile="true" derived="true" ordered="false"
* @generated
*/
Property getOpposite();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getOpposite <em>Opposite</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Opposite</em>' reference.
* @see #getOpposite()
* @generated
*/
void setOpposite(Property value);
/**
* Returns the value of the '<em><b>Subsetted Property</b></em>' reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Property}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The properties of which this Property is constrained to be a subset, if any.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Subsetted Property</em>' reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_SubsettedProperty()
* @model ordered="false"
* @generated
*/
EList<Property> getSubsettedProperties();
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Subsetted Property</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getSubsettedProperties()
* @generated
*/
Property getSubsettedProperty(String name, Type type);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Subsetted Property</b></em>' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getSubsettedProperties()
* @generated
*/
Property getSubsettedProperty(String name, Type type, boolean ignoreCase,
EClass eClass);
/**
* Returns the value of the '<em><b>Qualifier</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.uml2.uml.Property}.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Property#getAssociationEnd <em>Association End</em>}'.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.Element#getOwnedElements() <em>Owned Element</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* An optional list of ordered qualifier attributes for the end.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Qualifier</em>' containment reference list.
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_Qualifier()
* @see org.eclipse.uml2.uml.Property#getAssociationEnd
* @model opposite="associationEnd" containment="true" resolveProxies="true"
* @generated
*/
EList<Property> getQualifiers();
/**
* Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Qualifier</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.Property}, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' for the new {@link org.eclipse.uml2.uml.Property}, or <code>null</code>.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Property} to create.
* @return The new {@link org.eclipse.uml2.uml.Property}.
* @see #getQualifiers()
* @generated
*/
Property createQualifier(String name, Type type, EClass eClass);
/**
* Creates a new {@link org.eclipse.uml2.uml.Property}, with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', and appends it to the '<em><b>Qualifier</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' for the new {@link org.eclipse.uml2.uml.Property}, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' for the new {@link org.eclipse.uml2.uml.Property}, or <code>null</code>.
* @return The new {@link org.eclipse.uml2.uml.Property}.
* @see #getQualifiers()
* @generated
*/
Property createQualifier(String name, Type type);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Qualifier</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getQualifiers()
* @generated
*/
Property getQualifier(String name, Type type);
/**
* Retrieves the first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>' from the '<em><b>Qualifier</b></em>' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param name The '<em><b>Name</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param type The '<em><b>Type</b></em>' of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param ignoreCase Whether to ignore case in {@link java.lang.String} comparisons.
* @param eClass The Ecore class of the {@link org.eclipse.uml2.uml.Property} to retrieve, or <code>null</code>.
* @param createOnDemand Whether to create a {@link org.eclipse.uml2.uml.Property} on demand if not found.
* @return The first {@link org.eclipse.uml2.uml.Property} with the specified '<em><b>Name</b></em>', and '<em><b>Type</b></em>', or <code>null</code>.
* @see #getQualifiers()
* @generated
*/
Property getQualifier(String name, Type type, boolean ignoreCase,
EClass eClass, boolean createOnDemand);
/**
* Returns the value of the '<em><b>Association End</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.uml2.uml.Property#getQualifiers <em>Qualifier</em>}'.
* <p>
* This feature subsets the following features:
* <ul>
* <li>'{@link org.eclipse.uml2.uml.Element#getOwner() <em>Owner</em>}'</li>
* </ul>
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Designates the optional association end that owns a qualifier attribute.
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @return the value of the '<em>Association End</em>' container reference.
* @see #setAssociationEnd(Property)
* @see org.eclipse.uml2.uml.UMLPackage#getProperty_AssociationEnd()
* @see org.eclipse.uml2.uml.Property#getQualifiers
* @model opposite="qualifier" transient="false" ordered="false"
* @generated
*/
Property getAssociationEnd();
/**
* Sets the value of the '{@link org.eclipse.uml2.uml.Property#getAssociationEnd <em>Association End</em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Association End</em>' container reference.
* @see #getAssociationEnd()
* @generated
*/
void setAssociationEnd(Property value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A multiplicity on the composing end of a composite aggregation must not have an upper bound greater than 1.
* isComposite and association <> null implies opposite.upperBound() <= 1
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateMultiplicityOfComposite(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.
* subsettedProperty->notEmpty() implies
* (subsettingContext()->notEmpty() and subsettingContext()->forAll (sc |
* subsettedProperty->forAll(sp |
* sp.subsettingContext()->exists(c | sc.conformsTo(c)))))
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateSubsettingContextConforms(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A redefined Property must be inherited from a more general Classifier.
* (redefinedProperty->notEmpty()) implies
* (redefinitionContext->notEmpty() and
* redefinedProperty->forAll(rp|
* ((redefinitionContext->collect(fc|
* fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp)))
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateRedefinedPropertyInherited(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A subsetting Property may strengthen the type of the subsetted Property, and its upper bound may be less.
* subsettedProperty->forAll(sp |
* self.type.conformsTo(sp.type) and
* ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies
* self.upperBound() <= sp.upperBound() ))
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateSubsettingRules(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A derived union is derived.
* isDerivedUnion implies isDerived
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateDerivedUnionIsDerived(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A derived union is read only.
* isDerivedUnion implies isReadOnly
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateDerivedUnionIsReadOnly(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A Property may not subset a Property with the same name.
* subsettedProperty->forAll(sp | sp.name <> name)
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateSubsettedPropertyNames(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* If a Property is a classifier-owned end of a binary Association, its owner must be the type of the opposite end.
* (opposite->notEmpty() and owningAssociation->isEmpty()) implies classifier = opposite.type
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateTypeOfOppositeEnd(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* All qualified Properties must be Association ends
* qualifier->notEmpty() implies association->notEmpty()
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateQualifiedIsAssociationEnd(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.
* deployment->notEmpty() implies owner.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p = self))
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateDeploymentTarget(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* A binding of a PropertyTemplateParameter representing an attribute must be to an attribute.
* (self.isAttribute()
* and (templateParameterSubstitution->notEmpty())
* implies (templateParameterSubstitution->forAll(ts |
* ts.formal.oclIsKindOf(Property)
* and ts.formal.oclAsType(Property).isAttribute())))
* @param diagnostics The chain of diagnostics to which problems are to be appended.
* @param context The cache of context-specific information.
* <!-- end-model-doc -->
* @model
* @generated
*/
boolean validateBindingToAttribute(DiagnosticChain diagnostics,
Map<Object, Object> context);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the navigability of this property as indicated.
* @param isNavigable The new navigability.
* <!-- end-model-doc -->
* @model isNavigableDataType="org.eclipse.uml2.types.Boolean" isNavigableRequired="true" isNavigableOrdered="false"
* @generated
*/
void setIsNavigable(boolean isNavigable);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Retrieves the other end of the (binary) association in which this property is a member end.
* <!-- end-model-doc -->
* @model kind="operation" ordered="false"
* @generated
*/
Property getOtherEnd();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the default value for this property to the specified Boolean value.
* @param value The new default value.
* <!-- end-model-doc -->
* @model valueDataType="org.eclipse.uml2.types.Boolean" valueRequired="true" valueOrdered="false"
* @generated
*/
void setBooleanDefaultValue(boolean value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the default value for this property to the specified integer value.
* @param value The new default value.
* <!-- end-model-doc -->
* @model valueDataType="org.eclipse.uml2.types.Integer" valueRequired="true" valueOrdered="false"
* @generated
*/
void setIntegerDefaultValue(int value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the default value for this property to the specified string value.
* @param value The new default value.
* <!-- end-model-doc -->
* @model valueDataType="org.eclipse.uml2.types.String" valueRequired="true" valueOrdered="false"
* @generated
*/
void setStringDefaultValue(String value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the default value for this property to the specified unlimited natural value.
* @param value The new default value.
* <!-- end-model-doc -->
* @model valueDataType="org.eclipse.uml2.types.UnlimitedNatural" valueRequired="true" valueOrdered="false"
* @generated
*/
void setUnlimitedNaturalDefaultValue(int value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query isAttribute() is true if the Property is defined as an attribute of some Classifier.
* result = (not classifier->isEmpty())
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @model kind="operation" dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
* @generated
*/
boolean isAttribute();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the default value for this property to the null value.
* <!-- end-model-doc -->
* @model
* @generated
*/
void setNullDefaultValue();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* Sets the default value for this property to the specified real value.
* @param value The new default value.
* <!-- end-model-doc -->
* @model valueDataType="org.eclipse.uml2.types.Real" valueRequired="true" valueOrdered="false"
* @generated
*/
void setRealDefaultValue(double value);
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query subsettingContext() gives the context for subsetting a Property. It consists, in the case of an attribute, of the corresponding Classifier, and in the case of an association end, all of the Classifiers at the other ends.
* result = (if association <> null
* then association.memberEnd->excluding(self)->collect(type)->asSet()
* else
* if classifier<>null
* then classifier->asSet()
* else Set{}
* endif
* endif)
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @model ordered="false"
* @generated
*/
EList<Type> subsettingContext();
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* <!-- begin-model-doc -->
* The query isNavigable() indicates whether it is possible to navigate across the property.
* result = (not classifier->isEmpty() or association.navigableOwnedEnd->includes(self))
* <p>From package UML::Classification.</p>
* <!-- end-model-doc -->
* @model kind="operation" dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
* @generated
*/
boolean isNavigable();
} // Property