blob: 5a3ed48a4e4625e17e00735665bde4cb8a805518 [file] [log] [blame]
/**
* <copyright>
* </copyright>
*
* $Id: TransitionImpl.java,v 1.5 2006/09/07 00:06:20 klow Exp $
*/
package org.eclipse.epf.uma.impl;
import java.util.Collection;
import java.util.List;
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.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.util.EObjectResolvingEList;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.epf.uma.Region;
import org.eclipse.epf.uma.Transition;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.Vertex;
import org.eclipse.epf.uma.WorkDefinition;
import org.eclipse.epf.uma.ecore.impl.MultiResourceEObject;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Transition</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.eclipse.epf.uma.impl.TransitionImpl#getWorkDefinition <em>Work Definition</em>}</li>
* <li>{@link org.eclipse.epf.uma.impl.TransitionImpl#getContainer_ <em>Container</em>}</li>
* <li>{@link org.eclipse.epf.uma.impl.TransitionImpl#getSource <em>Source</em>}</li>
* <li>{@link org.eclipse.epf.uma.impl.TransitionImpl#getTarget <em>Target</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class TransitionImpl extends MultiResourceEObject implements Transition {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private static final long serialVersionUID = 1L;
/**
* The cached value of the '{@link #getWorkDefinition() <em>Work Definition</em>}' reference list.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getWorkDefinition()
* @generated
* @ordered
*/
protected EList workDefinition = null;
/**
* The cached value of the '{@link #getSource() <em>Source</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getSource()
* @generated
* @ordered
*/
protected Vertex source = null;
/**
* The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getTarget()
* @generated
* @ordered
*/
protected Vertex target = null;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected TransitionImpl() {
super();
//UMA-->
reassignDefaultValues();
//UMA<--
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected EClass eStaticClass() {
return UmaPackage.Literals.TRANSITION;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public List getWorkDefinition() {
if (workDefinition == null) {
workDefinition = new EObjectResolvingEList(WorkDefinition.class,
this, UmaPackage.TRANSITION__WORK_DEFINITION);
}
return workDefinition;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Region getContainer_() {
if (eContainerFeatureID != UmaPackage.TRANSITION__CONTAINER)
return null;
return (Region) eContainer();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Region basicGetContainer() {
if (eContainerFeatureID != UmaPackage.TRANSITION__CONTAINER)
return null;
return (Region) eInternalContainer();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetContainer(Region newContainer,
NotificationChain msgs) {
msgs = eBasicSetContainer((InternalEObject) newContainer,
UmaPackage.TRANSITION__CONTAINER, msgs);
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setContainer(Region newContainer) {
if (newContainer != eInternalContainer()
|| (eContainerFeatureID != UmaPackage.TRANSITION__CONTAINER && newContainer != null)) {
if (EcoreUtil.isAncestor(this, (EObject) newContainer))
throw new IllegalArgumentException(
"Recursive containment not allowed for " + toString()); //$NON-NLS-1$
NotificationChain msgs = null;
if (eInternalContainer() != null)
msgs = eBasicRemoveFromContainer(msgs);
if (newContainer != null)
msgs = ((InternalEObject) newContainer).eInverseAdd(this,
UmaPackage.REGION__TRANSITION, Region.class, msgs);
msgs = basicSetContainer(newContainer, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
UmaPackage.TRANSITION__CONTAINER, newContainer,
newContainer));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Vertex getSource() {
if (source != null && ((EObject) source).eIsProxy()) {
InternalEObject oldSource = (InternalEObject) source;
source = (Vertex) eResolveProxy(oldSource);
if (source != oldSource) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE,
UmaPackage.TRANSITION__SOURCE, oldSource, source));
}
}
return source;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Vertex basicGetSource() {
return source;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetSource(Vertex newSource,
NotificationChain msgs) {
Vertex oldSource = source;
source = newSource;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, UmaPackage.TRANSITION__SOURCE, oldSource,
newSource);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setSource(Vertex newSource) {
if (newSource != source) {
NotificationChain msgs = null;
if (source != null)
msgs = ((InternalEObject) source).eInverseRemove(this,
UmaPackage.VERTEX__OUTGOING, Vertex.class, msgs);
if (newSource != null)
msgs = ((InternalEObject) newSource).eInverseAdd(this,
UmaPackage.VERTEX__OUTGOING, Vertex.class, msgs);
msgs = basicSetSource(newSource, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
UmaPackage.TRANSITION__SOURCE, newSource, newSource));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Vertex getTarget() {
if (target != null && ((EObject) target).eIsProxy()) {
InternalEObject oldTarget = (InternalEObject) target;
target = (Vertex) eResolveProxy(oldTarget);
if (target != oldTarget) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE,
UmaPackage.TRANSITION__TARGET, oldTarget, target));
}
}
return target;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Vertex basicGetTarget() {
return target;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetTarget(Vertex newTarget,
NotificationChain msgs) {
Vertex oldTarget = target;
target = newTarget;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET, UmaPackage.TRANSITION__TARGET, oldTarget,
newTarget);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setTarget(Vertex newTarget) {
if (newTarget != target) {
NotificationChain msgs = null;
if (target != null)
msgs = ((InternalEObject) target).eInverseRemove(this,
UmaPackage.VERTEX__INCOMING, Vertex.class, msgs);
if (newTarget != null)
msgs = ((InternalEObject) newTarget).eInverseAdd(this,
UmaPackage.VERTEX__INCOMING, Vertex.class, msgs);
msgs = basicSetTarget(newTarget, msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
UmaPackage.TRANSITION__TARGET, newTarget, newTarget));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain eInverseAdd(InternalEObject otherEnd,
int featureID, NotificationChain msgs) {
switch (featureID) {
case UmaPackage.TRANSITION__CONTAINER:
if (eInternalContainer() != null)
msgs = eBasicRemoveFromContainer(msgs);
return basicSetContainer((Region) otherEnd, msgs);
case UmaPackage.TRANSITION__SOURCE:
if (source != null)
msgs = ((InternalEObject) source).eInverseRemove(this,
UmaPackage.VERTEX__OUTGOING, Vertex.class, msgs);
return basicSetSource((Vertex) otherEnd, msgs);
case UmaPackage.TRANSITION__TARGET:
if (target != null)
msgs = ((InternalEObject) target).eInverseRemove(this,
UmaPackage.VERTEX__INCOMING, Vertex.class, msgs);
return basicSetTarget((Vertex) otherEnd, msgs);
}
return super.eInverseAdd(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain eInverseRemove(InternalEObject otherEnd,
int featureID, NotificationChain msgs) {
switch (featureID) {
case UmaPackage.TRANSITION__CONTAINER:
return basicSetContainer(null, msgs);
case UmaPackage.TRANSITION__SOURCE:
return basicSetSource(null, msgs);
case UmaPackage.TRANSITION__TARGET:
return basicSetTarget(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain eBasicRemoveFromContainerFeature(
NotificationChain msgs) {
switch (eContainerFeatureID) {
case UmaPackage.TRANSITION__CONTAINER:
return eInternalContainer().eInverseRemove(this,
UmaPackage.REGION__TRANSITION, Region.class, msgs);
}
return super.eBasicRemoveFromContainerFeature(msgs);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case UmaPackage.TRANSITION__WORK_DEFINITION:
return getWorkDefinition();
case UmaPackage.TRANSITION__CONTAINER:
if (resolve)
return getContainer_();
return basicGetContainer();
case UmaPackage.TRANSITION__SOURCE:
if (resolve)
return getSource();
return basicGetSource();
case UmaPackage.TRANSITION__TARGET:
if (resolve)
return getTarget();
return basicGetTarget();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case UmaPackage.TRANSITION__WORK_DEFINITION:
getWorkDefinition().clear();
getWorkDefinition().addAll((Collection) newValue);
return;
case UmaPackage.TRANSITION__CONTAINER:
setContainer((Region) newValue);
return;
case UmaPackage.TRANSITION__SOURCE:
setSource((Vertex) newValue);
return;
case UmaPackage.TRANSITION__TARGET:
setTarget((Vertex) newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void eUnset(int featureID) {
switch (featureID) {
case UmaPackage.TRANSITION__WORK_DEFINITION:
getWorkDefinition().clear();
return;
case UmaPackage.TRANSITION__CONTAINER:
setContainer((Region) null);
return;
case UmaPackage.TRANSITION__SOURCE:
setSource((Vertex) null);
return;
case UmaPackage.TRANSITION__TARGET:
setTarget((Vertex) null);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public boolean eIsSet(int featureID) {
//UMA-->
EStructuralFeature feature = getFeatureWithOverridenDefaultValue(featureID);
if (feature != null) {
return isFeatureWithOverridenDefaultValueSet(feature);
}
//UMA<--
switch (featureID) {
case UmaPackage.TRANSITION__WORK_DEFINITION:
return workDefinition != null && !workDefinition.isEmpty();
case UmaPackage.TRANSITION__CONTAINER:
return basicGetContainer() != null;
case UmaPackage.TRANSITION__SOURCE:
return source != null;
case UmaPackage.TRANSITION__TARGET:
return target != null;
}
return super.eIsSet(featureID);
}
} //TransitionImpl