| /******************************************************************************* |
| * Copyright 2011 Chair for Applied Software Engineering, |
| * Technische Universitaet Muenchen. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under 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 java.util.Set; |
| |
| 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.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.EObjectWithInverseResolvingEList; |
| import org.eclipse.emf.ecore.util.InternalEList; |
| import org.eclipse.emf.ecore.xmi.XMIResource; |
| import org.eclipse.emf.emfstore.common.model.Project; |
| import org.eclipse.emf.emfstore.common.model.impl.ProjectImpl; |
| import org.eclipse.emf.emfstore.common.model.util.ModelUtil; |
| 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; |
| |
| /** |
| * <!-- 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> |
| * <li> |
| * {@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getAncestorVersion |
| * <em>Ancestor Version</em>}</li> |
| * <li> |
| * {@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getBranchedVersions |
| * <em>Branched Versions</em>}</li> |
| * <li> |
| * {@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getMergedToVersion |
| * <em>Merged To Version</em>}</li> |
| * <li> |
| * {@link org.eclipse.emf.emfstore.server.model.versioning.impl.VersionImpl#getMergedFromVersion |
| * <em>Merged From Version</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; |
| |
| /** |
| * The cached value of the '{@link #getAncestorVersion() |
| * <em>Ancestor Version</em>}' reference. <!-- begin-user-doc --> <!-- |
| * end-user-doc --> |
| * |
| * @see #getAncestorVersion() |
| * @generated |
| * @ordered |
| */ |
| protected Version ancestorVersion; |
| |
| /** |
| * The cached value of the '{@link #getBranchedVersions() |
| * <em>Branched Versions</em>}' reference list. <!-- begin-user-doc --> <!-- |
| * end-user-doc --> |
| * |
| * @see #getBranchedVersions() |
| * @generated |
| * @ordered |
| */ |
| protected EList<Version> branchedVersions; |
| |
| /** |
| * The cached value of the '{@link #getMergedToVersion() |
| * <em>Merged To Version</em>}' reference list. <!-- begin-user-doc --> <!-- |
| * end-user-doc --> |
| * |
| * @see #getMergedToVersion() |
| * @generated |
| * @ordered |
| */ |
| protected EList<Version> mergedToVersion; |
| |
| /** |
| * The cached value of the '{@link #getMergedFromVersion() |
| * <em>Merged From Version</em>}' reference list. <!-- begin-user-doc --> |
| * <!-- end-user-doc --> |
| * |
| * @see #getMergedFromVersion() |
| * @generated |
| * @ordered |
| */ |
| protected EList<Version> mergedFromVersion; |
| |
| /** |
| * <!-- 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) { |
| Set<EObject> allContainedModelElements = ModelUtil |
| .getAllContainedModelElements(project, false); |
| EMap<EObject, String> eObjectToIdMap = loadIdsFromResourceForEObjects( |
| allContainedModelElements, (XMIResource) resource); |
| |
| // create reverse mapping |
| Map<String, EObject> idToEObjectMap = new HashMap<String, EObject>( |
| eObjectToIdMap.size()); |
| |
| for (Map.Entry<EObject, String> 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 getChanges() { |
| 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; |
| } |
| |
| // 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, String> loadIdsFromResourceForEObjects( |
| Set<EObject> modelElements, XMIResource xmiResource) { |
| |
| EMap<EObject, String> eObjectToIdMap; |
| |
| if (xmiResource != null) { |
| // guess a rough initial size by looking at the size of the contents |
| eObjectToIdMap = new BasicEMap<EObject, String>(xmiResource |
| .getContents().size()); |
| |
| for (EObject eObject : modelElements) { |
| String objId = xmiResource.getID(eObject); |
| if (objId != null) { |
| eObjectToIdMap.put(eObject, objId); |
| } |
| } |
| |
| return eObjectToIdMap; |
| } |
| |
| 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 |
| */ |
| public Version getAncestorVersion() { |
| if (ancestorVersion != null && ancestorVersion.eIsProxy()) { |
| InternalEObject oldAncestorVersion = (InternalEObject) ancestorVersion; |
| ancestorVersion = (Version) eResolveProxy(oldAncestorVersion); |
| if (ancestorVersion != oldAncestorVersion) { |
| if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.RESOLVE, |
| VersioningPackage.VERSION__ANCESTOR_VERSION, |
| oldAncestorVersion, ancestorVersion)); |
| } |
| } |
| return ancestorVersion; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| * @generated |
| */ |
| public Version basicGetAncestorVersion() { |
| return ancestorVersion; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| * @generated |
| */ |
| public NotificationChain basicSetAncestorVersion( |
| Version newAncestorVersion, NotificationChain msgs) { |
| Version oldAncestorVersion = ancestorVersion; |
| ancestorVersion = newAncestorVersion; |
| if (eNotificationRequired()) { |
| ENotificationImpl notification = new ENotificationImpl(this, |
| Notification.SET, |
| VersioningPackage.VERSION__ANCESTOR_VERSION, |
| oldAncestorVersion, newAncestorVersion); |
| if (msgs == null) |
| msgs = notification; |
| else |
| msgs.add(notification); |
| } |
| return msgs; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| * @generated |
| */ |
| public void setAncestorVersion(Version newAncestorVersion) { |
| if (newAncestorVersion != ancestorVersion) { |
| NotificationChain msgs = null; |
| if (ancestorVersion != null) |
| msgs = ((InternalEObject) ancestorVersion).eInverseRemove(this, |
| VersioningPackage.VERSION__BRANCHED_VERSIONS, |
| Version.class, msgs); |
| if (newAncestorVersion != null) |
| msgs = ((InternalEObject) newAncestorVersion).eInverseAdd(this, |
| VersioningPackage.VERSION__BRANCHED_VERSIONS, |
| Version.class, msgs); |
| msgs = basicSetAncestorVersion(newAncestorVersion, msgs); |
| if (msgs != null) |
| msgs.dispatch(); |
| } else if (eNotificationRequired()) |
| eNotify(new ENotificationImpl(this, Notification.SET, |
| VersioningPackage.VERSION__ANCESTOR_VERSION, |
| newAncestorVersion, newAncestorVersion)); |
| } |
| |
| /** |
| * <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| * @generated |
| */ |
| public EList<Version> getBranchedVersions() { |
| if (branchedVersions == null) { |
| branchedVersions = new EObjectWithInverseResolvingEList<Version>( |
| Version.class, this, |
| VersioningPackage.VERSION__BRANCHED_VERSIONS, |
| VersioningPackage.VERSION__ANCESTOR_VERSION); |
| } |
| return branchedVersions; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| * @generated |
| */ |
| public EList<Version> getMergedToVersion() { |
| if (mergedToVersion == null) { |
| mergedToVersion = new EObjectWithInverseResolvingEList.ManyInverse<Version>( |
| Version.class, this, |
| VersioningPackage.VERSION__MERGED_TO_VERSION, |
| VersioningPackage.VERSION__MERGED_FROM_VERSION); |
| } |
| return mergedToVersion; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| * @generated |
| */ |
| public EList<Version> getMergedFromVersion() { |
| if (mergedFromVersion == null) { |
| mergedFromVersion = new EObjectWithInverseResolvingEList.ManyInverse<Version>( |
| Version.class, this, |
| VersioningPackage.VERSION__MERGED_FROM_VERSION, |
| VersioningPackage.VERSION__MERGED_TO_VERSION); |
| } |
| return mergedFromVersion; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| * @generated |
| */ |
| @SuppressWarnings("unchecked") |
| @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); |
| case VersioningPackage.VERSION__ANCESTOR_VERSION: |
| if (ancestorVersion != null) |
| msgs = ((InternalEObject) ancestorVersion).eInverseRemove(this, |
| VersioningPackage.VERSION__BRANCHED_VERSIONS, |
| Version.class, msgs); |
| return basicSetAncestorVersion((Version) otherEnd, msgs); |
| case VersioningPackage.VERSION__BRANCHED_VERSIONS: |
| return ((InternalEList<InternalEObject>) (InternalEList<?>) getBranchedVersions()) |
| .basicAdd(otherEnd, msgs); |
| case VersioningPackage.VERSION__MERGED_TO_VERSION: |
| return ((InternalEList<InternalEObject>) (InternalEList<?>) getMergedToVersion()) |
| .basicAdd(otherEnd, msgs); |
| case VersioningPackage.VERSION__MERGED_FROM_VERSION: |
| return ((InternalEList<InternalEObject>) (InternalEList<?>) getMergedFromVersion()) |
| .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 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); |
| case VersioningPackage.VERSION__ANCESTOR_VERSION: |
| return basicSetAncestorVersion(null, msgs); |
| case VersioningPackage.VERSION__BRANCHED_VERSIONS: |
| return ((InternalEList<?>) getBranchedVersions()).basicRemove( |
| otherEnd, msgs); |
| case VersioningPackage.VERSION__MERGED_TO_VERSION: |
| return ((InternalEList<?>) getMergedToVersion()).basicRemove( |
| otherEnd, msgs); |
| case VersioningPackage.VERSION__MERGED_FROM_VERSION: |
| return ((InternalEList<?>) getMergedFromVersion()).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 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(); |
| case VersioningPackage.VERSION__ANCESTOR_VERSION: |
| if (resolve) |
| return getAncestorVersion(); |
| return basicGetAncestorVersion(); |
| case VersioningPackage.VERSION__BRANCHED_VERSIONS: |
| return getBranchedVersions(); |
| case VersioningPackage.VERSION__MERGED_TO_VERSION: |
| return getMergedToVersion(); |
| case VersioningPackage.VERSION__MERGED_FROM_VERSION: |
| return getMergedFromVersion(); |
| } |
| 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; |
| case VersioningPackage.VERSION__ANCESTOR_VERSION: |
| setAncestorVersion((Version) newValue); |
| return; |
| case VersioningPackage.VERSION__BRANCHED_VERSIONS: |
| getBranchedVersions().clear(); |
| getBranchedVersions().addAll( |
| (Collection<? extends Version>) newValue); |
| return; |
| case VersioningPackage.VERSION__MERGED_TO_VERSION: |
| getMergedToVersion().clear(); |
| getMergedToVersion().addAll( |
| (Collection<? extends Version>) newValue); |
| return; |
| case VersioningPackage.VERSION__MERGED_FROM_VERSION: |
| getMergedFromVersion().clear(); |
| getMergedFromVersion().addAll( |
| (Collection<? extends Version>) 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; |
| case VersioningPackage.VERSION__ANCESTOR_VERSION: |
| setAncestorVersion((Version) null); |
| return; |
| case VersioningPackage.VERSION__BRANCHED_VERSIONS: |
| getBranchedVersions().clear(); |
| return; |
| case VersioningPackage.VERSION__MERGED_TO_VERSION: |
| getMergedToVersion().clear(); |
| return; |
| case VersioningPackage.VERSION__MERGED_FROM_VERSION: |
| getMergedFromVersion().clear(); |
| 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; |
| case VersioningPackage.VERSION__ANCESTOR_VERSION: |
| return ancestorVersion != null; |
| case VersioningPackage.VERSION__BRANCHED_VERSIONS: |
| return branchedVersions != null && !branchedVersions.isEmpty(); |
| case VersioningPackage.VERSION__MERGED_TO_VERSION: |
| return mergedToVersion != null && !mergedToVersion.isEmpty(); |
| case VersioningPackage.VERSION__MERGED_FROM_VERSION: |
| return mergedFromVersion != null && !mergedFromVersion.isEmpty(); |
| } |
| return super.eIsSet(featureID); |
| } |
| |
| } // VersionImpl |