/**
* <copyright>
* </copyright>
*
* $Id$
*/
package org.dresdenocl.tracer.tracermodel.impl;
import java.util.Collection;
import java.util.UUID;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.emf.ecore.util.EObjectEList;
import org.dresdenocl.essentialocl.standardlibrary.OclAny;
import org.dresdenocl.modelinstancetype.types.IModelInstanceElement;
import org.dresdenocl.tracer.tracermodel.TracerItem;
import org.dresdenocl.tracer.tracermodel.TracermodelPackage;
/**
* <!-- begin-user-doc --> An implementation of the model object '
* <em><b>Tracer Item</b></em>'. <!-- end-user-doc -->
* <p>
* The following features are implemented:
* <ul>
* <li>{@link org.dresdenocl.tracer.tracermodel.impl.TracerItemImpl#getExpression <em>Expression</em>}</li>
* <li>{@link org.dresdenocl.tracer.tracermodel.impl.TracerItemImpl#getResult <em>Result</em>}</li>
* <li>{@link org.dresdenocl.tracer.tracermodel.impl.TracerItemImpl#getParent <em>Parent</em>}</li>
* <li>{@link org.dresdenocl.tracer.tracermodel.impl.TracerItemImpl#getChildren <em>Children</em>}</li>
* <li>{@link org.dresdenocl.tracer.tracermodel.impl.TracerItemImpl#getUUID <em>UUID</em>}</li>
* <li>{@link org.dresdenocl.tracer.tracermodel.impl.TracerItemImpl#getModelInstanceElement <em>Model Instance Element</em>}</li>
* </ul>
* </p>
*
* @generated
*/
public class TracerItemImpl extends EObjectImpl implements TracerItem {
/**
* The cached value of the '{@link #getExpression() <em>Expression</em>}' reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getExpression()
* @generated
* @ordered
*/
protected EObject expression;
/**
* The default value of the '{@link #getResult() <em>Result</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getResult()
* @generated
* @ordered
*/
protected static final OclAny RESULT_EDEFAULT = null;
/**
* The cached value of the '{@link #getResult() <em>Result</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getResult()
* @generated
* @ordered
*/
protected OclAny result = RESULT_EDEFAULT;
/**
* The cached value of the '{@link #getParent() <em>Parent</em>}' reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getParent()
* @generated
* @ordered
*/
protected TracerItem parent;
/**
* The cached value of the '{@link #getChildren() <em>Children</em>}' reference list.
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getChildren()
* @generated
* @ordered
*/
protected EList<TracerItem> children;
/**
* The default value of the '{@link #getUUID() <em>UUID</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getUUID()
* @generated
* @ordered
*/
protected static final UUID UUID_EDEFAULT = null;
/**
* The cached value of the '{@link #getUUID() <em>UUID</em>}' attribute. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @see #getUUID()
* @generated
* @ordered
*/
protected UUID uuid = UUID_EDEFAULT;
/**
* The default value of the '{@link #getModelInstanceElement() <em>Model Instance Element</em>}' attribute.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @see #getModelInstanceElement()
* @generated
* @ordered
*/
protected static final IModelInstanceElement MODEL_INSTANCE_ELEMENT_EDEFAULT =
null;
/**
* The cached value of the '{@link #getModelInstanceElement() <em>Model Instance Element</em>}' attribute.
* <!-- begin-user-doc --> <!--
* end-user-doc -->
* @see #getModelInstanceElement()
* @generated
* @ordered
*/
protected IModelInstanceElement modelInstanceElement =
MODEL_INSTANCE_ELEMENT_EDEFAULT;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
protected TracerItemImpl() {
super();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
protected EClass eStaticClass() {
return TracermodelPackage.Literals.TRACER_ITEM;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public EObject getExpression() {
if (expression != null && expression.eIsProxy()) {
InternalEObject oldExpression = (InternalEObject) expression;
expression = eResolveProxy(oldExpression);
if (expression != oldExpression) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE,
TracermodelPackage.TRACER_ITEM__EXPRESSION, oldExpression,
expression));
}
}
return expression;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public EObject basicGetExpression() {
return expression;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setExpression(EObject newExpression) {
EObject oldExpression = expression;
expression = newExpression;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
TracermodelPackage.TRACER_ITEM__EXPRESSION, oldExpression, expression));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public OclAny getResult() {
return result;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setResult(OclAny newResult) {
OclAny oldResult = result;
result = newResult;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
TracermodelPackage.TRACER_ITEM__RESULT, oldResult, result));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public TracerItem getParent() {
if (parent != null && parent.eIsProxy()) {
InternalEObject oldParent = (InternalEObject) parent;
parent = (TracerItem) eResolveProxy(oldParent);
if (parent != oldParent) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE,
TracermodelPackage.TRACER_ITEM__PARENT, oldParent, parent));
}
}
return parent;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public TracerItem basicGetParent() {
return parent;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setParent(TracerItem newParent) {
TracerItem oldParent = parent;
parent = newParent;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
TracermodelPackage.TRACER_ITEM__PARENT, oldParent, parent));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public EList<TracerItem> getChildren() {
if (children == null) {
children =
new EObjectEList<TracerItem>(TracerItem.class, this,
TracermodelPackage.TRACER_ITEM__CHILDREN);
}
return children;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public UUID getUUID() {
return uuid;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setUUID(UUID newUUID) {
UUID oldUUID = uuid;
uuid = newUUID;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
TracermodelPackage.TRACER_ITEM__UUID, oldUUID, uuid));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public IModelInstanceElement getModelInstanceElement() {
return modelInstanceElement;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
public void setModelInstanceElement(
IModelInstanceElement newModelInstanceElement) {
IModelInstanceElement oldModelInstanceElement = modelInstanceElement;
modelInstanceElement = newModelInstanceElement;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET,
TracermodelPackage.TRACER_ITEM__MODEL_INSTANCE_ELEMENT,
oldModelInstanceElement, modelInstanceElement));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
case TracermodelPackage.TRACER_ITEM__EXPRESSION:
if (resolve)
return getExpression();
return basicGetExpression();
case TracermodelPackage.TRACER_ITEM__RESULT:
return getResult();
case TracermodelPackage.TRACER_ITEM__PARENT:
if (resolve)
return getParent();
return basicGetParent();
case TracermodelPackage.TRACER_ITEM__CHILDREN:
return getChildren();
case TracermodelPackage.TRACER_ITEM__UUID:
return getUUID();
case TracermodelPackage.TRACER_ITEM__MODEL_INSTANCE_ELEMENT:
return getModelInstanceElement();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case TracermodelPackage.TRACER_ITEM__EXPRESSION:
setExpression((EObject) newValue);
return;
case TracermodelPackage.TRACER_ITEM__RESULT:
setResult((OclAny) newValue);
return;
case TracermodelPackage.TRACER_ITEM__PARENT:
setParent((TracerItem) newValue);
return;
case TracermodelPackage.TRACER_ITEM__CHILDREN:
getChildren().clear();
getChildren().addAll((Collection<? extends TracerItem>) newValue);
return;
case TracermodelPackage.TRACER_ITEM__UUID:
setUUID((UUID) newValue);
return;
case TracermodelPackage.TRACER_ITEM__MODEL_INSTANCE_ELEMENT:
setModelInstanceElement((IModelInstanceElement) newValue);
return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
case TracermodelPackage.TRACER_ITEM__EXPRESSION:
setExpression((EObject) null);
return;
case TracermodelPackage.TRACER_ITEM__RESULT:
setResult(RESULT_EDEFAULT);
return;
case TracermodelPackage.TRACER_ITEM__PARENT:
setParent((TracerItem) null);
return;
case TracermodelPackage.TRACER_ITEM__CHILDREN:
getChildren().clear();
return;
case TracermodelPackage.TRACER_ITEM__UUID:
setUUID(UUID_EDEFAULT);
return;
case TracermodelPackage.TRACER_ITEM__MODEL_INSTANCE_ELEMENT:
setModelInstanceElement(MODEL_INSTANCE_ELEMENT_EDEFAULT);
return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
case TracermodelPackage.TRACER_ITEM__EXPRESSION:
return expression != null;
case TracermodelPackage.TRACER_ITEM__RESULT:
return RESULT_EDEFAULT == null ? result != null : !RESULT_EDEFAULT
.equals(result);
case TracermodelPackage.TRACER_ITEM__PARENT:
return parent != null;
case TracermodelPackage.TRACER_ITEM__CHILDREN:
return children != null && !children.isEmpty();
case TracermodelPackage.TRACER_ITEM__UUID:
return UUID_EDEFAULT == null ? uuid != null : !UUID_EDEFAULT.equals(uuid);
case TracermodelPackage.TRACER_ITEM__MODEL_INSTANCE_ELEMENT:
return MODEL_INSTANCE_ELEMENT_EDEFAULT == null ? modelInstanceElement != null
: !MODEL_INSTANCE_ELEMENT_EDEFAULT.equals(modelInstanceElement);
}
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(" (result: "); //$NON-NLS-1$
result.append(result);
result.append(", UUID: "); //$NON-NLS-1$
result.append(uuid);
result.append(", modelInstanceElement: "); //$NON-NLS-1$
result.append(modelInstanceElement);
result.append(')');
return result.toString();
}
} // TracerItemImpl