/**
*/
package ua.ansymo.hintco.impl;
import java.lang.reflect.InvocationTargetException;
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.EObjectWithInverseResolvingEList;
import org.eclipse.emf.ecore.util.InternalEList;
import ua.ansymo.hintco.HierarchicalUnitPort;
import ua.ansymo.hintco.HintcoPackage;
import ua.ansymo.hintco.InputPortInstance;
import ua.ansymo.hintco.OutputPortInstance;
import ua.ansymo.hintco.PortInstance;
/**
*
* An implementation of the model object 'Input Port Instance'.
*
*
* The following features are implemented:
*
*
* - {@link ua.ansymo.hintco.impl.InputPortInstanceImpl#getExtrapolationCost Extrapolation Cost}
* - {@link ua.ansymo.hintco.impl.InputPortInstanceImpl#getInternalValueTo Internal Value To}
* - {@link ua.ansymo.hintco.impl.InputPortInstanceImpl#getValueFrom Value From}
*
*
* @generated
*/
public class InputPortInstanceImpl extends PortInstanceImpl implements InputPortInstance {
/**
* The default value of the '{@link #getExtrapolationCost() Extrapolation Cost}' attribute.
*
*
* @see #getExtrapolationCost()
* @generated
* @ordered
*/
protected static final float EXTRAPOLATION_COST_EDEFAULT = 1.0F;
/**
* The cached value of the '{@link #getExtrapolationCost() Extrapolation Cost}' attribute.
*
*
* @see #getExtrapolationCost()
* @generated
* @ordered
*/
protected float extrapolationCost = EXTRAPOLATION_COST_EDEFAULT;
/**
* The cached value of the '{@link #getInternalValueTo() Internal Value To}' reference list.
*
*
* @see #getInternalValueTo()
* @generated
* @ordered
*/
protected EList internalValueTo;
/**
* The cached value of the '{@link #getValueFrom() Value From}' reference.
*
*
* @see #getValueFrom()
* @generated
* @ordered
*/
protected OutputPortInstance valueFrom;
/**
*
*
* @generated
*/
protected InputPortInstanceImpl() {
super();
}
/**
*
*
* @generated
*/
@Override
protected EClass eStaticClass() {
return HintcoPackage.Literals.INPUT_PORT_INSTANCE;
}
/**
*
*
* @generated
*/
public float getExtrapolationCost() {
return extrapolationCost;
}
/**
*
*
* @generated
*/
public void setExtrapolationCost(float newExtrapolationCost) {
float oldExtrapolationCost = extrapolationCost;
extrapolationCost = newExtrapolationCost;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, HintcoPackage.INPUT_PORT_INSTANCE__EXTRAPOLATION_COST, oldExtrapolationCost, extrapolationCost));
}
/**
*
*
* @generated
*/
public EList getInternalValueTo() {
if (internalValueTo == null) {
internalValueTo = new EObjectWithInverseResolvingEList.ManyInverse(OutputPortInstance.class, this, HintcoPackage.INPUT_PORT_INSTANCE__INTERNAL_VALUE_TO, HintcoPackage.OUTPUT_PORT_INSTANCE__INTERNAL_VALUE_FROM);
}
return internalValueTo;
}
/**
*
*
* @generated
*/
public OutputPortInstance getValueFrom() {
if (valueFrom != null && valueFrom.eIsProxy()) {
InternalEObject oldValueFrom = (InternalEObject)valueFrom;
valueFrom = (OutputPortInstance)eResolveProxy(oldValueFrom);
if (valueFrom != oldValueFrom) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM, oldValueFrom, valueFrom));
}
}
return valueFrom;
}
/**
*
*
* @generated
*/
public OutputPortInstance basicGetValueFrom() {
return valueFrom;
}
/**
*
*
* @generated
*/
public NotificationChain basicSetValueFrom(OutputPortInstance newValueFrom, NotificationChain msgs) {
OutputPortInstance oldValueFrom = valueFrom;
valueFrom = newValueFrom;
if (eNotificationRequired()) {
ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM, oldValueFrom, newValueFrom);
if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
*
*
* @generated
*/
public void setValueFrom(OutputPortInstance newValueFrom) {
if (newValueFrom != valueFrom) {
NotificationChain msgs = null;
if (valueFrom != null)
msgs = ((InternalEObject)valueFrom).eInverseRemove(this, HintcoPackage.OUTPUT_PORT_INSTANCE__VALUE_TO, OutputPortInstance.class, msgs);
if (newValueFrom != null)
msgs = ((InternalEObject)newValueFrom).eInverseAdd(this, HintcoPackage.OUTPUT_PORT_INSTANCE__VALUE_TO, OutputPortInstance.class, msgs);
msgs = basicSetValueFrom(newValueFrom, msgs);
if (msgs != null) msgs.dispatch();
}
else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM, newValueFrom, newValueFrom));
}
/**
*
*
* @generated
*/
public OutputPortInstance getRealValueFrom() {
OutputPortInstance _xifexpression = null;
OutputPortInstance _valueFrom = this.getValueFrom();
if ((_valueFrom instanceof HierarchicalUnitPort)) {
OutputPortInstance _valueFrom_1 = this.getValueFrom();
_xifexpression = ((HierarchicalUnitPort) _valueFrom_1).getRealValueFrom();
}
else {
_xifexpression = this.getValueFrom();
}
return _xifexpression;
}
/**
*
*
* @generated
*/
public boolean getsValueFrom(final PortInstance p) {
OutputPortInstance _valueFrom = this.getValueFrom();
boolean _tripleEquals = (_valueFrom == p);
if (_tripleEquals) {
return true;
}
else {
OutputPortInstance _valueFrom_1 = this.getValueFrom();
if ((_valueFrom_1 instanceof InputPortInstance)) {
OutputPortInstance _valueFrom_2 = this.getValueFrom();
return ((InputPortInstance) _valueFrom_2).getsValueFrom(p);
}
else {
return false;
}
}
}
/**
*
*
* @generated
*/
public boolean isInput() {
return true;
}
/**
*
*
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case HintcoPackage.INPUT_PORT_INSTANCE__INTERNAL_VALUE_TO:
return ((InternalEList)(InternalEList>)getInternalValueTo()).basicAdd(otherEnd, msgs);
case HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM:
if (valueFrom != null)
msgs = ((InternalEObject)valueFrom).eInverseRemove(this, HintcoPackage.OUTPUT_PORT_INSTANCE__VALUE_TO, OutputPortInstance.class, msgs);
return basicSetValueFrom((OutputPortInstance)otherEnd, msgs);
}
return super.eInverseAdd(otherEnd, featureID, msgs);
}
/**
*
*
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
case HintcoPackage.INPUT_PORT_INSTANCE__INTERNAL_VALUE_TO:
return ((InternalEList>)getInternalValueTo()).basicRemove(otherEnd, msgs);
case HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM:
return basicSetValueFrom(null, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
*
*
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case HintcoPackage.INPUT_PORT_INSTANCE__EXTRAPOLATION_COST:
return getExtrapolationCost();
case HintcoPackage.INPUT_PORT_INSTANCE__INTERNAL_VALUE_TO:
return getInternalValueTo();
case HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM:
if (resolve) return getValueFrom();
return basicGetValueFrom();
}
return super.eGet(featureID, resolve, coreType);
}
/**
*
*
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case HintcoPackage.INPUT_PORT_INSTANCE__EXTRAPOLATION_COST:
setExtrapolationCost((Float)newValue);
return;
case HintcoPackage.INPUT_PORT_INSTANCE__INTERNAL_VALUE_TO:
getInternalValueTo().clear();
getInternalValueTo().addAll((Collection extends OutputPortInstance>)newValue);
return;
case HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM:
setValueFrom((OutputPortInstance)newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
*
*
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case HintcoPackage.INPUT_PORT_INSTANCE__EXTRAPOLATION_COST:
setExtrapolationCost(EXTRAPOLATION_COST_EDEFAULT);
return;
case HintcoPackage.INPUT_PORT_INSTANCE__INTERNAL_VALUE_TO:
getInternalValueTo().clear();
return;
case HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM:
setValueFrom((OutputPortInstance)null);
return;
}
super.eUnset(featureID);
}
/**
*
*
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case HintcoPackage.INPUT_PORT_INSTANCE__EXTRAPOLATION_COST:
return extrapolationCost != EXTRAPOLATION_COST_EDEFAULT;
case HintcoPackage.INPUT_PORT_INSTANCE__INTERNAL_VALUE_TO:
return internalValueTo != null && !internalValueTo.isEmpty();
case HintcoPackage.INPUT_PORT_INSTANCE__VALUE_FROM:
return valueFrom != null;
}
return super.eIsSet(featureID);
}
/**
*
*
* @generated
*/
@Override
public int eDerivedOperationID(int baseOperationID, Class> baseClass) {
if (baseClass == PortInstance.class) {
switch (baseOperationID) {
case HintcoPackage.PORT_INSTANCE___IS_INPUT: return HintcoPackage.INPUT_PORT_INSTANCE___IS_INPUT;
case HintcoPackage.PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE: return HintcoPackage.INPUT_PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE;
default: return super.eDerivedOperationID(baseOperationID, baseClass);
}
}
return super.eDerivedOperationID(baseOperationID, baseClass);
}
/**
*
*
* @generated
*/
@Override
public Object eInvoke(int operationID, EList> arguments) throws InvocationTargetException {
switch (operationID) {
case HintcoPackage.INPUT_PORT_INSTANCE___GET_REAL_VALUE_FROM:
return getRealValueFrom();
case HintcoPackage.INPUT_PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE:
return getsValueFrom((PortInstance)arguments.get(0));
case HintcoPackage.INPUT_PORT_INSTANCE___IS_INPUT:
return isInput();
}
return super.eInvoke(operationID, arguments);
}
/**
*
*
* @generated
*/
@Override
public String toString() {
if (eIsProxy()) return super.toString();
StringBuilder result = new StringBuilder(super.toString());
result.append(" (extrapolationCost: ");
result.append(extrapolationCost);
result.append(')');
return result.toString();
}
} //InputPortInstanceImpl