diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java new file mode 100644 index 0000000000..b06a02328f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java @@ -0,0 +1,276 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Model Set Change</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl#getOldModelSet <em>Old Model Set</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl#getNewModelSet <em>New Model Set</em>}</li> + * </ul> + * + * @generated + */ +public class ModelSetChangeImpl extends ChangeImpl implements ModelSetChange +{ + private final Map<EModelElement, ElementChange> elementChanges = new HashMap<EModelElement, ElementChange>(); + + private final Map<EModelElement, EModelElement> newToOldElements = new HashMap<EModelElement, EModelElement>(); + + private final Map<EModelElement, Set<EModelElement>> oldToNewElements = new HashMap<EModelElement, Set<EModelElement>>(); + + private final Set<EModelElement> addedElements = new HashSet<EModelElement>(); + + private final Set<EModelElement> removedElements = new HashSet<EModelElement>(); + + private ModelSet[] modelSetChain; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelSetChangeImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.MODEL_SET_CHANGE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ModelSet getOldModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSet basicGetOldModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setOldModelSet(ModelSet newOldModelSet) + { + eDynamicSet(EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, newOldModelSet); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ModelSet getNewModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSet basicGetNewModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setNewModelSet(ModelSet newNewModelSet) + { + eDynamicSet(EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, newNewModelSet); + } + + @Override + public ModelSetChange getModelSetChange() + { + return this; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + if (resolve) + { + return getOldModelSet(); + } + return basicGetOldModelSet(); + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + if (resolve) + { + return getNewModelSet(); + } + return basicGetNewModelSet(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + setOldModelSet((ModelSet)newValue); + return; + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + setNewModelSet((ModelSet)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + setOldModelSet((ModelSet)null); + return; + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + setNewModelSet((ModelSet)null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + return basicGetOldModelSet() != null; + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + return basicGetNewModelSet() != null; + } + return super.eIsSet(featureID); + } + + public Map<EModelElement, ElementChange> getElementChanges() + { + return elementChanges; + } + + public Map<EModelElement, EModelElement> getNewToOldElements() + { + return newToOldElements; + } + + public Map<EModelElement, Set<EModelElement>> getOldToNewElements() + { + return oldToNewElements; + } + + public Set<EModelElement> getAddedElements() + { + return addedElements; + } + + public Set<EModelElement> getRemovedElements() + { + return removedElements; + } + + public ModelSet[] getModelSetChain() + { + return modelSetChain; + } + + public void setModelSetChain(ModelSet[] modelSetChain) + { + this.modelSetChain = modelSetChain; + setOldModelSet(modelSetChain[0]); + setNewModelSet(modelSetChain[modelSetChain.length - 1]); + + } + + public Map<EModelElement, ElementChange> reset() + { + Map<EModelElement, ElementChange> result = new HashMap<EModelElement, ElementChange>(elementChanges); + + for (ElementChange elementChange : elementChanges.values()) + { + elementChange.getChildren().clear(); + } + + getChildren().clear(); + oldToNewElements.clear(); + newToOldElements.clear(); + addedElements.clear(); + removedElements.clear(); + elementChanges.clear(); + + return result; + } + +} // ModelSetChangeImpl |