/**
* <copyright>
* </copyright>
*
* $Id: PAnnotatedEClass.java,v 1.15 2008/01/18 06:20:56 mtaal Exp $
*/
package org.eclipse.emf.teneo.annotations.pamodel;
import java.util.List;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.teneo.annotations.pannotation.AssociationOverride;
import org.eclipse.emf.teneo.annotations.pannotation.AttributeOverride;
import org.eclipse.emf.teneo.annotations.pannotation.DiscriminatorColumn;
import org.eclipse.emf.teneo.annotations.pannotation.DiscriminatorValue;
import org.eclipse.emf.teneo.annotations.pannotation.Embeddable;
import org.eclipse.emf.teneo.annotations.pannotation.Entity;
import org.eclipse.emf.teneo.annotations.pannotation.IdClass;
import org.eclipse.emf.teneo.annotations.pannotation.Inheritance;
import org.eclipse.emf.teneo.annotations.pannotation.InheritanceType;
import org.eclipse.emf.teneo.annotations.pannotation.MappedSuperclass;
import org.eclipse.emf.teneo.annotations.pannotation.PrimaryKeyJoinColumn;
import org.eclipse.emf.teneo.annotations.pannotation.SecondaryTable;
import org.eclipse.emf.teneo.annotations.pannotation.Table;
import org.eclipse.emf.teneo.annotations.pannotation.TableGenerator;
/**
* <!-- begin-user-doc --> A representation of the model object '<em><b>PAnnotated EClass</b></em>'. <!--
* end-user-doc -->
*
* <p>
* The following features are supported:
* <ul>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getPaEPackage <em>Pa EPackage</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getModelEClass <em>Model EClass</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getPaEStructuralFeatures <em>Pa EStructural Features</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getAttributeOverrides <em>Attribute Overrides</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getDiscriminatorColumn <em>Discriminator Column</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getDiscriminatorValue <em>Discriminator Value</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getEmbeddable <em>Embeddable</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getMappedSuperclass <em>Mapped Superclass</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getEntity <em>Entity</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getIdClass <em>Id Class</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getInheritance <em>Inheritance</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getPrimaryKeyJoinColumns <em>Primary Key Join Columns</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getSecondaryTables <em>Secondary Tables</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getTable <em>Table</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getTableGenerator <em>Table Generator</em>}</li>
* <li>{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getAssociationOverrides <em>Association Overrides</em>}</li>
* </ul>
* </p>
*
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass()
* @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='SameEFeatures EPackageCommutes ProperPrimaryKey EntityOrEmbeddableOrMappedSuper\tOverriddenAreDefined ProperInheritance ProperDiscriminator SingleTableForSingleStrategy ProperPKJoin'"
* @generated
*/
public interface PAnnotatedEClass extends PAnnotatedEModelElement {
/**
* Returns the value of the '<em><b>Pa EPackage</b></em>' container reference.
* It is bidirectional and its opposite is '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEPackage#getPaEClasses <em>Pa EClasses</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Pa EPackage</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>Pa EPackage</em>' container reference.
* @see #setPaEPackage(PAnnotatedEPackage)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_PaEPackage()
* @see org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEPackage#getPaEClasses
* @model opposite="paEClasses" transient="false"
* annotation="teneo/internal/PersistenceMapping ignore='true'"
* @generated
*/
PAnnotatedEPackage getPaEPackage();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getPaEPackage <em>Pa EPackage</em>}' container reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Pa EPackage</em>' container reference.
* @see #getPaEPackage()
* @generated
*/
void setPaEPackage(PAnnotatedEPackage value);
/**
* Returns the value of the '<em><b>Model EClass</b></em>' reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Model EClass</em>' reference isn't clear,
* there really should be more of a description here...
* </p>
* <!-- end-user-doc -->
* @return the value of the '<em>Model EClass</em>' reference.
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_ModelEClass()
* @model transient="true" changeable="false" volatile="true"
* annotation="teneo/internal/PersistenceMapping ignore='true'"
* @generated
*/
EClass getModelEClass();
/**
* Returns the value of the '<em><b>Pa EStructural Features</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEStructuralFeature}.
* It is bidirectional and its opposite is '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEStructuralFeature#getPaEClass <em>Pa EClass</em>}'.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Pa EStructural Features</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>Pa EStructural Features</em>' containment reference list.
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_PaEStructuralFeatures()
* @see org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEStructuralFeature#getPaEClass
* @model opposite="paEClass" containment="true"
* annotation="teneo/internal/PersistenceMapping ignore='true'"
* @generated
*/
EList<PAnnotatedEStructuralFeature> getPaEStructuralFeatures();
/**
* Returns the value of the '<em><b>Attribute Overrides</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.teneo.annotations.pannotation.AttributeOverride}.
* <!-- begin-user-doc
* -->
* <p>
* If the meaning of the '<em>Attribute Overrides</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>Attribute Overrides</em>' containment reference list.
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_AttributeOverrides()
* @model containment="true"
* annotation="elver.jpa annotationName='AttributeOverrides' annotationClass='javax.persistence.AttributeOverrides'"
* @generated
*/
EList<AttributeOverride> getAttributeOverrides();
/**
* Returns the value of the '<em><b>Discriminator Column</b></em>' containment reference.
* <!-- begin-user-doc
* -->
* <p>
* If the meaning of the '<em>Discriminator Column</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>Discriminator Column</em>' containment reference.
* @see #setDiscriminatorColumn(DiscriminatorColumn)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_DiscriminatorColumn()
* @model containment="true"
* @generated
*/
DiscriminatorColumn getDiscriminatorColumn();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getDiscriminatorColumn <em>Discriminator Column</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Discriminator Column</em>' containment reference.
* @see #getDiscriminatorColumn()
* @generated
*/
void setDiscriminatorColumn(DiscriminatorColumn value);
/**
* Returns the value of the '<em><b>Discriminator Value</b></em>' containment reference.
* <!-- begin-user-doc
* -->
* <p>
* If the meaning of the '<em>Discriminator Value</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>Discriminator Value</em>' containment reference.
* @see #setDiscriminatorValue(DiscriminatorValue)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_DiscriminatorValue()
* @model containment="true"
* @generated
*/
DiscriminatorValue getDiscriminatorValue();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getDiscriminatorValue <em>Discriminator Value</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Discriminator Value</em>' containment reference.
* @see #getDiscriminatorValue()
* @generated
*/
void setDiscriminatorValue(DiscriminatorValue value);
/**
* Returns the value of the '<em><b>Embeddable</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Embeddable</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>Embeddable</em>' containment reference.
* @see #setEmbeddable(Embeddable)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_Embeddable()
* @model containment="true"
* @generated
*/
Embeddable getEmbeddable();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getEmbeddable <em>Embeddable</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Embeddable</em>' containment reference.
* @see #getEmbeddable()
* @generated
*/
void setEmbeddable(Embeddable value);
/**
* Returns the value of the '<em><b>Mapped Superclass</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Mapped Superclass</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>Mapped Superclass</em>' containment reference.
* @see #setMappedSuperclass(MappedSuperclass)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_MappedSuperclass()
* @model containment="true"
* @generated
*/
MappedSuperclass getMappedSuperclass();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getMappedSuperclass <em>Mapped Superclass</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Mapped Superclass</em>' containment reference.
* @see #getMappedSuperclass()
* @generated
*/
void setMappedSuperclass(MappedSuperclass value);
/**
* Returns the value of the '<em><b>Entity</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Entity</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>Entity</em>' containment reference.
* @see #setEntity(Entity)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_Entity()
* @model containment="true"
* @generated
*/
Entity getEntity();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getEntity <em>Entity</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Entity</em>' containment reference.
* @see #getEntity()
* @generated
*/
void setEntity(Entity value);
/**
* Returns the value of the '<em><b>Id Class</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Id Class</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>Id Class</em>' containment reference.
* @see #setIdClass(IdClass)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_IdClass()
* @model containment="true"
* @generated
*/
IdClass getIdClass();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getIdClass <em>Id Class</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Id Class</em>' containment reference.
* @see #getIdClass()
* @generated
*/
void setIdClass(IdClass value);
/**
* Returns the value of the '<em><b>Inheritance</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Inheritance</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>Inheritance</em>' containment reference.
* @see #setInheritance(Inheritance)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_Inheritance()
* @model containment="true"
* @generated
*/
Inheritance getInheritance();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getInheritance <em>Inheritance</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Inheritance</em>' containment reference.
* @see #getInheritance()
* @generated
*/
void setInheritance(Inheritance value);
/**
* Returns the value of the '<em><b>Primary Key Join Columns</b></em>' containment reference. <!--
* begin-user-doc -->
* <p>
* If the meaning of the '<em>Primary Key Join Columns</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>Primary Key Join Columns</em>' containment reference.
* @see #setPrimaryKeyJoinColumns(PrimaryKeyJoinColumns)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_PrimaryKeyJoinColumns()
* @model containment="true"
* @generated
*/
EList<PrimaryKeyJoinColumn> getPrimaryKeyJoinColumns();
/**
* Returns the value of the '<em><b>Secondary Tables</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.teneo.annotations.pannotation.SecondaryTable}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Secondary Tables</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>Secondary Tables</em>' containment reference list.
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_SecondaryTables()
* @model containment="true"
* annotation="elver.jpa annotationName='SecondaryTables' annotationClass='javax.persistence.SecondaryTables'"
* @generated
*/
EList<SecondaryTable> getSecondaryTables();
/**
* Returns the value of the '<em><b>Table</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Table</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>Table</em>' containment reference.
* @see #setTable(Table)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_Table()
* @model containment="true"
* @generated
*/
Table getTable();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getTable <em>Table</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Table</em>' containment reference.
* @see #getTable()
* @generated
*/
void setTable(Table value);
/**
* Returns the value of the '<em><b>Table Generator</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Table Generator</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>Table Generator</em>' containment reference.
* @see #setTableGenerator(TableGenerator)
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_TableGenerator()
* @model containment="true"
* @generated
*/
TableGenerator getTableGenerator();
/**
* Sets the value of the '{@link org.eclipse.emf.teneo.annotations.pamodel.PAnnotatedEClass#getTableGenerator <em>Table Generator</em>}' containment reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @param value the new value of the '<em>Table Generator</em>' containment reference.
* @see #getTableGenerator()
* @generated
*/
void setTableGenerator(TableGenerator value);
/**
* Returns the value of the '<em><b>Association Overrides</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.emf.teneo.annotations.pannotation.AssociationOverride}.
* <!-- begin-user-doc
* -->
* <p>
* If the meaning of the '<em>Association Overrides</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>Association Overrides</em>' containment reference list.
* @see org.eclipse.emf.teneo.annotations.pamodel.PamodelPackage#getPAnnotatedEClass_AssociationOverrides()
* @model containment="true"
* annotation="elver.jpa annotationName='AssociationOverrides' annotationClass='javax.persistence.AssociationOverrides'"
* @generated
*/
EList<AssociationOverride> getAssociationOverrides();
/**
* @return Returns the List of PAnnotatedEAttributes belonging to this PAnnotatedEClass for which an Id PAnnotation
* is present.
*/
List<PAnnotatedEStructuralFeature> getPaIdFeatures();
/** Returns true if the eclass has an PAnnotatedEStructuralFeature with an id annotation */
boolean hasIdAnnotatedFeature();
/** Returns true if the eclass has an PAnnotatedEStructuralFeature with an version annotation */
boolean hasVersionAnnotatedFeature();
/**
* @return Returns the PAnnotatedEntity that is MappedSuperclass of this PAnnotatedEClass, <code>null</code> if it
* has none. TODO support multiple mapped superclasses.
*/
List<PAnnotatedEClass> getPaMappedSupers();
/**
* @return Returns the PAnnotatedEntity that is a super entity of this PAnnotatedEClass, <code>null</code> if this
* is a root entity.
*/
PAnnotatedEClass getPaSuperEntity();
/**
* @param paSuperEntity the paSuperEntity to set
*/
void setPaSuperEntity(PAnnotatedEClass paSuperEntity);
/**
* @return Returns the inheritance strategy for this entity. If this element has an inheritance annotation, return
* the specified inheritance type; if this element has a superentity, returns the super entity inheritance
* type. In any other case returns SINGLE_TABLE.
*/
InheritanceType getInheritanceStrategy();
/** returns true if this EClass should be mapped as an entity or as a concrete class */
boolean isOnlyMapAsEntity();
/** sets if this eclass should be mapped as an entity */
void setOnlyMapAsEntity(boolean mapAsEntity);
} // PAnnotatedEClass