blob: 5356e701d037c94318847c51096d3ade9802fbb0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 Oracle. 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:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.eclipselink.core.resource.orm;
import java.util.Collection;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EObjectContainmentEList;
import org.eclipse.emf.ecore.util.InternalEList;
/**
* <!-- begin-user-doc -->
*
* A representation of the model object '<em><b>Xml Embeddable</b></em>'.
*
* Provisional API: This interface is part of an interim API that is still
* under development and expected to change significantly before reaching
* stability. It is available at this early stage to solicit feedback from
* pioneering adopters on the understanding that any code that uses this API
* will almost certainly be broken (repeatedly) as the API evolves.
*
* @version 2.1
* @since 2.1
*
* <!-- end-user-doc -->
*
* @see org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmPackage#getXmlEmbeddable()
* @model kind="class"
* @generated
*/
public class XmlEmbeddable extends org.eclipse.jpt.core.resource.orm.XmlEmbeddable implements XmlCustomizerHolder, XmlChangeTrackingHolder, XmlConvertersHolder
{
/**
* The cached value of the '{@link #getCustomizer() <em>Customizer</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getCustomizer()
* @generated
* @ordered
*/
protected XmlCustomizer customizer;
/**
* The cached value of the '{@link #getChangeTracking() <em>Change Tracking</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getChangeTracking()
* @generated
* @ordered
*/
protected XmlChangeTracking changeTracking;
/**
* The cached value of the '{@link #getConverters() <em>Converters</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getConverters()
* @generated
* @ordered
*/
protected EList<XmlConverter> converters;
/**
* The cached value of the '{@link #getTypeConverters() <em>Type Converters</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getTypeConverters()
* @generated
* @ordered
*/
protected EList<XmlTypeConverter> typeConverters;
/**
* The cached value of the '{@link #getObjectTypeConverters() <em>Object Type Converters</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getObjectTypeConverters()
* @generated
* @ordered
*/
protected EList<XmlObjectTypeConverter> objectTypeConverters;
/**
* The cached value of the '{@link #getStructConverters() <em>Struct Converters</em>}' containment reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getStructConverters()
* @generated
* @ordered
*/
protected EList<XmlStructConverter> structConverters;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected XmlEmbeddable()
{
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass()
{
return EclipseLinkOrmPackage.Literals.XML_EMBEDDABLE;
}
/**
* Returns the value of the '<em><b>Customizer</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Customizer</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>Customizer</em>' containment reference.
* @see #setCustomizer(XmlCustomizer)
* @see org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmPackage#getXmlCustomizerHolder_Customizer()
* @model containment="true"
* @generated
*/
public XmlCustomizer getCustomizer()
{
return customizer;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetCustomizer(XmlCustomizer newCustomizer, NotificationChain msgs)
{
XmlCustomizer oldCustomizer = customizer;
customizer = newCustomizer;
if (eNotificationRequired())
{
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER, oldCustomizer, newCustomizer);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* Sets the value of the '{@link org.eclipse.jpt.eclipselink.core.resource.orm.XmlEmbeddable#getCustomizer <em>Customizer</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Customizer</em>' containment reference.
* @see #getCustomizer()
* @generated
*/
public void setCustomizer(XmlCustomizer newCustomizer)
{
if (newCustomizer != customizer)
{
NotificationChain msgs = null;
if (customizer != null)
msgs = ((InternalEObject)customizer).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER, null, msgs);
if (newCustomizer != null)
msgs = ((InternalEObject)newCustomizer).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER, null, msgs);
msgs = basicSetCustomizer(newCustomizer, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER, newCustomizer, newCustomizer));
}
/**
* Returns the value of the '<em><b>Change Tracking</b></em>' containment reference.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Change Tracking</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>Change Tracking</em>' containment reference.
* @see #setChangeTracking(XmlChangeTracking)
* @see org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmPackage#getXmlChangeTrackingHolder_ChangeTracking()
* @model containment="true"
* @generated
*/
public XmlChangeTracking getChangeTracking()
{
return changeTracking;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetChangeTracking(XmlChangeTracking newChangeTracking, NotificationChain msgs)
{
XmlChangeTracking oldChangeTracking = changeTracking;
changeTracking = newChangeTracking;
if (eNotificationRequired())
{
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING, oldChangeTracking, newChangeTracking);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* Sets the value of the '{@link org.eclipse.jpt.eclipselink.core.resource.orm.XmlEmbeddable#getChangeTracking <em>Change Tracking</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @param value the new value of the '<em>Change Tracking</em>' containment reference.
* @see #getChangeTracking()
* @generated
*/
public void setChangeTracking(XmlChangeTracking newChangeTracking)
{
if (newChangeTracking != changeTracking)
{
NotificationChain msgs = null;
if (changeTracking != null)
msgs = ((InternalEObject)changeTracking).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING, null, msgs);
if (newChangeTracking != null)
msgs = ((InternalEObject)newChangeTracking).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING, null, msgs);
msgs = basicSetChangeTracking(newChangeTracking, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING, newChangeTracking, newChangeTracking));
}
/**
* Returns the value of the '<em><b>Converters</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.jpt.eclipselink.core.resource.orm.XmlConverter}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Converters</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>Converters</em>' containment reference list.
* @see org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmPackage#getXmlConvertersHolder_Converters()
* @model containment="true"
* @generated
*/
public EList<XmlConverter> getConverters()
{
if (converters == null)
{
converters = new EObjectContainmentEList<XmlConverter>(XmlConverter.class, this, EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS);
}
return converters;
}
/**
* Returns the value of the '<em><b>Type Converters</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.jpt.eclipselink.core.resource.orm.XmlTypeConverter}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Type Converters</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>Type Converters</em>' containment reference list.
* @see org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmPackage#getXmlConvertersHolder_TypeConverters()
* @model containment="true"
* @generated
*/
public EList<XmlTypeConverter> getTypeConverters()
{
if (typeConverters == null)
{
typeConverters = new EObjectContainmentEList<XmlTypeConverter>(XmlTypeConverter.class, this, EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS);
}
return typeConverters;
}
/**
* Returns the value of the '<em><b>Object Type Converters</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.jpt.eclipselink.core.resource.orm.XmlObjectTypeConverter}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Object Type Converters</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>Object Type Converters</em>' containment reference list.
* @see org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmPackage#getXmlConvertersHolder_ObjectTypeConverters()
* @model containment="true"
* @generated
*/
public EList<XmlObjectTypeConverter> getObjectTypeConverters()
{
if (objectTypeConverters == null)
{
objectTypeConverters = new EObjectContainmentEList<XmlObjectTypeConverter>(XmlObjectTypeConverter.class, this, EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS);
}
return objectTypeConverters;
}
/**
* Returns the value of the '<em><b>Struct Converters</b></em>' containment reference list.
* The list contents are of type {@link org.eclipse.jpt.eclipselink.core.resource.orm.XmlStructConverter}.
* <!-- begin-user-doc -->
* <p>
* If the meaning of the '<em>Struct Converters</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>Struct Converters</em>' containment reference list.
* @see org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmPackage#getXmlConvertersHolder_StructConverters()
* @model containment="true"
* @generated
*/
public EList<XmlStructConverter> getStructConverters()
{
if (structConverters == null)
{
structConverters = new EObjectContainmentEList<XmlStructConverter>(XmlStructConverter.class, this, EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS);
}
return structConverters;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
{
switch (featureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER:
return basicSetCustomizer(null, msgs);
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING:
return basicSetChangeTracking(null, msgs);
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS:
return ((InternalEList<?>)getConverters()).basicRemove(otherEnd, msgs);
case EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS:
return ((InternalEList<?>)getTypeConverters()).basicRemove(otherEnd, msgs);
case EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS:
return ((InternalEList<?>)getObjectTypeConverters()).basicRemove(otherEnd, msgs);
case EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS:
return ((InternalEList<?>)getStructConverters()).basicRemove(otherEnd, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType)
{
switch (featureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER:
return getCustomizer();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING:
return getChangeTracking();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS:
return getConverters();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS:
return getTypeConverters();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS:
return getObjectTypeConverters();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS:
return getStructConverters();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(int featureID, Object newValue)
{
switch (featureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER:
setCustomizer((XmlCustomizer)newValue);
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING:
setChangeTracking((XmlChangeTracking)newValue);
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS:
getConverters().clear();
getConverters().addAll((Collection<? extends XmlConverter>)newValue);
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS:
getTypeConverters().clear();
getTypeConverters().addAll((Collection<? extends XmlTypeConverter>)newValue);
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS:
getObjectTypeConverters().clear();
getObjectTypeConverters().addAll((Collection<? extends XmlObjectTypeConverter>)newValue);
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS:
getStructConverters().clear();
getStructConverters().addAll((Collection<? extends XmlStructConverter>)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID)
{
switch (featureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER:
setCustomizer((XmlCustomizer)null);
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING:
setChangeTracking((XmlChangeTracking)null);
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS:
getConverters().clear();
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS:
getTypeConverters().clear();
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS:
getObjectTypeConverters().clear();
return;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS:
getStructConverters().clear();
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID)
{
switch (featureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER:
return customizer != null;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING:
return changeTracking != null;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS:
return converters != null && !converters.isEmpty();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS:
return typeConverters != null && !typeConverters.isEmpty();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS:
return objectTypeConverters != null && !objectTypeConverters.isEmpty();
case EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS:
return structConverters != null && !structConverters.isEmpty();
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass)
{
if (baseClass == XmlCustomizerHolder.class)
{
switch (derivedFeatureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER: return EclipseLinkOrmPackage.XML_CUSTOMIZER_HOLDER__CUSTOMIZER;
default: return -1;
}
}
if (baseClass == XmlChangeTrackingHolder.class)
{
switch (derivedFeatureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING: return EclipseLinkOrmPackage.XML_CHANGE_TRACKING_HOLDER__CHANGE_TRACKING;
default: return -1;
}
}
if (baseClass == XmlConvertersHolder.class)
{
switch (derivedFeatureID)
{
case EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS: return EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__CONVERTERS;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS: return EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__TYPE_CONVERTERS;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS: return EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__OBJECT_TYPE_CONVERTERS;
case EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS: return EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__STRUCT_CONVERTERS;
default: return -1;
}
}
return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass)
{
if (baseClass == XmlCustomizerHolder.class)
{
switch (baseFeatureID)
{
case EclipseLinkOrmPackage.XML_CUSTOMIZER_HOLDER__CUSTOMIZER: return EclipseLinkOrmPackage.XML_EMBEDDABLE__CUSTOMIZER;
default: return -1;
}
}
if (baseClass == XmlChangeTrackingHolder.class)
{
switch (baseFeatureID)
{
case EclipseLinkOrmPackage.XML_CHANGE_TRACKING_HOLDER__CHANGE_TRACKING: return EclipseLinkOrmPackage.XML_EMBEDDABLE__CHANGE_TRACKING;
default: return -1;
}
}
if (baseClass == XmlConvertersHolder.class)
{
switch (baseFeatureID)
{
case EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__CONVERTERS: return EclipseLinkOrmPackage.XML_EMBEDDABLE__CONVERTERS;
case EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__TYPE_CONVERTERS: return EclipseLinkOrmPackage.XML_EMBEDDABLE__TYPE_CONVERTERS;
case EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__OBJECT_TYPE_CONVERTERS: return EclipseLinkOrmPackage.XML_EMBEDDABLE__OBJECT_TYPE_CONVERTERS;
case EclipseLinkOrmPackage.XML_CONVERTERS_HOLDER__STRUCT_CONVERTERS: return EclipseLinkOrmPackage.XML_EMBEDDABLE__STRUCT_CONVERTERS;
default: return -1;
}
}
return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
}
} // XmlEmbeddable