/**
* <copyright>
* </copyright>
*
* $Id: DStateSwitchImpl.java,v 1.1 2008/09/09 17:00:33 mgolubev Exp $
*/
package org.eclipse.uml2.diagram.timing.model.timingd.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.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.uml2.diagram.timing.model.timingd.DSegment;
import org.eclipse.uml2.diagram.timing.model.timingd.DSegmentEnd;
import org.eclipse.uml2.diagram.timing.model.timingd.DSegmentStart;
import org.eclipse.uml2.diagram.timing.model.timingd.DStateSwitch;
import org.eclipse.uml2.diagram.timing.model.timingd.DValueLine;
import org.eclipse.uml2.diagram.timing.model.timingd.TimingDPackage;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>DState Switch</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.eclipse.uml2.diagram.timing.model.timingd.impl.DStateSwitchImpl#getFromSegmentEnd <em>From Segment End</em>}</li>
* <li>{@link org.eclipse.uml2.diagram.timing.model.timingd.impl.DStateSwitchImpl#getToSegmentStart <em>To Segment Start</em>}</li>
* <li>{@link org.eclipse.uml2.diagram.timing.model.timingd.impl.DStateSwitchImpl#getFromSegment <em>From Segment</em>}</li>
* <li>{@link org.eclipse.uml2.diagram.timing.model.timingd.impl.DStateSwitchImpl#getToSegment <em>To Segment</em>}</li>
* <li>{@link org.eclipse.uml2.diagram.timing.model.timingd.impl.DStateSwitchImpl#getFromValueLine <em>From Value Line</em>}</li>
* <li>{@link org.eclipse.uml2.diagram.timing.model.timingd.impl.DStateSwitchImpl#getToValueLine <em>To Value Line</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class DStateSwitchImpl extends EObjectImpl implements DStateSwitch {
/**
* The cached value of the '{@link #getFromSegmentEnd() <em>From Segment End</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getFromSegmentEnd()
* @generated
* @ordered
*/
protected DSegmentEnd fromSegmentEnd;
/**
* The cached value of the '{@link #getToSegmentStart() <em>To Segment Start</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getToSegmentStart()
* @generated
* @ordered
*/
protected DSegmentStart toSegmentStart;
/**
* The cached value of the '{@link #getFromSegment() <em>From Segment</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getFromSegment()
* @generated
* @ordered
*/
protected DSegment fromSegment;
/**
* The cached value of the '{@link #getToSegment() <em>To Segment</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getToSegment()
* @generated
* @ordered
*/
protected DSegment toSegment;
/**
* The cached value of the '{@link #getFromValueLine() <em>From Value Line</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getFromValueLine()
* @generated
* @ordered
*/
protected DValueLine fromValueLine;
/**
* The cached value of the '{@link #getToValueLine() <em>To Value Line</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getToValueLine()
* @generated
* @ordered
*/
protected DValueLine toValueLine;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected DStateSwitchImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return TimingDPackage.Literals.DSTATE_SWITCH;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegmentEnd getFromSegmentEnd() {
if (fromSegmentEnd != null && fromSegmentEnd.eIsProxy()) {
InternalEObject oldFromSegmentEnd = (InternalEObject)fromSegmentEnd;
fromSegmentEnd = (DSegmentEnd)eResolveProxy(oldFromSegmentEnd);
if (fromSegmentEnd != oldFromSegmentEnd) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END, oldFromSegmentEnd, fromSegmentEnd));
}
}
return fromSegmentEnd;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegmentEnd basicGetFromSegmentEnd() {
return fromSegmentEnd;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetFromSegmentEnd(DSegmentEnd newFromSegmentEnd, NotificationChain msgs) {
DSegmentEnd oldFromSegmentEnd = fromSegmentEnd;
fromSegmentEnd = newFromSegmentEnd;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END, oldFromSegmentEnd, newFromSegmentEnd);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setFromSegmentEnd(DSegmentEnd newFromSegmentEnd) {
if (newFromSegmentEnd != fromSegmentEnd) {
NotificationChain msgs = null;
if (fromSegmentEnd != null)
msgs = ((InternalEObject)fromSegmentEnd).eInverseRemove(this, TimingDPackage.DSEGMENT_END__SWITCH, DSegmentEnd.class, msgs);
if (newFromSegmentEnd != null)
msgs = ((InternalEObject)newFromSegmentEnd).eInverseAdd(this, TimingDPackage.DSEGMENT_END__SWITCH, DSegmentEnd.class, msgs);
msgs = basicSetFromSegmentEnd(newFromSegmentEnd, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END, newFromSegmentEnd, newFromSegmentEnd));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegmentStart getToSegmentStart() {
if (toSegmentStart != null && toSegmentStart.eIsProxy()) {
InternalEObject oldToSegmentStart = (InternalEObject)toSegmentStart;
toSegmentStart = (DSegmentStart)eResolveProxy(oldToSegmentStart);
if (toSegmentStart != oldToSegmentStart) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START, oldToSegmentStart, toSegmentStart));
}
}
return toSegmentStart;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegmentStart basicGetToSegmentStart() {
return toSegmentStart;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetToSegmentStart(DSegmentStart newToSegmentStart, NotificationChain msgs) {
DSegmentStart oldToSegmentStart = toSegmentStart;
toSegmentStart = newToSegmentStart;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START, oldToSegmentStart, newToSegmentStart);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setToSegmentStart(DSegmentStart newToSegmentStart) {
if (newToSegmentStart != toSegmentStart) {
NotificationChain msgs = null;
if (toSegmentStart != null)
msgs = ((InternalEObject)toSegmentStart).eInverseRemove(this, TimingDPackage.DSEGMENT_START__INCOMING_SWITCH, DSegmentStart.class, msgs);
if (newToSegmentStart != null)
msgs = ((InternalEObject)newToSegmentStart).eInverseAdd(this, TimingDPackage.DSEGMENT_START__INCOMING_SWITCH, DSegmentStart.class, msgs);
msgs = basicSetToSegmentStart(newToSegmentStart, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START, newToSegmentStart, newToSegmentStart));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegment getFromSegment() {
if (fromSegment != null && fromSegment.eIsProxy()) {
InternalEObject oldFromSegment = (InternalEObject)fromSegment;
fromSegment = (DSegment)eResolveProxy(oldFromSegment);
if (fromSegment != oldFromSegment) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT, oldFromSegment, fromSegment));
}
}
return fromSegment;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegment basicGetFromSegment() {
return fromSegment;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setFromSegment(DSegment newFromSegment) {
DSegment oldFromSegment = fromSegment;
fromSegment = newFromSegment;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT, oldFromSegment, fromSegment));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegment getToSegment() {
if (toSegment != null && toSegment.eIsProxy()) {
InternalEObject oldToSegment = (InternalEObject)toSegment;
toSegment = (DSegment)eResolveProxy(oldToSegment);
if (toSegment != oldToSegment) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, TimingDPackage.DSTATE_SWITCH__TO_SEGMENT, oldToSegment, toSegment));
}
}
return toSegment;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DSegment basicGetToSegment() {
return toSegment;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setToSegment(DSegment newToSegment) {
DSegment oldToSegment = toSegment;
toSegment = newToSegment;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__TO_SEGMENT, oldToSegment, toSegment));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DValueLine getFromValueLine() {
if (fromValueLine != null && fromValueLine.eIsProxy()) {
InternalEObject oldFromValueLine = (InternalEObject)fromValueLine;
fromValueLine = (DValueLine)eResolveProxy(oldFromValueLine);
if (fromValueLine != oldFromValueLine) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, TimingDPackage.DSTATE_SWITCH__FROM_VALUE_LINE, oldFromValueLine, fromValueLine));
}
}
return fromValueLine;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DValueLine basicGetFromValueLine() {
return fromValueLine;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setFromValueLine(DValueLine newFromValueLine) {
DValueLine oldFromValueLine = fromValueLine;
fromValueLine = newFromValueLine;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__FROM_VALUE_LINE, oldFromValueLine, fromValueLine));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DValueLine getToValueLine() {
if (toValueLine != null && toValueLine.eIsProxy()) {
InternalEObject oldToValueLine = (InternalEObject)toValueLine;
toValueLine = (DValueLine)eResolveProxy(oldToValueLine);
if (toValueLine != oldToValueLine) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, TimingDPackage.DSTATE_SWITCH__TO_VALUE_LINE, oldToValueLine, toValueLine));
}
}
return toValueLine;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public DValueLine basicGetToValueLine() {
return toValueLine;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setToValueLine(DValueLine newToValueLine) {
DValueLine oldToValueLine = toValueLine;
toValueLine = newToValueLine;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, TimingDPackage.DSTATE_SWITCH__TO_VALUE_LINE, oldToValueLine, toValueLine));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END:
if (fromSegmentEnd != null)
msgs = ((InternalEObject)fromSegmentEnd).eInverseRemove(this, TimingDPackage.DSEGMENT_END__SWITCH, DSegmentEnd.class, msgs);
return basicSetFromSegmentEnd((DSegmentEnd)otherEnd, msgs);
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START:
if (toSegmentStart != null)
msgs = ((InternalEObject)toSegmentStart).eInverseRemove(this, TimingDPackage.DSEGMENT_START__INCOMING_SWITCH, DSegmentStart.class, msgs);
return basicSetToSegmentStart((DSegmentStart)otherEnd, msgs);
}
return super.eInverseAdd(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END:
return basicSetFromSegmentEnd(null, msgs);
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START:
return basicSetToSegmentStart(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 TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END:
if (resolve) return getFromSegmentEnd();
return basicGetFromSegmentEnd();
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START:
if (resolve) return getToSegmentStart();
return basicGetToSegmentStart();
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT:
if (resolve) return getFromSegment();
return basicGetFromSegment();
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT:
if (resolve) return getToSegment();
return basicGetToSegment();
case TimingDPackage.DSTATE_SWITCH__FROM_VALUE_LINE:
if (resolve) return getFromValueLine();
return basicGetFromValueLine();
case TimingDPackage.DSTATE_SWITCH__TO_VALUE_LINE:
if (resolve) return getToValueLine();
return basicGetToValueLine();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END:
setFromSegmentEnd((DSegmentEnd)newValue);
return;
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START:
setToSegmentStart((DSegmentStart)newValue);
return;
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT:
setFromSegment((DSegment)newValue);
return;
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT:
setToSegment((DSegment)newValue);
return;
case TimingDPackage.DSTATE_SWITCH__FROM_VALUE_LINE:
setFromValueLine((DValueLine)newValue);
return;
case TimingDPackage.DSTATE_SWITCH__TO_VALUE_LINE:
setToValueLine((DValueLine)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END:
setFromSegmentEnd((DSegmentEnd)null);
return;
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START:
setToSegmentStart((DSegmentStart)null);
return;
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT:
setFromSegment((DSegment)null);
return;
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT:
setToSegment((DSegment)null);
return;
case TimingDPackage.DSTATE_SWITCH__FROM_VALUE_LINE:
setFromValueLine((DValueLine)null);
return;
case TimingDPackage.DSTATE_SWITCH__TO_VALUE_LINE:
setToValueLine((DValueLine)null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT_END:
return fromSegmentEnd != null;
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT_START:
return toSegmentStart != null;
case TimingDPackage.DSTATE_SWITCH__FROM_SEGMENT:
return fromSegment != null;
case TimingDPackage.DSTATE_SWITCH__TO_SEGMENT:
return toSegment != null;
case TimingDPackage.DSTATE_SWITCH__FROM_VALUE_LINE:
return fromValueLine != null;
case TimingDPackage.DSTATE_SWITCH__TO_VALUE_LINE:
return toValueLine != null;
}
return super.eIsSet(featureID);
}
} //DStateSwitchImpl