blob: 3c28870143885c73cce91abe0dd1b1a83c353375 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2018 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* SAP AG - initial API and implementation
******************************************************************************
*/
package data.classes;
import abapmapping.AbapAssociationImplementationAnnotation;
import data.timedependency.TimeDependency;
import modelmanagement.NamedElement;
import org.eclipse.emf.common.util.EList;
/**
* <!-- begin-user-doc -->
* A representation of the model object '<em><b>Association</b></em>'.
* <!-- end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link data.classes.Association#getEnds <em>Ends</em>}</li>
* <li>{@link data.classes.Association#getPackage_ <em>Package </em>}</li>
* <li>{@link data.classes.Association#getTimeDependency <em>Time Dependency</em>}</li>
* <li>{@link data.classes.Association#getAbapAnnotation <em>Abap Annotation</em>}</li>
* </ul>
* </p>
*
* @see data.classes.ClassesPackage#getAssociation()
* @model annotation="http://www.eclipse.org/emf/2002/Ecore/OCL UniquenessOnBothEndsMustBeTheSame='self.ends->forAll( e1, e2 : AssociationEnd |\r\n e1 <> e2 implies e1.type.unique = e2.type.unique)' AtMostOneCompositeEnd='self.ends->select(composite)->size() < 2' AtLeastOneNavigableEnd='self.ends->select(ae:AssociationEnd | ae.navigable)->notEmpty()' AtMostOneEqualityContributionForTwoValueClasses='self.ends->select(contributesToEquality and type.clazz.valueType)->size() < 2' AtMostOneOrderedEnd='self.ends->select(ae|ae.type.ordered)->size() < 2'"
* annotation="http://www.eclipse.org/emf/2002/Ecore constraints='UniquenessOnBothEndsMustBeTheSame AtMostOneCompositeEnd AtLeastOneNavigableEnd AtMostOneEqualityContributionForTwoValueClasses AtMostOneOrderedEnd'"
* @generated
*/
public interface Association extends NamedElement {
/**
* Returns the value of the '<em><b>Ends</b></em>' containment reference list.
* The list contents are of type {@link data.classes.AssociationEnd}.
* It is bidirectional and its opposite is '{@link data.classes.AssociationEnd#getAssociation <em>Association</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Ends</em>' containment reference list isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Ends</em>' containment reference list.
* @see data.classes.ClassesPackage#getAssociation_Ends()
* @see data.classes.AssociationEnd#getAssociation
* @model opposite="association" containment="true" resolveProxies="true" lower="2" upper="2"
* @generated
*/
EList<AssociationEnd> getEnds();
/**
* Returns the value of the '<em><b>Package </b></em>' container reference.
* It is bidirectional and its opposite is '{@link modelmanagement.Package#getAssociations <em>Associations</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Package </em>' container reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Package </em>' container reference.
* @see #setPackage_(modelmanagement.Package)
* @see data.classes.ClassesPackage#getAssociation_Package_()
* @see modelmanagement.Package#getAssociations
* @model opposite="associations" required="true"
* @generated
*/
modelmanagement.Package getPackage_();
/**
* Sets the value of the '{@link data.classes.Association#getPackage_ <em>Package </em>}' container reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Package </em>' container reference.
* @see #getPackage_()
* @generated
*/
void setPackage_(modelmanagement.Package value);
/**
* Returns the value of the '<em><b>Time Dependency</b></em>' containment reference.
* It is bidirectional and its opposite is '{@link data.timedependency.TimeDependency#getAssociation <em>Association</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Time Dependency</em>' containment reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Time Dependency</em>' containment reference.
* @see #setTimeDependency(TimeDependency)
* @see data.classes.ClassesPackage#getAssociation_TimeDependency()
* @see data.timedependency.TimeDependency#getAssociation
* @model opposite="association" containment="true" resolveProxies="true"
* @generated
*/
TimeDependency getTimeDependency();
/**
* Sets the value of the '{@link data.classes.Association#getTimeDependency <em>Time Dependency</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Time Dependency</em>' containment reference.
* @see #getTimeDependency()
* @generated
*/
void setTimeDependency(TimeDependency value);
/**
* Returns the value of the '<em><b>Abap Annotation</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Abap Annotation</em>' reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Abap Annotation</em>' reference.
* @see #setAbapAnnotation(AbapAssociationImplementationAnnotation)
* @see data.classes.ClassesPackage#getAssociation_AbapAnnotation()
* @model
* @generated
*/
AbapAssociationImplementationAnnotation getAbapAnnotation();
/**
* Sets the value of the '{@link data.classes.Association#getAbapAnnotation <em>Abap Annotation</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Abap Annotation</em>' reference.
* @see #getAbapAnnotation()
* @generated
*/
void setAbapAnnotation(AbapAssociationImplementationAnnotation value);
} // Association