/**
* $License$
*
* $Id: DeployedStrategyImpl.java 16161 2012-07-16 20:27:32Z colin $
*/
package org.marketcetera.photon.strategy.engine.model.core.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.marketcetera.module.ModuleURN;
import org.marketcetera.photon.strategy.engine.model.core.DeployedStrategy;
import org.marketcetera.photon.strategy.engine.model.core.StrategyEngine;
import org.marketcetera.photon.strategy.engine.model.core.StrategyEngineCorePackage;
import org.marketcetera.photon.strategy.engine.model.core.StrategyState;
import org.marketcetera.util.misc.ClassVersion;
/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b>Deployed Strategy</b></em>'.
* <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.marketcetera.photon.strategy.engine.model.core.impl.DeployedStrategyImpl#getEngine <em>Engine</em>}</li>
* <li>{@link org.marketcetera.photon.strategy.engine.model.core.impl.DeployedStrategyImpl#getState <em>State</em>}</li>
* <li>{@link org.marketcetera.photon.strategy.engine.model.core.impl.DeployedStrategyImpl#getUrn <em>Urn</em>}</li>
* </ul>
* </p>
*
* @generated
* @since 2.1.0
*/
@ClassVersion("$Id: DeployedStrategyImpl.java 16161 2012-07-16 20:27:32Z colin $")
public class DeployedStrategyImpl
extends StrategyImpl
implements DeployedStrategy
{
/**
* The cached value of the '{@link #getEngine() <em>Engine</em>}' reference.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getEngine()
* @generated
* @ordered
*/
protected volatile StrategyEngine engine;
/**
* The default value of the '{@link #getState() <em>State</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getState()
* @generated
* @ordered
*/
protected static final StrategyState STATE_EDEFAULT = StrategyState.STOPPED;
/**
* The cached value of the '{@link #getState() <em>State</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getState()
* @generated
* @ordered
*/
protected volatile StrategyState state = STATE_EDEFAULT;
/**
* The default value of the '{@link #getUrn() <em>Urn</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getUrn()
* @generated
* @ordered
*/
protected static final ModuleURN URN_EDEFAULT = null;
/**
* The cached value of the '{@link #getUrn() <em>Urn</em>}' attribute.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see #getUrn()
* @generated
* @ordered
*/
protected volatile ModuleURN urn = URN_EDEFAULT;
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected DeployedStrategyImpl()
{
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass()
{
return StrategyEngineCorePackage.Literals.DEPLOYED_STRATEGY;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
*/
public synchronized StrategyEngine getEngine()
{
if (engine != null && engine.eIsProxy()) {
InternalEObject oldEngine = (InternalEObject) engine;
engine = (StrategyEngine) eResolveProxy(oldEngine);
if (engine != oldEngine) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this,
Notification.RESOLVE,
StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE,
oldEngine,
engine));
}
}
return engine;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public StrategyEngine basicGetEngine()
{
return engine;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NotificationChain basicSetEngine(StrategyEngine newEngine,
NotificationChain msgs)
{
StrategyEngine oldEngine = engine;
engine = newEngine;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this,
Notification.SET,
StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE,
oldEngine,
newEngine);
if (msgs == null)
msgs = notification;
else
msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setEngine(StrategyEngine newEngine)
{
if (newEngine != engine) {
NotificationChain msgs = null;
if (engine != null)
msgs = ((InternalEObject) engine)
.eInverseRemove(this,
StrategyEngineCorePackage.STRATEGY_ENGINE__DEPLOYED_STRATEGIES,
StrategyEngine.class,
msgs);
if (newEngine != null)
msgs = ((InternalEObject) newEngine)
.eInverseAdd(this,
StrategyEngineCorePackage.STRATEGY_ENGINE__DEPLOYED_STRATEGIES,
StrategyEngine.class,
msgs);
msgs = basicSetEngine(newEngine,
msgs);
if (msgs != null)
msgs.dispatch();
} else if (eNotificationRequired())
eNotify(new ENotificationImpl(this,
Notification.SET,
StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE,
newEngine,
newEngine));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public StrategyState getState()
{
return state;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setState(StrategyState newState)
{
StrategyState oldState = state;
state = newState == null ? STATE_EDEFAULT : newState;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this,
Notification.SET,
StrategyEngineCorePackage.DEPLOYED_STRATEGY__STATE,
oldState,
state));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ModuleURN getUrn()
{
return urn;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setUrn(ModuleURN newUrn)
{
ModuleURN oldUrn = urn;
urn = newUrn;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this,
Notification.SET,
StrategyEngineCorePackage.DEPLOYED_STRATEGY__URN,
oldUrn,
urn));
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd,
int featureID,
NotificationChain msgs)
{
switch (featureID) {
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE:
if (engine != null)
msgs = ((InternalEObject) engine)
.eInverseRemove(this,
StrategyEngineCorePackage.STRATEGY_ENGINE__DEPLOYED_STRATEGIES,
StrategyEngine.class,
msgs);
return basicSetEngine((StrategyEngine) 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 StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE:
return basicSetEngine(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 StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE:
if (resolve)
return getEngine();
return basicGetEngine();
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__STATE:
return getState();
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__URN:
return getUrn();
}
return super.eGet(featureID,
resolve,
coreType);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eSet(int featureID,
Object newValue)
{
switch (featureID) {
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE:
setEngine((StrategyEngine) newValue);
return;
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__STATE:
setState((StrategyState) newValue);
return;
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__URN:
setUrn((ModuleURN) newValue);
return;
}
super.eSet(featureID,
newValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID)
{
switch (featureID) {
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE:
setEngine((StrategyEngine) null);
return;
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__STATE:
setState(STATE_EDEFAULT);
return;
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__URN:
setUrn(URN_EDEFAULT);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID)
{
switch (featureID) {
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__ENGINE:
return engine != null;
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__STATE:
return state != STATE_EDEFAULT;
case StrategyEngineCorePackage.DEPLOYED_STRATEGY__URN:
return URN_EDEFAULT == null ? urn != null : !URN_EDEFAULT.equals(urn);
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public String toString()
{
if (eIsProxy())
return super.toString();
StringBuffer result = new StringBuffer(super.toString());
result.append(" (state: ");
result.append(state);
result.append(", urn: ");
result.append(urn);
result.append(')');
return result.toString();
}
} //DeployedStrategyImpl