/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.talend.dataquality.domain.impl;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.NotificationChain;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.talend.dataquality.domain.DomainPackage;
import org.talend.dataquality.domain.LiteralValue;
import org.talend.dataquality.domain.RangeRestriction;
import org.talend.dataquality.expressions.BooleanExpressionNode;
import orgomg.cwm.objectmodel.core.impl.ModelElementImpl;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Range Restriction</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.talend.dataquality.domain.impl.RangeRestrictionImpl#getLowerValue <em>Lower Value</em>}</li>
* <li>{@link org.talend.dataquality.domain.impl.RangeRestrictionImpl#getUpperValue <em>Upper Value</em>}</li>
* <li>{@link org.talend.dataquality.domain.impl.RangeRestrictionImpl#getExpressions <em>Expressions</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class RangeRestrictionImpl extends ModelElementImpl implements RangeRestriction {
/**
* The cached value of the '{@link #getLowerValue() <em>Lower Value</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getLowerValue()
* @generated
* @ordered
*/
protected LiteralValue lowerValue;
/**
* The cached value of the '{@link #getUpperValue() <em>Upper Value</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getUpperValue()
* @generated
* @ordered
*/
protected LiteralValue upperValue;
/**
* The cached value of the '{@link #getExpressions() <em>Expressions</em>}' containment reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getExpressions()
* @generated
* @ordered
*/
protected BooleanExpressionNode expressions;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected RangeRestrictionImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return DomainPackage.Literals.RANGE_RESTRICTION;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public LiteralValue getLowerValue() {
return lowerValue;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetLowerValue(LiteralValue newLowerValue, NotificationChain msgs) {
LiteralValue oldLowerValue = lowerValue;
lowerValue = newLowerValue;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DomainPackage.RANGE_RESTRICTION__LOWER_VALUE, oldLowerValue, newLowerValue);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setLowerValue(LiteralValue newLowerValue) {
if (newLowerValue != lowerValue) {
NotificationChain msgs = null;
if (lowerValue != null)
msgs = ((InternalEObject)lowerValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DomainPackage.RANGE_RESTRICTION__LOWER_VALUE, null, msgs);
if (newLowerValue != null)
msgs = ((InternalEObject)newLowerValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DomainPackage.RANGE_RESTRICTION__LOWER_VALUE, null, msgs);
msgs = basicSetLowerValue(newLowerValue, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.RANGE_RESTRICTION__LOWER_VALUE, newLowerValue, newLowerValue));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public LiteralValue getUpperValue() {
return upperValue;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetUpperValue(LiteralValue newUpperValue, NotificationChain msgs) {
LiteralValue oldUpperValue = upperValue;
upperValue = newUpperValue;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DomainPackage.RANGE_RESTRICTION__UPPER_VALUE, oldUpperValue, newUpperValue);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setUpperValue(LiteralValue newUpperValue) {
if (newUpperValue != upperValue) {
NotificationChain msgs = null;
if (upperValue != null)
msgs = ((InternalEObject)upperValue).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DomainPackage.RANGE_RESTRICTION__UPPER_VALUE, null, msgs);
if (newUpperValue != null)
msgs = ((InternalEObject)newUpperValue).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DomainPackage.RANGE_RESTRICTION__UPPER_VALUE, null, msgs);
msgs = basicSetUpperValue(newUpperValue, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.RANGE_RESTRICTION__UPPER_VALUE, newUpperValue, newUpperValue));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public BooleanExpressionNode getExpressions() {
return expressions;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetExpressions(BooleanExpressionNode newExpressions, NotificationChain msgs) {
BooleanExpressionNode oldExpressions = expressions;
expressions = newExpressions;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, DomainPackage.RANGE_RESTRICTION__EXPRESSIONS, oldExpressions, newExpressions);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setExpressions(BooleanExpressionNode newExpressions) {
if (newExpressions != expressions) {
NotificationChain msgs = null;
if (expressions != null)
msgs = ((InternalEObject)expressions).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - DomainPackage.RANGE_RESTRICTION__EXPRESSIONS, null, msgs);
if (newExpressions != null)
msgs = ((InternalEObject)newExpressions).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - DomainPackage.RANGE_RESTRICTION__EXPRESSIONS, null, msgs);
msgs = basicSetExpressions(newExpressions, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, DomainPackage.RANGE_RESTRICTION__EXPRESSIONS, newExpressions, newExpressions));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case DomainPackage.RANGE_RESTRICTION__LOWER_VALUE:
return basicSetLowerValue(null, msgs);
case DomainPackage.RANGE_RESTRICTION__UPPER_VALUE:
return basicSetUpperValue(null, msgs);
case DomainPackage.RANGE_RESTRICTION__EXPRESSIONS:
return basicSetExpressions(null, 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 DomainPackage.RANGE_RESTRICTION__LOWER_VALUE:
return getLowerValue();
case DomainPackage.RANGE_RESTRICTION__UPPER_VALUE:
return getUpperValue();
case DomainPackage.RANGE_RESTRICTION__EXPRESSIONS:
return getExpressions();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case DomainPackage.RANGE_RESTRICTION__LOWER_VALUE:
setLowerValue((LiteralValue)newValue);
return;
case DomainPackage.RANGE_RESTRICTION__UPPER_VALUE:
setUpperValue((LiteralValue)newValue);
return;
case DomainPackage.RANGE_RESTRICTION__EXPRESSIONS:
setExpressions((BooleanExpressionNode)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case DomainPackage.RANGE_RESTRICTION__LOWER_VALUE:
setLowerValue((LiteralValue)null);
return;
case DomainPackage.RANGE_RESTRICTION__UPPER_VALUE:
setUpperValue((LiteralValue)null);
return;
case DomainPackage.RANGE_RESTRICTION__EXPRESSIONS:
setExpressions((BooleanExpressionNode)null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case DomainPackage.RANGE_RESTRICTION__LOWER_VALUE:
return lowerValue != null;
case DomainPackage.RANGE_RESTRICTION__UPPER_VALUE:
return upperValue != null;
case DomainPackage.RANGE_RESTRICTION__EXPRESSIONS:
return expressions != null;
}
return super.eIsSet(featureID);
}
} //RangeRestrictionImpl