/** * <copyright> * * Copyright (c) 2010-2016 Thales Global Services S.A.S. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Thales Global Services S.A.S. - initial API and implementation * * </copyright> */ package org.eclipse.emf.diffmerge.tests.elements.Elements.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.diffmerge.tests.elements.Elements.Element; import org.eclipse.emf.diffmerge.tests.elements.Elements.ElementsPackage; import org.eclipse.emf.diffmerge.tests.elements.Elements.StrictElement; 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.EDataTypeUniqueEList; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.EObjectResolvingEList; import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList; import org.eclipse.emf.ecore.util.InternalEList; /** * <!-- begin-user-doc --> * An implementation of the model object '<em><b>Strict Element</b></em>'. * <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSValue <em>SValue</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSValues <em>SValues</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSManyContent <em>SMany Content</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSSingleContent <em>SSingle Content</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSManyRef <em>SMany Ref</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSSingleRef <em>SSingle Ref</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSManyFromSingleRef <em>SMany From Single Ref</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSSingleFromManyRef <em>SSingle From Many Ref</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSManyFromManyRef1 <em>SMany From Many Ref1</em>}</li> * <li>{@link org.eclipse.emf.diffmerge.tests.elements.Elements.impl.StrictElementImpl#getSManyFromManyRef2 <em>SMany From Many Ref2</em>}</li> * </ul> * </p> * * @generated */ public class StrictElementImpl extends ElementImpl implements StrictElement { /** * The default value of the '{@link #getSValue() <em>SValue</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSValue() * @generated * @ordered */ protected static final int SVALUE_EDEFAULT = 0; /** * The cached value of the '{@link #getSValue() <em>SValue</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSValue() * @generated * @ordered */ protected int sValue = SVALUE_EDEFAULT; /** * The cached value of the '{@link #getSValues() <em>SValues</em>}' attribute list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSValues() * @generated * @ordered */ protected EList<Integer> sValues; /** * The cached value of the '{@link #getSManyContent() <em>SMany Content</em>}' containment reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSManyContent() * @generated * @ordered */ protected EList<Element> sManyContent; /** * The cached value of the '{@link #getSSingleContent() <em>SSingle Content</em>}' containment reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSSingleContent() * @generated * @ordered */ protected Element sSingleContent; /** * The cached value of the '{@link #getSManyRef() <em>SMany Ref</em>}' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSManyRef() * @generated * @ordered */ protected EList<Element> sManyRef; /** * The cached value of the '{@link #getSSingleRef() <em>SSingle Ref</em>}' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSSingleRef() * @generated * @ordered */ protected Element sSingleRef; /** * The cached value of the '{@link #getSManyFromSingleRef() <em>SMany From Single Ref</em>}' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSManyFromSingleRef() * @generated * @ordered */ protected EList<StrictElement> sManyFromSingleRef; /** * The cached value of the '{@link #getSSingleFromManyRef() <em>SSingle From Many Ref</em>}' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSSingleFromManyRef() * @generated * @ordered */ protected StrictElement sSingleFromManyRef; /** * The cached value of the '{@link #getSManyFromManyRef1() <em>SMany From Many Ref1</em>}' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSManyFromManyRef1() * @generated * @ordered */ protected EList<StrictElement> sManyFromManyRef1; /** * The cached value of the '{@link #getSManyFromManyRef2() <em>SMany From Many Ref2</em>}' reference list. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getSManyFromManyRef2() * @generated * @ordered */ protected EList<StrictElement> sManyFromManyRef2; /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ protected StrictElementImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return ElementsPackage.Literals.STRICT_ELEMENT; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public int getSValue() { return sValue; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setSValue(int newSValue) { int oldSValue = sValue; sValue = newSValue; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ElementsPackage.STRICT_ELEMENT__SVALUE, oldSValue, sValue)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<Integer> getSValues() { if (sValues == null) { sValues = new EDataTypeUniqueEList<Integer>(Integer.class, this, ElementsPackage.STRICT_ELEMENT__SVALUES); } return sValues; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<Element> getSManyContent() { if (sManyContent == null) { sManyContent = new EObjectContainmentEList<Element>(Element.class, this, ElementsPackage.STRICT_ELEMENT__SMANY_CONTENT); } return sManyContent; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Element getSSingleContent() { return sSingleContent; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public NotificationChain basicSetSSingleContent(Element newSSingleContent, NotificationChain msgs) { Element oldSSingleContent = sSingleContent; sSingleContent = newSSingleContent; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT, oldSSingleContent, newSSingleContent); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setSSingleContent(Element newSSingleContent) { if (newSSingleContent != sSingleContent) { NotificationChain msgs = null; if (sSingleContent != null) msgs = ((InternalEObject)sSingleContent).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT, null, msgs); if (newSSingleContent != null) msgs = ((InternalEObject)newSSingleContent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT, null, msgs); msgs = basicSetSSingleContent(newSSingleContent, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT, newSSingleContent, newSSingleContent)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<Element> getSManyRef() { if (sManyRef == null) { sManyRef = new EObjectResolvingEList<Element>(Element.class, this, ElementsPackage.STRICT_ELEMENT__SMANY_REF); } return sManyRef; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Element getSSingleRef() { if (sSingleRef != null && sSingleRef.eIsProxy()) { InternalEObject oldSSingleRef = (InternalEObject)sSingleRef; sSingleRef = (Element)eResolveProxy(oldSSingleRef); if (sSingleRef != oldSSingleRef) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, ElementsPackage.STRICT_ELEMENT__SSINGLE_REF, oldSSingleRef, sSingleRef)); } } return sSingleRef; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public Element basicGetSSingleRef() { return sSingleRef; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setSSingleRef(Element newSSingleRef) { Element oldSSingleRef = sSingleRef; sSingleRef = newSSingleRef; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ElementsPackage.STRICT_ELEMENT__SSINGLE_REF, oldSSingleRef, sSingleRef)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<StrictElement> getSManyFromSingleRef() { if (sManyFromSingleRef == null) { sManyFromSingleRef = new EObjectWithInverseResolvingEList<StrictElement>(StrictElement.class, this, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF, ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF); } return sManyFromSingleRef; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public StrictElement getSSingleFromManyRef() { if (sSingleFromManyRef != null && sSingleFromManyRef.eIsProxy()) { InternalEObject oldSSingleFromManyRef = (InternalEObject)sSingleFromManyRef; sSingleFromManyRef = (StrictElement)eResolveProxy(oldSSingleFromManyRef); if (sSingleFromManyRef != oldSSingleFromManyRef) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF, oldSSingleFromManyRef, sSingleFromManyRef)); } } return sSingleFromManyRef; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public StrictElement basicGetSSingleFromManyRef() { return sSingleFromManyRef; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public NotificationChain basicSetSSingleFromManyRef(StrictElement newSSingleFromManyRef, NotificationChain msgs) { StrictElement oldSSingleFromManyRef = sSingleFromManyRef; sSingleFromManyRef = newSSingleFromManyRef; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF, oldSSingleFromManyRef, newSSingleFromManyRef); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public void setSSingleFromManyRef(StrictElement newSSingleFromManyRef) { if (newSSingleFromManyRef != sSingleFromManyRef) { NotificationChain msgs = null; if (sSingleFromManyRef != null) msgs = ((InternalEObject)sSingleFromManyRef).eInverseRemove(this, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF, StrictElement.class, msgs); if (newSSingleFromManyRef != null) msgs = ((InternalEObject)newSSingleFromManyRef).eInverseAdd(this, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF, StrictElement.class, msgs); msgs = basicSetSSingleFromManyRef(newSSingleFromManyRef, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF, newSSingleFromManyRef, newSSingleFromManyRef)); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<StrictElement> getSManyFromManyRef1() { if (sManyFromManyRef1 == null) { sManyFromManyRef1 = new EObjectWithInverseResolvingEList.ManyInverse<StrictElement>(StrictElement.class, this, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2); } return sManyFromManyRef1; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public EList<StrictElement> getSManyFromManyRef2() { if (sManyFromManyRef2 == null) { sManyFromManyRef2 = new EObjectWithInverseResolvingEList.ManyInverse<StrictElement>(StrictElement.class, this, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1); } return sManyFromManyRef2; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @Override public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF: return ((InternalEList<InternalEObject>)(InternalEList<?>)getSManyFromSingleRef()).basicAdd(otherEnd, msgs); case ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF: if (sSingleFromManyRef != null) msgs = ((InternalEObject)sSingleFromManyRef).eInverseRemove(this, ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF, StrictElement.class, msgs); return basicSetSSingleFromManyRef((StrictElement)otherEnd, msgs); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1: return ((InternalEList<InternalEObject>)(InternalEList<?>)getSManyFromManyRef1()).basicAdd(otherEnd, msgs); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2: return ((InternalEList<InternalEObject>)(InternalEList<?>)getSManyFromManyRef2()).basicAdd(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 ElementsPackage.STRICT_ELEMENT__SMANY_CONTENT: return ((InternalEList<?>)getSManyContent()).basicRemove(otherEnd, msgs); case ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT: return basicSetSSingleContent(null, msgs); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF: return ((InternalEList<?>)getSManyFromSingleRef()).basicRemove(otherEnd, msgs); case ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF: return basicSetSSingleFromManyRef(null, msgs); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1: return ((InternalEList<?>)getSManyFromManyRef1()).basicRemove(otherEnd, msgs); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2: return ((InternalEList<?>)getSManyFromManyRef2()).basicRemove(otherEnd, 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 ElementsPackage.STRICT_ELEMENT__SVALUE: return getSValue(); case ElementsPackage.STRICT_ELEMENT__SVALUES: return getSValues(); case ElementsPackage.STRICT_ELEMENT__SMANY_CONTENT: return getSManyContent(); case ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT: return getSSingleContent(); case ElementsPackage.STRICT_ELEMENT__SMANY_REF: return getSManyRef(); case ElementsPackage.STRICT_ELEMENT__SSINGLE_REF: if (resolve) return getSSingleRef(); return basicGetSSingleRef(); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF: return getSManyFromSingleRef(); case ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF: if (resolve) return getSSingleFromManyRef(); return basicGetSSingleFromManyRef(); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1: return getSManyFromManyRef1(); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2: return getSManyFromManyRef2(); } 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 ElementsPackage.STRICT_ELEMENT__SVALUE: setSValue((Integer)newValue); return; case ElementsPackage.STRICT_ELEMENT__SVALUES: getSValues().clear(); getSValues().addAll((Collection<? extends Integer>)newValue); return; case ElementsPackage.STRICT_ELEMENT__SMANY_CONTENT: getSManyContent().clear(); getSManyContent().addAll((Collection<? extends Element>)newValue); return; case ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT: setSSingleContent((Element)newValue); return; case ElementsPackage.STRICT_ELEMENT__SMANY_REF: getSManyRef().clear(); getSManyRef().addAll((Collection<? extends Element>)newValue); return; case ElementsPackage.STRICT_ELEMENT__SSINGLE_REF: setSSingleRef((Element)newValue); return; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF: getSManyFromSingleRef().clear(); getSManyFromSingleRef().addAll((Collection<? extends StrictElement>)newValue); return; case ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF: setSSingleFromManyRef((StrictElement)newValue); return; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1: getSManyFromManyRef1().clear(); getSManyFromManyRef1().addAll((Collection<? extends StrictElement>)newValue); return; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2: getSManyFromManyRef2().clear(); getSManyFromManyRef2().addAll((Collection<? extends StrictElement>)newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case ElementsPackage.STRICT_ELEMENT__SVALUE: setSValue(SVALUE_EDEFAULT); return; case ElementsPackage.STRICT_ELEMENT__SVALUES: getSValues().clear(); return; case ElementsPackage.STRICT_ELEMENT__SMANY_CONTENT: getSManyContent().clear(); return; case ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT: setSSingleContent((Element)null); return; case ElementsPackage.STRICT_ELEMENT__SMANY_REF: getSManyRef().clear(); return; case ElementsPackage.STRICT_ELEMENT__SSINGLE_REF: setSSingleRef((Element)null); return; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF: getSManyFromSingleRef().clear(); return; case ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF: setSSingleFromManyRef((StrictElement)null); return; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1: getSManyFromManyRef1().clear(); return; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2: getSManyFromManyRef2().clear(); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case ElementsPackage.STRICT_ELEMENT__SVALUE: return sValue != SVALUE_EDEFAULT; case ElementsPackage.STRICT_ELEMENT__SVALUES: return sValues != null && !sValues.isEmpty(); case ElementsPackage.STRICT_ELEMENT__SMANY_CONTENT: return sManyContent != null && !sManyContent.isEmpty(); case ElementsPackage.STRICT_ELEMENT__SSINGLE_CONTENT: return sSingleContent != null; case ElementsPackage.STRICT_ELEMENT__SMANY_REF: return sManyRef != null && !sManyRef.isEmpty(); case ElementsPackage.STRICT_ELEMENT__SSINGLE_REF: return sSingleRef != null; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_SINGLE_REF: return sManyFromSingleRef != null && !sManyFromSingleRef.isEmpty(); case ElementsPackage.STRICT_ELEMENT__SSINGLE_FROM_MANY_REF: return sSingleFromManyRef != null; case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF1: return sManyFromManyRef1 != null && !sManyFromManyRef1.isEmpty(); case ElementsPackage.STRICT_ELEMENT__SMANY_FROM_MANY_REF2: return sManyFromManyRef2 != null && !sManyFromManyRef2.isEmpty(); } 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(" (sValue: "); result.append(sValue); result.append(", sValues: "); result.append(sValues); result.append(')'); return result.toString(); } } //StrictElementImpl