/** * <copyright> * </copyright> * * $Id$ */ package com.sap.furcas.metamodel.FURCAS.textblocks.impl; 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.impl.EObjectImpl; import org.eclipse.emf.ecore.util.EObjectResolvingEList; import org.eclipse.emf.ecore.util.EcoreUtil; import com.sap.furcas.metamodel.FURCAS.TCS.SequenceElement; import com.sap.furcas.metamodel.FURCAS.textblocks.DocumentNode; import com.sap.furcas.metamodel.FURCAS.textblocks.TextBlock; import com.sap.furcas.metamodel.FURCAS.textblocks.TextblocksPackage; import com.sap.furcas.metamodel.FURCAS.textblocks.Version; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Document Node</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#getVersion <em>Version</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#isChildrenChanged <em>Children Changed</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#isRelexingNeeded <em>Relexing Needed</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#getParent <em>Parent</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#getSequenceElement <em>Sequence Element</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#getOffset <em>Offset</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#getLength <em>Length</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#getOtherVersions <em>Other Versions</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#isOffsetRelative <em>Offset Relative</em>}</li> * <li>{@link com.sap.furcas.metamodel.FURCAS.textblocks.impl.DocumentNodeImpl#getAbsoluteOffset <em>Absolute Offset</em>}</li> * </ul> * </p> * * @generated */ public abstract class DocumentNodeImpl extends EObjectImpl implements DocumentNode { /** * The default value of the '{@link #getVersion() <em>Version</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getVersion() * @generated * @ordered */ protected static final Version VERSION_EDEFAULT = Version.REFERENCE; /** * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getVersion() * @generated * @ordered */ protected Version version = VERSION_EDEFAULT; /** * The default value of the '{@link #isChildrenChanged() <em>Children Changed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isChildrenChanged() * @generated * @ordered */ protected static final boolean CHILDREN_CHANGED_EDEFAULT = false; /** * The cached value of the '{@link #isChildrenChanged() <em>Children Changed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isChildrenChanged() * @generated * @ordered */ protected boolean childrenChanged = CHILDREN_CHANGED_EDEFAULT; /** * The default value of the '{@link #isRelexingNeeded() <em>Relexing Needed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isRelexingNeeded() * @generated * @ordered */ protected static final boolean RELEXING_NEEDED_EDEFAULT = false; /** * The cached value of the '{@link #isRelexingNeeded() <em>Relexing Needed</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isRelexingNeeded() * @generated * @ordered */ protected boolean relexingNeeded = RELEXING_NEEDED_EDEFAULT; /** * The cached value of the '{@link #getSequenceElement() <em>Sequence Element</em>}' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSequenceElement() * @generated * @ordered */ protected SequenceElement sequenceElement; /** * The default value of the '{@link #getOffset() <em>Offset</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getOffset() * @generated * @ordered */ protected static final int OFFSET_EDEFAULT = 0; /** * The cached value of the '{@link #getOffset() <em>Offset</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getOffset() * @generated * @ordered */ protected int offset = OFFSET_EDEFAULT; /** * The default value of the '{@link #getLength() <em>Length</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getLength() * @generated * @ordered */ protected static final int LENGTH_EDEFAULT = 0; /** * The cached value of the '{@link #getLength() <em>Length</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getLength() * @generated * @ordered */ protected int length = LENGTH_EDEFAULT; /** * The cached value of the '{@link #getOtherVersions() <em>Other Versions</em>}' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getOtherVersions() * @generated * @ordered */ protected EList<DocumentNode> otherVersions; /** * The default value of the '{@link #isOffsetRelative() <em>Offset Relative</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isOffsetRelative() * @generated * @ordered */ protected static final boolean OFFSET_RELATIVE_EDEFAULT = false; /** * The cached value of the '{@link #isOffsetRelative() <em>Offset Relative</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #isOffsetRelative() * @generated * @ordered */ protected boolean offsetRelative = OFFSET_RELATIVE_EDEFAULT; /** * The default value of the '{@link #getAbsoluteOffset() <em>Absolute Offset</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getAbsoluteOffset() * @generated * @ordered */ protected static final int ABSOLUTE_OFFSET_EDEFAULT = 0; /** * The cached value of the '{@link #getAbsoluteOffset() <em>Absolute Offset</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getAbsoluteOffset() * @generated * @ordered */ protected int absoluteOffset = ABSOLUTE_OFFSET_EDEFAULT; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected DocumentNodeImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return TextblocksPackage.Literals.DOCUMENT_NODE; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Version getVersion() { return version; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setVersion(Version newVersion) { Version oldVersion = version; version = newVersion == null ? VERSION_EDEFAULT : newVersion; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__VERSION, oldVersion, version)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean isChildrenChanged() { return childrenChanged; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setChildrenChanged(boolean newChildrenChanged) { boolean oldChildrenChanged = childrenChanged; childrenChanged = newChildrenChanged; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__CHILDREN_CHANGED, oldChildrenChanged, childrenChanged)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean isRelexingNeeded() { return relexingNeeded; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setRelexingNeeded(boolean newRelexingNeeded) { boolean oldRelexingNeeded = relexingNeeded; relexingNeeded = newRelexingNeeded; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__RELEXING_NEEDED, oldRelexingNeeded, relexingNeeded)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public TextBlock getParent() { if (eContainerFeatureID() != TextblocksPackage.DOCUMENT_NODE__PARENT) { return null; } return (TextBlock)eContainer(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public NotificationChain basicSetParent(TextBlock newParent, NotificationChain msgs) { msgs = eBasicSetContainer((InternalEObject)newParent, TextblocksPackage.DOCUMENT_NODE__PARENT, msgs); return msgs; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setParent(TextBlock newParent) { if (newParent != eInternalContainer() || (eContainerFeatureID() != TextblocksPackage.DOCUMENT_NODE__PARENT && newParent != null)) { if (EcoreUtil.isAncestor(this, newParent)) { throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); } NotificationChain msgs = null; if (eInternalContainer() != null) { msgs = eBasicRemoveFromContainer(msgs); } if (newParent != null) { msgs = ((InternalEObject)newParent).eInverseAdd(this, TextblocksPackage.TEXT_BLOCK__SUB_NODES, TextBlock.class, msgs); } msgs = basicSetParent(newParent, msgs); if (msgs != null) { msgs.dispatch(); } } else if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__PARENT, newParent, newParent)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public SequenceElement getSequenceElement() { if (sequenceElement != null && sequenceElement.eIsProxy()) { InternalEObject oldSequenceElement = (InternalEObject)sequenceElement; sequenceElement = (SequenceElement)eResolveProxy(oldSequenceElement); if (sequenceElement != oldSequenceElement) { if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.RESOLVE, TextblocksPackage.DOCUMENT_NODE__SEQUENCE_ELEMENT, oldSequenceElement, sequenceElement)); } } } return sequenceElement; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public SequenceElement basicGetSequenceElement() { return sequenceElement; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setSequenceElement(SequenceElement newSequenceElement) { SequenceElement oldSequenceElement = sequenceElement; sequenceElement = newSequenceElement; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__SEQUENCE_ELEMENT, oldSequenceElement, sequenceElement)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public int getOffset() { return offset; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setOffset(int newOffset) { int oldOffset = offset; offset = newOffset; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__OFFSET, oldOffset, offset)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public int getLength() { return length; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setLength(int newLength) { int oldLength = length; length = newLength; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__LENGTH, oldLength, length)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public EList<DocumentNode> getOtherVersions() { if (otherVersions == null) { otherVersions = new EObjectResolvingEList<DocumentNode>(DocumentNode.class, this, TextblocksPackage.DOCUMENT_NODE__OTHER_VERSIONS); } return otherVersions; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean isOffsetRelative() { return offsetRelative; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setOffsetRelative(boolean newOffsetRelative) { boolean oldOffsetRelative = offsetRelative; offsetRelative = newOffsetRelative; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__OFFSET_RELATIVE, oldOffsetRelative, offsetRelative)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public int getAbsoluteOffset() { return absoluteOffset; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void setAbsoluteOffset(int newAbsoluteOffset) { int oldAbsoluteOffset = absoluteOffset; absoluteOffset = newAbsoluteOffset; if (eNotificationRequired()) { eNotify(new ENotificationImpl(this, Notification.SET, TextblocksPackage.DOCUMENT_NODE__ABSOLUTE_OFFSET, oldAbsoluteOffset, absoluteOffset)); } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case TextblocksPackage.DOCUMENT_NODE__PARENT: if (eInternalContainer() != null) { msgs = eBasicRemoveFromContainer(msgs); } return basicSetParent((TextBlock)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 TextblocksPackage.DOCUMENT_NODE__PARENT: return basicSetParent(null, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { switch (eContainerFeatureID()) { case TextblocksPackage.DOCUMENT_NODE__PARENT: return eInternalContainer().eInverseRemove(this, TextblocksPackage.TEXT_BLOCK__SUB_NODES, TextBlock.class, msgs); } return super.eBasicRemoveFromContainerFeature(msgs); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case TextblocksPackage.DOCUMENT_NODE__VERSION: return getVersion(); case TextblocksPackage.DOCUMENT_NODE__CHILDREN_CHANGED: return isChildrenChanged(); case TextblocksPackage.DOCUMENT_NODE__RELEXING_NEEDED: return isRelexingNeeded(); case TextblocksPackage.DOCUMENT_NODE__PARENT: return getParent(); case TextblocksPackage.DOCUMENT_NODE__SEQUENCE_ELEMENT: if (resolve) { return getSequenceElement(); } return basicGetSequenceElement(); case TextblocksPackage.DOCUMENT_NODE__OFFSET: return getOffset(); case TextblocksPackage.DOCUMENT_NODE__LENGTH: return getLength(); case TextblocksPackage.DOCUMENT_NODE__OTHER_VERSIONS: return getOtherVersions(); case TextblocksPackage.DOCUMENT_NODE__OFFSET_RELATIVE: return isOffsetRelative(); case TextblocksPackage.DOCUMENT_NODE__ABSOLUTE_OFFSET: return getAbsoluteOffset(); } 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 TextblocksPackage.DOCUMENT_NODE__VERSION: setVersion((Version)newValue); return; case TextblocksPackage.DOCUMENT_NODE__CHILDREN_CHANGED: setChildrenChanged((Boolean)newValue); return; case TextblocksPackage.DOCUMENT_NODE__RELEXING_NEEDED: setRelexingNeeded((Boolean)newValue); return; case TextblocksPackage.DOCUMENT_NODE__PARENT: setParent((TextBlock)newValue); return; case TextblocksPackage.DOCUMENT_NODE__SEQUENCE_ELEMENT: setSequenceElement((SequenceElement)newValue); return; case TextblocksPackage.DOCUMENT_NODE__OFFSET: setOffset((Integer)newValue); return; case TextblocksPackage.DOCUMENT_NODE__LENGTH: setLength((Integer)newValue); return; case TextblocksPackage.DOCUMENT_NODE__OTHER_VERSIONS: getOtherVersions().clear(); getOtherVersions().addAll((Collection<? extends DocumentNode>)newValue); return; case TextblocksPackage.DOCUMENT_NODE__OFFSET_RELATIVE: setOffsetRelative((Boolean)newValue); return; case TextblocksPackage.DOCUMENT_NODE__ABSOLUTE_OFFSET: setAbsoluteOffset((Integer)newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case TextblocksPackage.DOCUMENT_NODE__VERSION: setVersion(VERSION_EDEFAULT); return; case TextblocksPackage.DOCUMENT_NODE__CHILDREN_CHANGED: setChildrenChanged(CHILDREN_CHANGED_EDEFAULT); return; case TextblocksPackage.DOCUMENT_NODE__RELEXING_NEEDED: setRelexingNeeded(RELEXING_NEEDED_EDEFAULT); return; case TextblocksPackage.DOCUMENT_NODE__PARENT: setParent((TextBlock)null); return; case TextblocksPackage.DOCUMENT_NODE__SEQUENCE_ELEMENT: setSequenceElement((SequenceElement)null); return; case TextblocksPackage.DOCUMENT_NODE__OFFSET: setOffset(OFFSET_EDEFAULT); return; case TextblocksPackage.DOCUMENT_NODE__LENGTH: setLength(LENGTH_EDEFAULT); return; case TextblocksPackage.DOCUMENT_NODE__OTHER_VERSIONS: getOtherVersions().clear(); return; case TextblocksPackage.DOCUMENT_NODE__OFFSET_RELATIVE: setOffsetRelative(OFFSET_RELATIVE_EDEFAULT); return; case TextblocksPackage.DOCUMENT_NODE__ABSOLUTE_OFFSET: setAbsoluteOffset(ABSOLUTE_OFFSET_EDEFAULT); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case TextblocksPackage.DOCUMENT_NODE__VERSION: return version != VERSION_EDEFAULT; case TextblocksPackage.DOCUMENT_NODE__CHILDREN_CHANGED: return childrenChanged != CHILDREN_CHANGED_EDEFAULT; case TextblocksPackage.DOCUMENT_NODE__RELEXING_NEEDED: return relexingNeeded != RELEXING_NEEDED_EDEFAULT; case TextblocksPackage.DOCUMENT_NODE__PARENT: return getParent() != null; case TextblocksPackage.DOCUMENT_NODE__SEQUENCE_ELEMENT: return sequenceElement != null; case TextblocksPackage.DOCUMENT_NODE__OFFSET: return offset != OFFSET_EDEFAULT; case TextblocksPackage.DOCUMENT_NODE__LENGTH: return length != LENGTH_EDEFAULT; case TextblocksPackage.DOCUMENT_NODE__OTHER_VERSIONS: return otherVersions != null && !otherVersions.isEmpty(); case TextblocksPackage.DOCUMENT_NODE__OFFSET_RELATIVE: return offsetRelative != OFFSET_RELATIVE_EDEFAULT; case TextblocksPackage.DOCUMENT_NODE__ABSOLUTE_OFFSET: return absoluteOffset != ABSOLUTE_OFFSET_EDEFAULT; } return super.eIsSet(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public String toString() { if (eIsProxy()) { return super.toString(); } StringBuilder result = new StringBuilder(); result.append(eClass().getName()).append(", "); result.append(getVersion()).append(", "); result.append("o:").append(getOffset()).append(isOffsetRelative() ? "r" : "a"); result.append(", ").append("l:").append(getLength()); return result.toString(); } } //DocumentNodeImpl