/******************************************************************************* * Copyright (c) 2008-2011 Chair for Applied Software Engineering, * Technische Universitaet Muenchen. * 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: ******************************************************************************/ package org.eclipse.emf.emfstore.server.model.versioning.impl; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.BasicEMap; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.EMap; import org.eclipse.emf.common.util.TreeIterator; 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.resource.Resource; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.InternalEList; import org.eclipse.emf.ecore.xmi.XMIResource; import org.eclipse.emf.emfstore.common.model.ModelElementId; import org.eclipse.emf.emfstore.common.model.ModelFactory; import org.eclipse.emf.emfstore.common.model.Project; import org.eclipse.emf.emfstore.common.model.impl.ProjectImpl; import org.eclipse.emf.emfstore.server.model.versioning.ChangePackage; import org.eclipse.emf.emfstore.server.model.versioning.LogMessage; import org.eclipse.emf.emfstore.server.model.versioning.PrimaryVersionSpec; import org.eclipse.emf.emfstore.server.model.versioning.TagVersionSpec; import org.eclipse.emf.emfstore.server.model.versioning.Version; import org.eclipse.emf.emfstore.server.model.versioning.VersioningPackage; import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation; import org.eclipse.emf.emfstore.server.model.versioning.operations.CreateDeleteOperation; /** * <!-- begin-user-doc --> An implementation of the model object ' * <em><b>Version</b></em>'. <!-- end-user-doc --> * <p> * The following features are implemented: * <ul> * <li>{@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getProjectState <em>Project State</em>}</li> * <li>{@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getPrimarySpec <em>Primary Spec</em>}</li> * <li>{@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getTagSpecs <em>Tag Specs</em>}</li> * <li>{@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getNextVersion <em>Next Version</em>}</li> * <li>{@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getPreviousVersion <em>Previous Version</em>}</li> * <li>{@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getChanges <em>Changes</em>}</li> * <li>{@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getLogMessage <em>Log Message</em>}</li> * </ul> * </p> * * @generated */ public class VersionImpl extends EObjectImpl implements Version { /** * The cached value of the '{@link #getProjectState() <em>Project State</em>}' containment reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @see #getProjectState() * @generated * @ordered */ protected Project projectState; /** * The cached value of the '{@link #getPrimarySpec() <em>Primary Spec</em>}' containment reference. * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getPrimarySpec() * @generated * @ordered */ protected PrimaryVersionSpec primarySpec; /** * The cached value of the '{@link #getTagSpecs() <em>Tag Specs</em>}' containment reference list. * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getTagSpecs() * @generated * @ordered */ protected EList<TagVersionSpec> tagSpecs; /** * The cached value of the '{@link #getNextVersion() <em>Next Version</em>}' reference. * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getNextVersion() * @generated * @ordered */ protected Version nextVersion; /** * The cached value of the '{@link #getPreviousVersion() <em>Previous Version</em>}' reference. * <!-- begin-user-doc --> <!-- * end-user-doc --> * @see #getPreviousVersion() * @generated * @ordered */ protected Version previousVersion; /** * The cached value of the '{@link #getChanges() <em>Changes</em>}' containment reference. * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getChanges() * @generated * @ordered */ protected ChangePackage changes; /** * The cached value of the '{@link #getLogMessage() <em>Log Message</em>}' containment reference. * <!-- begin-user-doc --> <!-- end-user-doc --> * @see #getLogMessage() * @generated * @ordered */ protected LogMessage logMessage; /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ protected VersionImpl() { super(); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override protected EClass eStaticClass() { return VersioningPackage.Literals.VERSION; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Project getProjectStateGen() { if (projectState != null && projectState.eIsProxy()) { InternalEObject oldProjectState = (InternalEObject)projectState; projectState = (Project)eResolveProxy(oldProjectState); if (projectState != oldProjectState) { InternalEObject newProjectState = (InternalEObject)projectState; NotificationChain msgs = oldProjectState.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PROJECT_STATE, null, null); if (newProjectState.eInternalContainer() == null) { msgs = newProjectState.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PROJECT_STATE, null, msgs); } if (msgs != null) msgs.dispatch(); if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, VersioningPackage.VERSION__PROJECT_STATE, oldProjectState, projectState)); } } return projectState; } // begin of custom code /** * Retrieve the corresponding project state and init its ids. <!-- * begin-user-doc --> <!-- end-user-doc --> * * @return the project representing this version or null if there is no full * representation at this version (will not recalculate the state * from previous versions) * @generated NOT */ public Project getProjectState() { if ((projectState != null && projectState.eIsProxy())) { ProjectImpl project = (ProjectImpl) getProjectStateGen(); Resource resource = project.eResource(); if (resource instanceof XMIResource) { EMap<EObject, ModelElementId> eObjectToIdMap = loadIdsFromResource((XMIResource) resource); // create reverse mapping Map<ModelElementId, EObject> idToEObjectMap = new HashMap<ModelElementId, EObject>( eObjectToIdMap.size()); for (Map.Entry<EObject, ModelElementId> entry : eObjectToIdMap .entrySet()) { idToEObjectMap.put(entry.getValue(), entry.getKey()); } project.initCaches(eObjectToIdMap.map(), idToEObjectMap); } return project; } return getProjectStateGen(); } // end of custom code /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Project basicGetProjectState() { return projectState; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public NotificationChain basicSetProjectState(Project newProjectState, NotificationChain msgs) { Project oldProjectState = projectState; projectState = newProjectState; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__PROJECT_STATE, oldProjectState, newProjectState); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public void setProjectState(Project newProjectState) { if (newProjectState != projectState) { NotificationChain msgs = null; if (projectState != null) msgs = ((InternalEObject)projectState).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PROJECT_STATE, null, msgs); if (newProjectState != null) msgs = ((InternalEObject)newProjectState).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PROJECT_STATE, null, msgs); msgs = basicSetProjectState(newProjectState, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__PROJECT_STATE, newProjectState, newProjectState)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public PrimaryVersionSpec getPrimarySpec() { if (primarySpec != null && primarySpec.eIsProxy()) { InternalEObject oldPrimarySpec = (InternalEObject)primarySpec; primarySpec = (PrimaryVersionSpec)eResolveProxy(oldPrimarySpec); if (primarySpec != oldPrimarySpec) { InternalEObject newPrimarySpec = (InternalEObject)primarySpec; NotificationChain msgs = oldPrimarySpec.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PRIMARY_SPEC, null, null); if (newPrimarySpec.eInternalContainer() == null) { msgs = newPrimarySpec.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PRIMARY_SPEC, null, msgs); } if (msgs != null) msgs.dispatch(); if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, VersioningPackage.VERSION__PRIMARY_SPEC, oldPrimarySpec, primarySpec)); } } return primarySpec; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public PrimaryVersionSpec basicGetPrimarySpec() { return primarySpec; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public NotificationChain basicSetPrimarySpec( PrimaryVersionSpec newPrimarySpec, NotificationChain msgs) { PrimaryVersionSpec oldPrimarySpec = primarySpec; primarySpec = newPrimarySpec; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__PRIMARY_SPEC, oldPrimarySpec, newPrimarySpec); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public void setPrimarySpec(PrimaryVersionSpec newPrimarySpec) { if (newPrimarySpec != primarySpec) { NotificationChain msgs = null; if (primarySpec != null) msgs = ((InternalEObject)primarySpec).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PRIMARY_SPEC, null, msgs); if (newPrimarySpec != null) msgs = ((InternalEObject)newPrimarySpec).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__PRIMARY_SPEC, null, msgs); msgs = basicSetPrimarySpec(newPrimarySpec, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__PRIMARY_SPEC, newPrimarySpec, newPrimarySpec)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public EList<TagVersionSpec> getTagSpecs() { if (tagSpecs == null) { tagSpecs = new EObjectContainmentEList.Resolving<TagVersionSpec>(TagVersionSpec.class, this, VersioningPackage.VERSION__TAG_SPECS); } return tagSpecs; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Version getNextVersion() { if (nextVersion != null && nextVersion.eIsProxy()) { InternalEObject oldNextVersion = (InternalEObject)nextVersion; nextVersion = (Version)eResolveProxy(oldNextVersion); if (nextVersion != oldNextVersion) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, VersioningPackage.VERSION__NEXT_VERSION, oldNextVersion, nextVersion)); } } return nextVersion; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Version basicGetNextVersion() { return nextVersion; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public NotificationChain basicSetNextVersion(Version newNextVersion, NotificationChain msgs) { Version oldNextVersion = nextVersion; nextVersion = newNextVersion; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__NEXT_VERSION, oldNextVersion, newNextVersion); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public void setNextVersion(Version newNextVersion) { if (newNextVersion != nextVersion) { NotificationChain msgs = null; if (nextVersion != null) msgs = ((InternalEObject)nextVersion).eInverseRemove(this, VersioningPackage.VERSION__PREVIOUS_VERSION, Version.class, msgs); if (newNextVersion != null) msgs = ((InternalEObject)newNextVersion).eInverseAdd(this, VersioningPackage.VERSION__PREVIOUS_VERSION, Version.class, msgs); msgs = basicSetNextVersion(newNextVersion, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__NEXT_VERSION, newNextVersion, newNextVersion)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Version getPreviousVersion() { if (previousVersion != null && previousVersion.eIsProxy()) { InternalEObject oldPreviousVersion = (InternalEObject)previousVersion; previousVersion = (Version)eResolveProxy(oldPreviousVersion); if (previousVersion != oldPreviousVersion) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, VersioningPackage.VERSION__PREVIOUS_VERSION, oldPreviousVersion, previousVersion)); } } return previousVersion; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public Version basicGetPreviousVersion() { return previousVersion; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public NotificationChain basicSetPreviousVersion( Version newPreviousVersion, NotificationChain msgs) { Version oldPreviousVersion = previousVersion; previousVersion = newPreviousVersion; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__PREVIOUS_VERSION, oldPreviousVersion, newPreviousVersion); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public void setPreviousVersion(Version newPreviousVersion) { if (newPreviousVersion != previousVersion) { NotificationChain msgs = null; if (previousVersion != null) msgs = ((InternalEObject)previousVersion).eInverseRemove(this, VersioningPackage.VERSION__NEXT_VERSION, Version.class, msgs); if (newPreviousVersion != null) msgs = ((InternalEObject)newPreviousVersion).eInverseAdd(this, VersioningPackage.VERSION__NEXT_VERSION, Version.class, msgs); msgs = basicSetPreviousVersion(newPreviousVersion, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__PREVIOUS_VERSION, newPreviousVersion, newPreviousVersion)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public ChangePackage getChangesGen() { if (changes != null && changes.eIsProxy()) { InternalEObject oldChanges = (InternalEObject)changes; changes = (ChangePackage)eResolveProxy(oldChanges); if (changes != oldChanges) { InternalEObject newChanges = (InternalEObject)changes; NotificationChain msgs = oldChanges.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__CHANGES, null, null); if (newChanges.eInternalContainer() == null) { msgs = newChanges.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__CHANGES, null, msgs); } if (msgs != null) msgs.dispatch(); if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, VersioningPackage.VERSION__CHANGES, oldChanges, changes)); } } return changes; } /** * Get the changes of a version and init the ids in the create/delete * operations. * * @return the change package containing all changes <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated NOT */ public ChangePackage getChanges() { if (changes != null && changes.eIsProxy()) { changes = getChangesGen(); for (AbstractOperation operation : changes.getOperations()) { // load ids from resource for each id map that is associated // with a CreateDeleteOperation Resource resource = operation.eResource(); if (operation instanceof CreateDeleteOperation && resource instanceof XMIResource) { CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation; EMap<EObject, ModelElementId> m = loadIdsFromResource((XMIResource) createDeleteOperation .eResource()); createDeleteOperation.getEObjectToIdMap().putAll(m); } } return changes; } return getChangesGen(); } // begin of custom code /** * Loads the XMI IDs from the given resource and returns them in a map * together with the object each ID belongs to. * * @param resource * the resource from which to load the ID mappings * @return a map consisting of object/id mappings, if the resource doesn't * contain an eobject/id mapping null will be returned */ private EMap<EObject, ModelElementId> loadIdsFromResource( XMIResource xmiResource) { EMap<EObject, ModelElementId> eObjectToIdMap; if (xmiResource != null) { // guess a rough initial size by looking at the size of the contents eObjectToIdMap = new BasicEMap<EObject, ModelElementId>(xmiResource .getContents().size()); TreeIterator<EObject> it = xmiResource.getAllContents(); while (it.hasNext()) { EObject obj = it.next(); String objId = xmiResource.getID(obj); if (objId != null) { ModelElementId modelElementId = ModelFactory.eINSTANCE .createModelElementId(); modelElementId.setId(objId); eObjectToIdMap.put(obj, modelElementId); } } return eObjectToIdMap; // .map(); } return null; } // end of custom code /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public ChangePackage basicGetChanges() { return changes; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public NotificationChain basicSetChanges(ChangePackage newChanges, NotificationChain msgs) { ChangePackage oldChanges = changes; changes = newChanges; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__CHANGES, oldChanges, newChanges); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public void setChanges(ChangePackage newChanges) { if (newChanges != changes) { NotificationChain msgs = null; if (changes != null) msgs = ((InternalEObject)changes).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__CHANGES, null, msgs); if (newChanges != null) msgs = ((InternalEObject)newChanges).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__CHANGES, null, msgs); msgs = basicSetChanges(newChanges, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__CHANGES, newChanges, newChanges)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public LogMessage getLogMessage() { if (logMessage != null && logMessage.eIsProxy()) { InternalEObject oldLogMessage = (InternalEObject)logMessage; logMessage = (LogMessage)eResolveProxy(oldLogMessage); if (logMessage != oldLogMessage) { InternalEObject newLogMessage = (InternalEObject)logMessage; NotificationChain msgs = oldLogMessage.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__LOG_MESSAGE, null, null); if (newLogMessage.eInternalContainer() == null) { msgs = newLogMessage.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__LOG_MESSAGE, null, msgs); } if (msgs != null) msgs.dispatch(); if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, VersioningPackage.VERSION__LOG_MESSAGE, oldLogMessage, logMessage)); } } return logMessage; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public LogMessage basicGetLogMessage() { return logMessage; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public NotificationChain basicSetLogMessage(LogMessage newLogMessage, NotificationChain msgs) { LogMessage oldLogMessage = logMessage; logMessage = newLogMessage; if (eNotificationRequired()) { ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__LOG_MESSAGE, oldLogMessage, newLogMessage); if (msgs == null) msgs = notification; else msgs.add(notification); } return msgs; } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ public void setLogMessage(LogMessage newLogMessage) { if (newLogMessage != logMessage) { NotificationChain msgs = null; if (logMessage != null) msgs = ((InternalEObject)logMessage).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__LOG_MESSAGE, null, msgs); if (newLogMessage != null) msgs = ((InternalEObject)newLogMessage).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - VersioningPackage.VERSION__LOG_MESSAGE, null, msgs); msgs = basicSetLogMessage(newLogMessage, msgs); if (msgs != null) msgs.dispatch(); } else if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, VersioningPackage.VERSION__LOG_MESSAGE, newLogMessage, newLogMessage)); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case VersioningPackage.VERSION__NEXT_VERSION: if (nextVersion != null) msgs = ((InternalEObject)nextVersion).eInverseRemove(this, VersioningPackage.VERSION__PREVIOUS_VERSION, Version.class, msgs); return basicSetNextVersion((Version)otherEnd, msgs); case VersioningPackage.VERSION__PREVIOUS_VERSION: if (previousVersion != null) msgs = ((InternalEObject)previousVersion).eInverseRemove(this, VersioningPackage.VERSION__NEXT_VERSION, Version.class, msgs); return basicSetPreviousVersion((Version)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 VersioningPackage.VERSION__PROJECT_STATE: return basicSetProjectState(null, msgs); case VersioningPackage.VERSION__PRIMARY_SPEC: return basicSetPrimarySpec(null, msgs); case VersioningPackage.VERSION__TAG_SPECS: return ((InternalEList<?>)getTagSpecs()).basicRemove(otherEnd, msgs); case VersioningPackage.VERSION__NEXT_VERSION: return basicSetNextVersion(null, msgs); case VersioningPackage.VERSION__PREVIOUS_VERSION: return basicSetPreviousVersion(null, msgs); case VersioningPackage.VERSION__CHANGES: return basicSetChanges(null, msgs); case VersioningPackage.VERSION__LOG_MESSAGE: return basicSetLogMessage(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 VersioningPackage.VERSION__PROJECT_STATE: if (resolve) return getProjectState(); return basicGetProjectState(); case VersioningPackage.VERSION__PRIMARY_SPEC: if (resolve) return getPrimarySpec(); return basicGetPrimarySpec(); case VersioningPackage.VERSION__TAG_SPECS: return getTagSpecs(); case VersioningPackage.VERSION__NEXT_VERSION: if (resolve) return getNextVersion(); return basicGetNextVersion(); case VersioningPackage.VERSION__PREVIOUS_VERSION: if (resolve) return getPreviousVersion(); return basicGetPreviousVersion(); case VersioningPackage.VERSION__CHANGES: if (resolve) return getChanges(); return basicGetChanges(); case VersioningPackage.VERSION__LOG_MESSAGE: if (resolve) return getLogMessage(); return basicGetLogMessage(); } 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 VersioningPackage.VERSION__PROJECT_STATE: setProjectState((Project)newValue); return; case VersioningPackage.VERSION__PRIMARY_SPEC: setPrimarySpec((PrimaryVersionSpec)newValue); return; case VersioningPackage.VERSION__TAG_SPECS: getTagSpecs().clear(); getTagSpecs().addAll((Collection<? extends TagVersionSpec>)newValue); return; case VersioningPackage.VERSION__NEXT_VERSION: setNextVersion((Version)newValue); return; case VersioningPackage.VERSION__PREVIOUS_VERSION: setPreviousVersion((Version)newValue); return; case VersioningPackage.VERSION__CHANGES: setChanges((ChangePackage)newValue); return; case VersioningPackage.VERSION__LOG_MESSAGE: setLogMessage((LogMessage)newValue); return; } super.eSet(featureID, newValue); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case VersioningPackage.VERSION__PROJECT_STATE: setProjectState((Project)null); return; case VersioningPackage.VERSION__PRIMARY_SPEC: setPrimarySpec((PrimaryVersionSpec)null); return; case VersioningPackage.VERSION__TAG_SPECS: getTagSpecs().clear(); return; case VersioningPackage.VERSION__NEXT_VERSION: setNextVersion((Version)null); return; case VersioningPackage.VERSION__PREVIOUS_VERSION: setPreviousVersion((Version)null); return; case VersioningPackage.VERSION__CHANGES: setChanges((ChangePackage)null); return; case VersioningPackage.VERSION__LOG_MESSAGE: setLogMessage((LogMessage)null); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case VersioningPackage.VERSION__PROJECT_STATE: return projectState != null; case VersioningPackage.VERSION__PRIMARY_SPEC: return primarySpec != null; case VersioningPackage.VERSION__TAG_SPECS: return tagSpecs != null && !tagSpecs.isEmpty(); case VersioningPackage.VERSION__NEXT_VERSION: return nextVersion != null; case VersioningPackage.VERSION__PREVIOUS_VERSION: return previousVersion != null; case VersioningPackage.VERSION__CHANGES: return changes != null; case VersioningPackage.VERSION__LOG_MESSAGE: return logMessage != null; } return super.eIsSet(featureID); } } // VersionImpl