diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.evolution')
14 files changed, 1020 insertions, 45 deletions
diff --git a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore index b40781227a..27ffab9fbe 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore +++ b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore @@ -8,6 +8,9 @@ <eOperations name="getPreviousRelease" eType="#//Release"/> <eOperations name="getRootPackages" upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage"/> <eOperations name="getAllPackages" upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage"/> + <eOperations name="getPackage" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage"> + <eParameters name="nsURI" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + </eOperations> <eOperations name="containsElement" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"> <eParameters name="modelElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> </eOperations> @@ -45,6 +48,11 @@ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> <details key="constraints" value="ModelLoaded IDs_Exist NamespaceReflectsChange"/> </eAnnotations> + <eOperations name="ensureIDs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + <eOperations name="getPackage" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage"> + <eParameters name="nsURI" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + </eOperations> + <eOperations name="save"/> <eStructuralFeatures xsi:type="ecore:EReference" name="evolution" lowerBound="1" eType="#//Evolution" eOpposite="#//Evolution/models"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="uRI" eType="#//URI"> @@ -69,9 +77,18 @@ <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> <details key="constraints" value="NotEmpty PackagesUnique NoMissingPackages IDsUnique"/> </eAnnotations> + <eOperations name="ensureIDs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + <eOperations name="getModel" eType="#//Model"> + <eParameters name="nsURI" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + </eOperations> + <eOperations name="addModel" eType="#//Model"> + <eParameters name="uri" eType="#//URI"/> + </eOperations> <eOperations name="getRelease" eType="#//Release"> <eParameters name="version" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/> </eOperations> + <eOperations name="createRelease" eType="#//Release"/> + <eOperations name="save"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEcorePackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" defaultValueLiteral="true"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEresourcePackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> @@ -93,6 +110,8 @@ eType="#//Release" containment="true" eOpposite="#//Release/evolution"/> <eStructuralFeatures xsi:type="ecore:EReference" name="orderedReleases" upperBound="-1" eType="#//Release" changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="initialRelease" eType="#//Release" + changeable="false" volatile="true" transient="true" derived="true"/> <eStructuralFeatures xsi:type="ecore:EReference" name="latestRelease" eType="#//Release" changeable="false" volatile="true" transient="true" derived="true"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="nextReleaseVersion" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt" diff --git a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel index ae03a8ab51..5f120aaab1 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel +++ b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel @@ -4,8 +4,8 @@ modelPluginID="org.eclipse.emf.cdo.evolution" modelName="Evolution" modelPluginClass="org.eclipse.emf.cdo.evolution.impl.EvolutionPlugin" rootExtendsInterface="org.eclipse.emf.cdo.CDOObject" rootExtendsClass="org.eclipse.emf.internal.cdo.CDOObjectImpl" testsDirectory="" importerID="org.eclipse.emf.importer.cdo" featureDelegation="Dynamic" - complianceLevel="5.0" copyrightFields="false" optimizedHasChildren="true" colorProviders="true" - fontProviders="true" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore" + containmentProxies="true" complianceLevel="5.0" copyrightFields="false" optimizedHasChildren="true" + colorProviders="true" fontProviders="true" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore" operationReflection="true" importOrganizing="true" decoration="Live" styleProviders="true" cleanup="true" autoResizeProperties="true" findAction="true" collapseAllAction="true"> <foreignModel>evolution.ecore</foreignModel> @@ -30,6 +30,9 @@ <genOperations ecoreOperation="evolution.ecore#//ModelSet/getPreviousRelease"/> <genOperations ecoreOperation="evolution.ecore#//ModelSet/getRootPackages"/> <genOperations ecoreOperation="evolution.ecore#//ModelSet/getAllPackages"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getPackage"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getPackage/nsURI"/> + </genOperations> <genOperations ecoreOperation="evolution.ecore#//ModelSet/containsElement"> <genParameters ecoreParameter="evolution.ecore#//ModelSet/containsElement/modelElement"/> </genOperations> @@ -58,6 +61,11 @@ <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/allPackages"/> <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/referencedPackages"/> <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/missingPackages"/> + <genOperations ecoreOperation="evolution.ecore#//Model/ensureIDs"/> + <genOperations ecoreOperation="evolution.ecore#//Model/getPackage"> + <genParameters ecoreParameter="evolution.ecore#//Model/getPackage/nsURI"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//Model/save"/> </genClasses> <genClasses ecoreClass="evolution.ecore#//Evolution"> <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/useEcorePackage"/> @@ -70,11 +78,21 @@ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/missingPackages"/> <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/releases"/> <genFeatures property="Readonly" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/orderedReleases"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/initialRelease"/> <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/latestRelease"/> <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/nextReleaseVersion"/> + <genOperations ecoreOperation="evolution.ecore#//Evolution/ensureIDs"/> + <genOperations ecoreOperation="evolution.ecore#//Evolution/getModel"> + <genParameters ecoreParameter="evolution.ecore#//Evolution/getModel/nsURI"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//Evolution/addModel"> + <genParameters ecoreParameter="evolution.ecore#//Evolution/addModel/uri"/> + </genOperations> <genOperations ecoreOperation="evolution.ecore#//Evolution/getRelease"> <genParameters ecoreParameter="evolution.ecore#//Evolution/getRelease/version"/> </genOperations> + <genOperations ecoreOperation="evolution.ecore#//Evolution/createRelease"/> + <genOperations ecoreOperation="evolution.ecore#//Evolution/save"/> </genClasses> <genClasses ecoreClass="evolution.ecore#//Release"> <genFeatures property="None" notify="false" createChild="false" propertySortChoices="true" diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java index d77d774386..1b16dad216 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java @@ -327,4 +327,17 @@ public enum ChangeKind implements Enumerator return literal; } + public int indexWithin(ChangeKind... changeKinds) + { + for (int i = 0; i < changeKinds.length; i++) + { + if (changeKinds[i] == this) + { + return i; + } + } + + return -1; + } + } // ChangeKind diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java index 528cbb50d5..60116c48c0 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java @@ -3,6 +3,7 @@ package org.eclipse.emf.cdo.evolution; import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EPackage; import java.util.Map; @@ -27,6 +28,7 @@ import java.util.Set; * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getMissingPackages <em>Missing Packages</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getReleases <em>Releases</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getOrderedReleases <em>Ordered Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getInitialRelease <em>Initial Release</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getLatestRelease <em>Latest Release</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getNextReleaseVersion <em>Next Release Version</em>}</li> * </ul> @@ -50,7 +52,7 @@ public interface Evolution extends ModelSet * @return the value of the '<em>Models</em>' containment reference list. * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_Models() * @see org.eclipse.emf.cdo.evolution.Model#getEvolution - * @model opposite="evolution" containment="true" + * @model opposite="evolution" containment="true" resolveProxies="true" * @generated */ EList<Model> getModels(); @@ -208,7 +210,7 @@ public interface Evolution extends ModelSet * @return the value of the '<em>Releases</em>' containment reference list. * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_Releases() * @see org.eclipse.emf.cdo.evolution.Release#getEvolution - * @model opposite="evolution" containment="true" + * @model opposite="evolution" containment="true" resolveProxies="true" * @generated */ EList<Release> getReleases(); @@ -230,6 +232,21 @@ public interface Evolution extends ModelSet EList<Release> getOrderedReleases(); /** + * Returns the value of the '<em><b>Initial Release</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Initial Release</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Initial Release</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_InitialRelease() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + Release getInitialRelease(); + + /** * Returns the value of the '<em><b>Latest Release</b></em>' reference. * <!-- begin-user-doc --> * <p> @@ -260,6 +277,30 @@ public interface Evolution extends ModelSet int getNextReleaseVersion(); /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + boolean ensureIDs(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + Model getModel(String nsURI); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model uriDataType="org.eclipse.emf.cdo.evolution.URI" + * @generated + */ + Model addModel(URI uri); + + /** * Returns the value of the '<em><b>Missing Packages</b></em>' reference list. * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. * <!-- begin-user-doc --> @@ -283,4 +324,20 @@ public interface Evolution extends ModelSet */ Release getRelease(int version); + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + Release createRelease(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + void save(); + } // Evolution diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java index 3be6a2ddf1..6409c8f3fc 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java @@ -143,13 +143,22 @@ public interface EvolutionPackage extends EPackage int MODEL_SET___GET_ALL_PACKAGES = 4; /** + * The operation id for the '<em>Get Package</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_PACKAGE__STRING = 5; + + /** * The operation id for the '<em>Contains Element</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT = 5; + int MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT = 6; /** * The operation id for the '<em>Get Element</em>' operation. @@ -158,7 +167,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int MODEL_SET___GET_ELEMENT__STRING = 6; + int MODEL_SET___GET_ELEMENT__STRING = 7; /** * The operation id for the '<em>Get Element ID</em>' operation. @@ -167,7 +176,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT = 7; + int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT = 8; /** * The operation id for the '<em>Get Element ID</em>' operation. @@ -176,7 +185,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = 8; + int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = 9; /** * The operation id for the '<em>Compare</em>' operation. @@ -185,7 +194,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int MODEL_SET___COMPARE__MODELSET = 9; + int MODEL_SET___COMPARE__MODELSET = 10; /** * The operation id for the '<em>Get Migration</em>' operation. @@ -194,7 +203,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int MODEL_SET___GET_MIGRATION__STRING = 10; + int MODEL_SET___GET_MIGRATION__STRING = 11; /** * The number of operations of the '<em>Model Set</em>' class. @@ -203,7 +212,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int MODEL_SET_OPERATION_COUNT = 11; + int MODEL_SET_OPERATION_COUNT = 12; /** * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl <em>Model</em>}' class. @@ -289,13 +298,40 @@ public interface EvolutionPackage extends EPackage int MODEL_FEATURE_COUNT = 6; /** + * The operation id for the '<em>Ensure IDs</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL___ENSURE_IDS = 0; + + /** + * The operation id for the '<em>Get Package</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL___GET_PACKAGE__STRING = 1; + + /** + * The operation id for the '<em>Save</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL___SAVE = 2; + + /** * The number of operations of the '<em>Model</em>' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int MODEL_OPERATION_COUNT = 0; + int MODEL_OPERATION_COUNT = 3; /** * The feature id for the '<em><b>Change</b></em>' containment reference. @@ -406,13 +442,22 @@ public interface EvolutionPackage extends EPackage int EVOLUTION__ORDERED_RELEASES = MODEL_SET_FEATURE_COUNT + 9; /** + * The feature id for the '<em><b>Initial Release</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__INITIAL_RELEASE = MODEL_SET_FEATURE_COUNT + 10; + + /** * The feature id for the '<em><b>Latest Release</b></em>' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int EVOLUTION__LATEST_RELEASE = MODEL_SET_FEATURE_COUNT + 10; + int EVOLUTION__LATEST_RELEASE = MODEL_SET_FEATURE_COUNT + 11; /** * The feature id for the '<em><b>Next Release Version</b></em>' attribute. @@ -421,7 +466,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int EVOLUTION__NEXT_RELEASE_VERSION = MODEL_SET_FEATURE_COUNT + 11; + int EVOLUTION__NEXT_RELEASE_VERSION = MODEL_SET_FEATURE_COUNT + 12; /** * The number of structural features of the '<em>Evolution</em>' class. @@ -430,7 +475,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int EVOLUTION_FEATURE_COUNT = MODEL_SET_FEATURE_COUNT + 12; + int EVOLUTION_FEATURE_COUNT = MODEL_SET_FEATURE_COUNT + 13; /** * The operation id for the '<em>Get Evolution</em>' operation. @@ -478,6 +523,15 @@ public interface EvolutionPackage extends EPackage int EVOLUTION___GET_ALL_PACKAGES = MODEL_SET___GET_ALL_PACKAGES; /** + * The operation id for the '<em>Get Package</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_PACKAGE__STRING = MODEL_SET___GET_PACKAGE__STRING; + + /** * The operation id for the '<em>Contains Element</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -532,13 +586,58 @@ public interface EvolutionPackage extends EPackage int EVOLUTION___GET_MIGRATION__STRING = MODEL_SET___GET_MIGRATION__STRING; /** + * The operation id for the '<em>Ensure IDs</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___ENSURE_IDS = MODEL_SET_OPERATION_COUNT + 0; + + /** + * The operation id for the '<em>Get Model</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_MODEL__STRING = MODEL_SET_OPERATION_COUNT + 1; + + /** + * The operation id for the '<em>Add Model</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___ADD_MODEL__URI = MODEL_SET_OPERATION_COUNT + 2; + + /** * The operation id for the '<em>Get Release</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int EVOLUTION___GET_RELEASE__INT = MODEL_SET_OPERATION_COUNT + 0; + int EVOLUTION___GET_RELEASE__INT = MODEL_SET_OPERATION_COUNT + 3; + + /** + * The operation id for the '<em>Create Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___CREATE_RELEASE = MODEL_SET_OPERATION_COUNT + 4; + + /** + * The operation id for the '<em>Save</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___SAVE = MODEL_SET_OPERATION_COUNT + 5; /** * The number of operations of the '<em>Evolution</em>' class. @@ -547,7 +646,7 @@ public interface EvolutionPackage extends EPackage * @generated * @ordered */ - int EVOLUTION_OPERATION_COUNT = MODEL_SET_OPERATION_COUNT + 1; + int EVOLUTION_OPERATION_COUNT = MODEL_SET_OPERATION_COUNT + 6; /** * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl <em>Release</em>}' class. @@ -695,6 +794,15 @@ public interface EvolutionPackage extends EPackage int RELEASE___GET_ALL_PACKAGES = MODEL_SET___GET_ALL_PACKAGES; /** + * The operation id for the '<em>Get Package</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_PACKAGE__STRING = MODEL_SET___GET_PACKAGE__STRING; + + /** * The operation id for the '<em>Contains Element</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1433,6 +1541,16 @@ public interface EvolutionPackage extends EPackage EOperation getModelSet__GetAllPackages(); /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getPackage(java.lang.String) <em>Get Package</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Package</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getPackage(java.lang.String) + * @generated + */ + EOperation getModelSet__GetPackage__String(); + + /** * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#containsElement(org.eclipse.emf.ecore.EModelElement) <em>Contains Element</em>}' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1569,6 +1687,36 @@ public interface EvolutionPackage extends EPackage EReference getModel_MissingPackages(); /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Model#ensureIDs() <em>Ensure IDs</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Ensure IDs</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Model#ensureIDs() + * @generated + */ + EOperation getModel__EnsureIDs(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Model#getPackage(java.lang.String) <em>Get Package</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Package</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Model#getPackage(java.lang.String) + * @generated + */ + EOperation getModel__GetPackage__String(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Model#save() <em>Save</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Save</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Model#save() + * @generated + */ + EOperation getModel__Save(); + + /** * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.Evolution <em>Evolution</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1678,6 +1826,17 @@ public interface EvolutionPackage extends EPackage EReference getEvolution_OrderedReleases(); /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.Evolution#getInitialRelease <em>Initial Release</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Initial Release</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getInitialRelease() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_InitialRelease(); + + /** * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.Evolution#getLatestRelease <em>Latest Release</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1700,6 +1859,36 @@ public interface EvolutionPackage extends EPackage EAttribute getEvolution_NextReleaseVersion(); /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Evolution#ensureIDs() <em>Ensure IDs</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Ensure IDs</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Evolution#ensureIDs() + * @generated + */ + EOperation getEvolution__EnsureIDs(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Evolution#getModel(java.lang.String) <em>Get Model</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Model</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Evolution#getModel(java.lang.String) + * @generated + */ + EOperation getEvolution__GetModel__String(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Evolution#addModel(org.eclipse.emf.common.util.URI) <em>Add Model</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Add Model</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Evolution#addModel(org.eclipse.emf.common.util.URI) + * @generated + */ + EOperation getEvolution__AddModel__URI(); + + /** * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Evolution#getMissingPackages <em>Missing Packages</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -1721,6 +1910,26 @@ public interface EvolutionPackage extends EPackage EOperation getEvolution__GetRelease__int(); /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Evolution#createRelease() <em>Create Release</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Create Release</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Evolution#createRelease() + * @generated + */ + EOperation getEvolution__CreateRelease(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Evolution#save() <em>Save</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Save</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Evolution#save() + * @generated + */ + EOperation getEvolution__Save(); + + /** * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.Release <em>Release</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -2215,6 +2424,14 @@ public interface EvolutionPackage extends EPackage EOperation MODEL_SET___GET_ALL_PACKAGES = eINSTANCE.getModelSet__GetAllPackages(); /** + * The meta object literal for the '<em><b>Get Package</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_PACKAGE__STRING = eINSTANCE.getModelSet__GetPackage__String(); + + /** * The meta object literal for the '<em><b>Contains Element</b></em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -2321,6 +2538,30 @@ public interface EvolutionPackage extends EPackage EReference MODEL__MISSING_PACKAGES = eINSTANCE.getModel_MissingPackages(); /** + * The meta object literal for the '<em><b>Ensure IDs</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL___ENSURE_IDS = eINSTANCE.getModel__EnsureIDs(); + + /** + * The meta object literal for the '<em><b>Get Package</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL___GET_PACKAGE__STRING = eINSTANCE.getModel__GetPackage__String(); + + /** + * The meta object literal for the '<em><b>Save</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL___SAVE = eINSTANCE.getModel__Save(); + + /** * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl <em>Evolution</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -2403,6 +2644,14 @@ public interface EvolutionPackage extends EPackage EReference EVOLUTION__ORDERED_RELEASES = eINSTANCE.getEvolution_OrderedReleases(); /** + * The meta object literal for the '<em><b>Initial Release</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__INITIAL_RELEASE = eINSTANCE.getEvolution_InitialRelease(); + + /** * The meta object literal for the '<em><b>Latest Release</b></em>' reference feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -2419,6 +2668,30 @@ public interface EvolutionPackage extends EPackage EAttribute EVOLUTION__NEXT_RELEASE_VERSION = eINSTANCE.getEvolution_NextReleaseVersion(); /** + * The meta object literal for the '<em><b>Ensure IDs</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation EVOLUTION___ENSURE_IDS = eINSTANCE.getEvolution__EnsureIDs(); + + /** + * The meta object literal for the '<em><b>Get Model</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation EVOLUTION___GET_MODEL__STRING = eINSTANCE.getEvolution__GetModel__String(); + + /** + * The meta object literal for the '<em><b>Add Model</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation EVOLUTION___ADD_MODEL__URI = eINSTANCE.getEvolution__AddModel__URI(); + + /** * The meta object literal for the '<em><b>Missing Packages</b></em>' reference list feature. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -2435,6 +2708,22 @@ public interface EvolutionPackage extends EPackage EOperation EVOLUTION___GET_RELEASE__INT = eINSTANCE.getEvolution__GetRelease__int(); /** + * The meta object literal for the '<em><b>Create Release</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation EVOLUTION___CREATE_RELEASE = eINSTANCE.getEvolution__CreateRelease(); + + /** + * The meta object literal for the '<em><b>Save</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation EVOLUTION___SAVE = eINSTANCE.getEvolution__Save(); + + /** * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl <em>Release</em>}' class. * <!-- begin-user-doc --> * <!-- end-user-doc --> diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java index 77ad5c8e4e..a8cb53436c 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java @@ -150,6 +150,30 @@ public interface Model extends CDOObject */ EList<EPackage> getMissingPackages(); + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + boolean ensureIDs(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + EPackage getPackage(String nsURI); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + void save(); + public ModelStatus getStatus(); /** diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java index 9b4e61e5d5..2ef2cd0223 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java @@ -3,10 +3,13 @@ package org.eclipse.emf.cdo.evolution; import org.eclipse.emf.cdo.CDOObject; +import org.eclipse.emf.cdo.common.model.CDOPackageRegistry; import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EModelElement; import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EStructuralFeature; /** * <!-- begin-user-doc --> @@ -67,7 +70,7 @@ public interface ModelSet extends CDOObject * @return the value of the '<em>Migrations</em>' containment reference list. * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModelSet_Migrations() * @see org.eclipse.emf.cdo.evolution.Migration#getModelSet - * @model opposite="modelSet" containment="true" + * @model opposite="modelSet" containment="true" resolveProxies="true" * @generated */ EList<Migration> getMigrations(); @@ -118,6 +121,14 @@ public interface ModelSet extends CDOObject * @model * @generated */ + EPackage getPackage(String nsURI); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ boolean containsElement(EModelElement modelElement); /** @@ -160,4 +171,10 @@ public interface ModelSet extends CDOObject */ Migration getMigration(String diagnosticID); + EList<ElementChange> getElementChanges(EClass elementType, ChangeKind... changeKinds); + + EList<PropertyChange> getPropertyChanges(EStructuralFeature feature, ChangeKind... changeKinds); + + CDOPackageRegistry createPackageRegistry(); + } // ModelSet diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java index ef07d0dfbb..3a018c2384 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java @@ -153,7 +153,7 @@ public interface Release extends ModelSet, Comparable<Release> * <!-- end-user-doc --> * @return the value of the '<em>Root Packages</em>' containment reference list. * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_RootPackages() - * @model containment="true" + * @model containment="true" resolveProxies="true" * @generated */ EList<EPackage> getRootPackages(); diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java index a4af9491d0..e33de61206 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java @@ -3,16 +3,22 @@ package org.eclipse.emf.cdo.evolution.impl; import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; import org.eclipse.emf.cdo.evolution.EvolutionPackage; import org.eclipse.emf.cdo.evolution.Model; import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; import org.eclipse.net4j.util.collection.CollectionUtil; +import org.eclipse.net4j.util.io.IORuntimeException; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.common.util.ECollections; import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EModelElement; import org.eclipse.emf.ecore.EObject; @@ -24,8 +30,10 @@ import org.eclipse.emf.ecore.util.EcoreEList; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.ecore.util.InternalEList; +import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.Collection; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -49,6 +57,7 @@ import java.util.Set; * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getMissingPackages <em>Missing Packages</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getReleases <em>Releases</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getOrderedReleases <em>Ordered Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getInitialRelease <em>Initial Release</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getLatestRelease <em>Latest Release</em>}</li> * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getNextReleaseVersion <em>Next Release Version</em>}</li> * </ul> @@ -328,6 +337,72 @@ public class EvolutionImpl extends ModelSetImpl implements Evolution /** * <!-- begin-user-doc --> * <!-- end-user-doc --> + * @generated NOT + */ + public Release createRelease() + { + final EvolutionImpl evolution = (EvolutionImpl)getEvolution(); + final int nextVersion = evolution.getNextReleaseVersion(); + + Release release = EvolutionFactory.eINSTANCE.createRelease(); + release.setDate(new Date()); + release.setVersion(nextVersion); + + evolution.getReleases().add(release); + + Collection<EPackage> rootPackages = EcoreUtil.copyAll(evolution.getRootPackages()); + release.getRootPackages().addAll(rootPackages); + + // Prepare for new development... + + for (EPackage rootPackage : evolution.getRootPackages()) + { + ElementHandler.execute(rootPackage, new ElementRunnable() + { + public void run(EModelElement modelElement) + { + IDAnnotation.setOldValue(modelElement, null); + } + }); + } + + evolution.getMigrations().clear(); + + ModelSetChangeImpl change = (ModelSetChangeImpl)evolution.getChange(); + if (change != null) + { + change.reset(); + evolution.setChange(null); + } + + return release; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public void save() + { + try + { + eResource().save(null); + } + catch (IOException ex) + { + throw new IORuntimeException(ex); + } + + for (Model model : getModels()) + { + model.save(); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @@ -364,6 +439,33 @@ public class EvolutionImpl extends ModelSetImpl implements Evolution * <!-- end-user-doc --> * @generated */ + public Release getInitialRelease() + { + Release initialRelease = basicGetInitialRelease(); + return initialRelease != null && ((EObject)initialRelease).eIsProxy() ? (Release)eResolveProxy((InternalEObject)initialRelease) : initialRelease; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Release basicGetInitialRelease() + { + EList<Release> orderedReleases = getOrderedReleases(); + if (orderedReleases.isEmpty()) + { + return null; + } + + return orderedReleases.get(orderedReleases.size() - 1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public Release getLatestRelease() { Release latestRelease = basicGetLatestRelease(); @@ -400,6 +502,54 @@ public class EvolutionImpl extends ModelSetImpl implements Evolution /** * <!-- begin-user-doc --> * <!-- end-user-doc --> + * @generated NOT + */ + public boolean ensureIDs() + { + boolean modified = false; + + for (Model model : getModels()) + { + modified |= model.ensureIDs(); + } + + return modified; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Model getModel(String nsURI) + { + for (Model model : getModels()) + { + EPackage ePackage = model.getPackage(nsURI); + if (ePackage != null) + { + return model; + } + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Model addModel(URI uri) + { + Model model = EvolutionFactory.eINSTANCE.createModel(uri); + getModels().add(model); + return model; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @@ -464,6 +614,12 @@ public class EvolutionImpl extends ModelSetImpl implements Evolution return getReleases(); case EvolutionPackage.EVOLUTION__ORDERED_RELEASES: return getOrderedReleases(); + case EvolutionPackage.EVOLUTION__INITIAL_RELEASE: + if (resolve) + { + return getInitialRelease(); + } + return basicGetInitialRelease(); case EvolutionPackage.EVOLUTION__LATEST_RELEASE: if (resolve) { @@ -573,6 +729,8 @@ public class EvolutionImpl extends ModelSetImpl implements Evolution return !getReleases().isEmpty(); case EvolutionPackage.EVOLUTION__ORDERED_RELEASES: return !getOrderedReleases().isEmpty(); + case EvolutionPackage.EVOLUTION__INITIAL_RELEASE: + return basicGetInitialRelease() != null; case EvolutionPackage.EVOLUTION__LATEST_RELEASE: return basicGetLatestRelease() != null; case EvolutionPackage.EVOLUTION__NEXT_RELEASE_VERSION: @@ -591,8 +749,19 @@ public class EvolutionImpl extends ModelSetImpl implements Evolution { switch (operationID) { + case EvolutionPackage.EVOLUTION___ENSURE_IDS: + return ensureIDs(); + case EvolutionPackage.EVOLUTION___GET_MODEL__STRING: + return getModel((String)arguments.get(0)); + case EvolutionPackage.EVOLUTION___ADD_MODEL__URI: + return addModel((URI)arguments.get(0)); case EvolutionPackage.EVOLUTION___GET_RELEASE__INT: return getRelease((Integer)arguments.get(0)); + case EvolutionPackage.EVOLUTION___CREATE_RELEASE: + return createRelease(); + case EvolutionPackage.EVOLUTION___SAVE: + save(); + return null; } return super.eInvoke(operationID, arguments); } diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java index 3f66950b8f..0c1247a11e 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java @@ -286,7 +286,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ - public EOperation getModelSet__ContainsElement__EModelElement() + public EOperation getModelSet__GetPackage__String() { return modelSetEClass.getEOperations().get(5); } @@ -296,7 +296,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ - public EOperation getModelSet__GetElement__String() + public EOperation getModelSet__ContainsElement__EModelElement() { return modelSetEClass.getEOperations().get(6); } @@ -306,7 +306,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ - public EOperation getModelSet__GetElementID__EModelElement() + public EOperation getModelSet__GetElement__String() { return modelSetEClass.getEOperations().get(7); } @@ -316,7 +316,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ - public EOperation getModelSet__GetElementID__EModelElement_boolean() + public EOperation getModelSet__GetElementID__EModelElement() { return modelSetEClass.getEOperations().get(8); } @@ -326,7 +326,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ - public EOperation getModelSet__Compare__ModelSet() + public EOperation getModelSet__GetElementID__EModelElement_boolean() { return modelSetEClass.getEOperations().get(9); } @@ -336,7 +336,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ - public EOperation getModelSet__GetMigration__String() + public EOperation getModelSet__Compare__ModelSet() { return modelSetEClass.getEOperations().get(10); } @@ -346,6 +346,16 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ + public EOperation getModelSet__GetMigration__String() + { + return modelSetEClass.getEOperations().get(11); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public EClass getModel() { return modelEClass; @@ -416,6 +426,36 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ + public EOperation getModel__EnsureIDs() + { + return modelEClass.getEOperations().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModel__GetPackage__String() + { + return modelEClass.getEOperations().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModel__Save() + { + return modelEClass.getEOperations().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public EClass getEvolution() { return evolutionEClass; @@ -516,7 +556,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ - public EReference getEvolution_LatestRelease() + public EReference getEvolution_InitialRelease() { return (EReference)evolutionEClass.getEStructuralFeatures().get(10); } @@ -526,9 +566,49 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka * <!-- end-user-doc --> * @generated */ + public EReference getEvolution_LatestRelease() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(11); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public EAttribute getEvolution_NextReleaseVersion() { - return (EAttribute)evolutionEClass.getEStructuralFeatures().get(11); + return (EAttribute)evolutionEClass.getEStructuralFeatures().get(12); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getEvolution__EnsureIDs() + { + return evolutionEClass.getEOperations().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getEvolution__GetModel__String() + { + return evolutionEClass.getEOperations().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getEvolution__AddModel__URI() + { + return evolutionEClass.getEOperations().get(2); } /** @@ -548,7 +628,27 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka */ public EOperation getEvolution__GetRelease__int() { - return evolutionEClass.getEOperations().get(0); + return evolutionEClass.getEOperations().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getEvolution__CreateRelease() + { + return evolutionEClass.getEOperations().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getEvolution__Save() + { + return evolutionEClass.getEOperations().get(5); } /** @@ -972,6 +1072,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka createEOperation(modelSetEClass, MODEL_SET___GET_PREVIOUS_RELEASE); createEOperation(modelSetEClass, MODEL_SET___GET_ROOT_PACKAGES); createEOperation(modelSetEClass, MODEL_SET___GET_ALL_PACKAGES); + createEOperation(modelSetEClass, MODEL_SET___GET_PACKAGE__STRING); createEOperation(modelSetEClass, MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT); createEOperation(modelSetEClass, MODEL_SET___GET_ELEMENT__STRING); createEOperation(modelSetEClass, MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT); @@ -986,6 +1087,9 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka createEReference(modelEClass, MODEL__ALL_PACKAGES); createEReference(modelEClass, MODEL__REFERENCED_PACKAGES); createEReference(modelEClass, MODEL__MISSING_PACKAGES); + createEOperation(modelEClass, MODEL___ENSURE_IDS); + createEOperation(modelEClass, MODEL___GET_PACKAGE__STRING); + createEOperation(modelEClass, MODEL___SAVE); evolutionEClass = createEClass(EVOLUTION); createEAttribute(evolutionEClass, EVOLUTION__USE_ECORE_PACKAGE); @@ -998,9 +1102,15 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka createEReference(evolutionEClass, EVOLUTION__MISSING_PACKAGES); createEReference(evolutionEClass, EVOLUTION__RELEASES); createEReference(evolutionEClass, EVOLUTION__ORDERED_RELEASES); + createEReference(evolutionEClass, EVOLUTION__INITIAL_RELEASE); createEReference(evolutionEClass, EVOLUTION__LATEST_RELEASE); createEAttribute(evolutionEClass, EVOLUTION__NEXT_RELEASE_VERSION); + createEOperation(evolutionEClass, EVOLUTION___ENSURE_IDS); + createEOperation(evolutionEClass, EVOLUTION___GET_MODEL__STRING); + createEOperation(evolutionEClass, EVOLUTION___ADD_MODEL__URI); createEOperation(evolutionEClass, EVOLUTION___GET_RELEASE__INT); + createEOperation(evolutionEClass, EVOLUTION___CREATE_RELEASE); + createEOperation(evolutionEClass, EVOLUTION___SAVE); releaseEClass = createEClass(RELEASE); createEReference(releaseEClass, RELEASE__EVOLUTION); @@ -1099,7 +1209,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEReference(getModelSet_Change(), getModelSetChange(), null, "change", null, 0, 1, ModelSet.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); initEReference(getModelSet_Migrations(), getMigration(), getMigration_ModelSet(), "migrations", null, 0, -1, ModelSet.class, !IS_TRANSIENT, !IS_VOLATILE, - IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEOperation(getModelSet__GetEvolution(), getEvolution(), "getEvolution", 0, 1, IS_UNIQUE, IS_ORDERED); @@ -1111,8 +1221,10 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEOperation(getModelSet__GetAllPackages(), ecorePackage.getEPackage(), "getAllPackages", 0, -1, IS_UNIQUE, IS_ORDERED); - EOperation op = initEOperation(getModelSet__ContainsElement__EModelElement(), theEcorePackage.getEBoolean(), "containsElement", 0, 1, IS_UNIQUE, - IS_ORDERED); + EOperation op = initEOperation(getModelSet__GetPackage__String(), theEcorePackage.getEPackage(), "getPackage", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEString(), "nsURI", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getModelSet__ContainsElement__EModelElement(), theEcorePackage.getEBoolean(), "containsElement", 0, 1, IS_UNIQUE, IS_ORDERED); addEParameter(op, theEcorePackage.getEModelElement(), "modelElement", 0, 1, IS_UNIQUE, IS_ORDERED); op = initEOperation(getModelSet__GetElement__String(), null, "getElement", 0, 1, IS_UNIQUE, IS_ORDERED); @@ -1138,7 +1250,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getModel_Evolution(), getEvolution(), getEvolution_Models(), "evolution", null, 1, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, - IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getModel_URI(), getURI(), "uRI", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getModel_RootPackage(), theEcorePackage.getEPackage(), null, "rootPackage", null, 0, 1, Model.class, IS_TRANSIENT, IS_VOLATILE, @@ -1150,6 +1262,13 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEReference(getModel_MissingPackages(), theEcorePackage.getEPackage(), null, "missingPackages", null, 0, -1, Model.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEOperation(getModel__EnsureIDs(), ecorePackage.getEBoolean(), "ensureIDs", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getModel__GetPackage__String(), theEcorePackage.getEPackage(), "getPackage", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEString(), "nsURI", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getModel__Save(), null, "save", 0, 1, IS_UNIQUE, IS_ORDERED); + initEClass(evolutionEClass, Evolution.class, "Evolution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getEvolution_UseEcorePackage(), ecorePackage.getEBoolean(), "useEcorePackage", "true", 0, 1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); @@ -1160,7 +1279,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEAttribute(getEvolution_UniqueNamespaces(), ecorePackage.getEBoolean(), "uniqueNamespaces", "true", 0, 1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getEvolution_Models(), getModel(), getModel_Evolution(), "models", null, 0, -1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, - IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getEvolution_RootPackages(), theEcorePackage.getEPackage(), null, "rootPackages", null, 0, -1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); initEReference(getEvolution_AllPackages(), theEcorePackage.getEPackage(), null, "allPackages", null, 0, -1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, @@ -1168,20 +1287,34 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEReference(getEvolution_MissingPackages(), theEcorePackage.getEPackage(), null, "missingPackages", null, 0, -1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); initEReference(getEvolution_Releases(), getRelease(), getRelease_Evolution(), "releases", null, 0, -1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, - IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getEvolution_OrderedReleases(), getRelease(), null, "orderedReleases", null, 0, -1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_InitialRelease(), getRelease(), null, "initialRelease", null, 0, 1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, + !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); initEReference(getEvolution_LatestRelease(), getRelease(), null, "latestRelease", null, 0, 1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); initEAttribute(getEvolution_NextReleaseVersion(), theEcorePackage.getEInt(), "nextReleaseVersion", null, 0, 1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEOperation(getEvolution__EnsureIDs(), ecorePackage.getEBoolean(), "ensureIDs", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getEvolution__GetModel__String(), getModel(), "getModel", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEString(), "nsURI", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getEvolution__AddModel__URI(), getModel(), "addModel", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, getURI(), "uri", 0, 1, IS_UNIQUE, IS_ORDERED); + op = initEOperation(getEvolution__GetRelease__int(), getRelease(), "getRelease", 0, 1, IS_UNIQUE, IS_ORDERED); addEParameter(op, theEcorePackage.getEInt(), "version", 0, 1, IS_UNIQUE, IS_ORDERED); + initEOperation(getEvolution__CreateRelease(), getRelease(), "createRelease", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getEvolution__Save(), null, "save", 0, 1, IS_UNIQUE, IS_ORDERED); + initEClass(releaseEClass, Release.class, "Release", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getRelease_Evolution(), getEvolution(), getEvolution_Releases(), "evolution", null, 1, 1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, - IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getRelease_Version(), ecorePackage.getEInt(), "version", null, 1, 1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getRelease_Date(), ecorePackage.getEDate(), "date", null, 1, 1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, @@ -1191,7 +1324,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEReference(getRelease_PreviousRelease(), getRelease(), null, "previousRelease", null, 0, 1, Release.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); initEReference(getRelease_RootPackages(), theEcorePackage.getEPackage(), null, "rootPackages", null, 0, -1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, - IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getRelease_AllPackages(), theEcorePackage.getEPackage(), null, "allPackages", null, 0, -1, Release.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); @@ -1241,7 +1374,7 @@ public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPacka initEClass(migrationEClass, Migration.class, "Migration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getMigration_ModelSet(), getModelSet(), getModelSet_Migrations(), "modelSet", null, 0, 1, Migration.class, !IS_TRANSIENT, !IS_VOLATILE, - IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getMigration_DiagnosticID(), ecorePackage.getEString(), "diagnosticID", null, 0, 1, Migration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java index 5f37be483b..5f6faaa454 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java @@ -85,6 +85,16 @@ public abstract class MigrationImpl extends CDOObjectImpl implements Migration * <!-- end-user-doc --> * @generated */ + public ModelSet basicGetModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MIGRATION__MODEL_SET, EvolutionPackage.Literals.MIGRATION__MODEL_SET, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public NotificationChain basicSetModelSet(ModelSet newModelSet, NotificationChain msgs) { msgs = eBasicSetContainer((InternalEObject)newModelSet, EvolutionPackage.MIGRATION__MODEL_SET, msgs); @@ -184,7 +194,11 @@ public abstract class MigrationImpl extends CDOObjectImpl implements Migration switch (featureID) { case EvolutionPackage.MIGRATION__MODEL_SET: - return getModelSet(); + if (resolve) + { + return getModelSet(); + } + return basicGetModelSet(); case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: return getDiagnosticID(); } @@ -242,7 +256,7 @@ public abstract class MigrationImpl extends CDOObjectImpl implements Migration switch (featureID) { case EvolutionPackage.MIGRATION__MODEL_SET: - return getModelSet() != null; + return basicGetModelSet() != null; case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: return DIAGNOSTIC_ID_EDEFAULT == null ? getDiagnosticID() != null : !DIAGNOSTIC_ID_EDEFAULT.equals(getDiagnosticID()); } diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java index 577b41095b..b11d1f918c 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java @@ -7,17 +7,24 @@ import org.eclipse.emf.cdo.etypes.EtypesPackage; import org.eclipse.emf.cdo.evolution.Evolution; import org.eclipse.emf.cdo.evolution.EvolutionPackage; import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; import org.eclipse.emf.internal.cdo.CDOObjectImpl; import org.eclipse.emf.internal.cdo.util.CompletePackageClosure; import org.eclipse.emf.internal.cdo.util.IPackageClosure; +import org.eclipse.net4j.util.ObjectUtil; +import org.eclipse.net4j.util.io.IORuntimeException; + import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.ECollections; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.EcorePackage; @@ -27,6 +34,8 @@ import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.util.EcoreEList; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.Set; @@ -109,6 +118,16 @@ public class ModelImpl extends CDOObjectImpl implements Model * <!-- end-user-doc --> * @generated */ + public Evolution basicGetEvolution() + { + return (Evolution)eDynamicGet(EvolutionPackage.MODEL__EVOLUTION, EvolutionPackage.Literals.MODEL__EVOLUTION, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public NotificationChain basicSetEvolution(Evolution newEvolution, NotificationChain msgs) { msgs = eBasicSetContainer((InternalEObject)newEvolution, EvolutionPackage.MODEL__EVOLUTION, msgs); @@ -414,6 +433,64 @@ public class ModelImpl extends CDOObjectImpl implements Model /** * <!-- begin-user-doc --> * <!-- end-user-doc --> + * @generated NOT + */ + public boolean ensureIDs() + { + final boolean[] modified = { false }; + + ElementHandler.execute(getRootPackage(), new ElementRunnable() + { + public void run(EModelElement modelElement) + { + if (IDAnnotation.ensureValue(modelElement) != null) + { + modified[0] = true; + } + } + }); + + return modified[0]; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EPackage getPackage(String nsURI) + { + for (EPackage ePackage : getAllPackages()) + { + if (ObjectUtil.equals(ePackage.getNsURI(), nsURI)) + { + return ePackage; + } + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public void save() + { + try + { + eResource().save(null); + } + catch (IOException ex) + { + throw new IORuntimeException(ex); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> * @generated */ @Override @@ -474,7 +551,11 @@ public class ModelImpl extends CDOObjectImpl implements Model switch (featureID) { case EvolutionPackage.MODEL__EVOLUTION: - return getEvolution(); + if (resolve) + { + return getEvolution(); + } + return basicGetEvolution(); case EvolutionPackage.MODEL__URI: return getURI(); case EvolutionPackage.MODEL__ROOT_PACKAGE: @@ -544,7 +625,7 @@ public class ModelImpl extends CDOObjectImpl implements Model switch (featureID) { case EvolutionPackage.MODEL__EVOLUTION: - return getEvolution() != null; + return basicGetEvolution() != null; case EvolutionPackage.MODEL__URI: return URI_EDEFAULT == null ? getURI() != null : !URI_EDEFAULT.equals(getURI()); case EvolutionPackage.MODEL__ROOT_PACKAGE: @@ -559,6 +640,27 @@ public class ModelImpl extends CDOObjectImpl implements Model return super.eIsSet(featureID); } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException + { + switch (operationID) + { + case EvolutionPackage.MODEL___ENSURE_IDS: + return ensureIDs(); + case EvolutionPackage.MODEL___GET_PACKAGE__STRING: + return getPackage((String)arguments.get(0)); + case EvolutionPackage.MODEL___SAVE: + save(); + return null; + } + return super.eInvoke(operationID, arguments); + } + public ModelStatus getStatus() { return status; diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java index b7d7696a87..0ca60498bb 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java @@ -2,6 +2,8 @@ */ package org.eclipse.emf.cdo.evolution.impl; +import org.eclipse.emf.cdo.common.model.CDOPackageRegistry; +import org.eclipse.emf.cdo.common.model.CDOPackageUnit; import org.eclipse.emf.cdo.evolution.Change; import org.eclipse.emf.cdo.evolution.ChangeKind; import org.eclipse.emf.cdo.evolution.ElementChange; @@ -16,9 +18,12 @@ import org.eclipse.emf.cdo.evolution.Release; import org.eclipse.emf.cdo.evolution.util.ElementHandler; import org.eclipse.emf.cdo.evolution.util.ElementRunnable; import org.eclipse.emf.cdo.evolution.util.IDAnnotation; +import org.eclipse.emf.cdo.internal.common.model.CDOPackageRegistryImpl; +import org.eclipse.emf.cdo.spi.common.model.InternalCDOPackageRegistry.PackageLoader; import org.eclipse.emf.internal.cdo.CDOObjectImpl; +import org.eclipse.net4j.util.ImplementationError; import org.eclipse.net4j.util.ObjectUtil; import org.eclipse.net4j.util.collection.CollectionUtil; @@ -269,6 +274,24 @@ public abstract class ModelSetImpl extends CDOObjectImpl implements ModelSet * <!-- end-user-doc --> * @generated NOT */ + public EPackage getPackage(String nsURI) + { + for (EPackage ePackage : getAllPackages()) + { + if (ObjectUtil.equals(ePackage.getNsURI(), nsURI)) + { + return ePackage; + } + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ public abstract boolean containsElement(EModelElement modelElement); /** @@ -372,6 +395,87 @@ public abstract class ModelSetImpl extends CDOObjectImpl implements ModelSet return null; } + public EList<ElementChange> getElementChanges(EClass elementType, ChangeKind... changeKinds) + { + ModelSetChange modelSetChange = getChange(); + + EList<ElementChange> result = new BasicEList<ElementChange>(); + collectElementChanges(result, modelSetChange, elementType, changeKinds); + return result; + } + + private void collectElementChanges(EList<ElementChange> result, Change change, EClass elementType, ChangeKind... changeKinds) + { + if (change instanceof ElementChange) + { + ElementChange elementChange = (ElementChange)change; + + if (elementType == null || elementType.isSuperTypeOf(elementChange.getElement().eClass())) + { + if (changeKinds.length == 0 || elementChange.getKind().indexWithin(changeKinds) != -1) + { + result.add(elementChange); + } + } + } + + for (Change child : change.getChildren()) + { + collectElementChanges(result, child, elementType, changeKinds); + } + } + + public EList<PropertyChange> getPropertyChanges(EStructuralFeature feature, ChangeKind... changeKinds) + { + ModelSetChange modelSetChange = getChange(); + + EList<PropertyChange> result = new BasicEList<PropertyChange>(); + collectPropertyChanges(result, modelSetChange, feature, changeKinds); + return result; + } + + private void collectPropertyChanges(EList<PropertyChange> result, Change change, EStructuralFeature feature, ChangeKind... changeKinds) + { + if (change instanceof PropertyChange) + { + PropertyChange propertyChange = (PropertyChange)change; + + if (feature == null || feature == propertyChange.getFeature()) + { + if (changeKinds.length == 0 || propertyChange.getKind().indexWithin(changeKinds) != -1) + { + result.add(propertyChange); + } + } + } + + for (Change child : change.getChildren()) + { + collectPropertyChanges(result, child, feature, changeKinds); + } + } + + public CDOPackageRegistry createPackageRegistry() + { + CDOPackageRegistryImpl packageRegistry = new CDOPackageRegistryImpl(); + packageRegistry.setPackageLoader(new PackageLoader() + { + public EPackage[] loadPackages(CDOPackageUnit packageUnit) + { + throw new ImplementationError("All package units should be fully initialized -- no loading required"); + } + }); + + packageRegistry.activate(); + + for (EPackage rootPackage : getRootPackages()) + { + packageRegistry.putEPackage(rootPackage); + } + + return packageRegistry; + } + /** * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -505,6 +609,8 @@ public abstract class ModelSetImpl extends CDOObjectImpl implements ModelSet return getRootPackages(); case EvolutionPackage.MODEL_SET___GET_ALL_PACKAGES: return getAllPackages(); + case EvolutionPackage.MODEL_SET___GET_PACKAGE__STRING: + return getPackage((String)arguments.get(0)); case EvolutionPackage.MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT: return containsElement((EModelElement)arguments.get(0)); case EvolutionPackage.MODEL_SET___GET_ELEMENT__STRING: @@ -620,7 +726,7 @@ public abstract class ModelSetImpl extends CDOObjectImpl implements ModelSet System.out.println(kind + " " + getLabel(oldElement) + " --> " + getLabel(newElement)); } - ElementChange elementChange = getElementChange(newElement, oldElement, kind, previousElementChanges); + ElementChange elementChange = getElementChange(oldElement, newElement, kind, previousElementChanges); getParentChange(elementChange, result).getChildren().add(elementChange); result.getElementChanges().put(oldElement, elementChange); result.getElementChanges().put(newElement, elementChange); @@ -853,7 +959,7 @@ public abstract class ModelSetImpl extends CDOObjectImpl implements ModelSet return modelSetChange; } - private static ElementChange getElementChange(EModelElement newElement, EModelElement oldElement, ChangeKind kind, + private static ElementChange getElementChange(EModelElement oldElement, EModelElement newElement, ChangeKind kind, Map<EModelElement, ElementChange> previousElementChanges) { if (previousElementChanges != null) diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java index f219630386..02e96d9e56 100644 --- a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java @@ -207,6 +207,16 @@ public class ReleaseImpl extends ModelSetImpl implements Release * <!-- end-user-doc --> * @generated */ + public Evolution basicGetEvolution() + { + return (Evolution)eDynamicGet(EvolutionPackage.RELEASE__EVOLUTION, EvolutionPackage.Literals.RELEASE__EVOLUTION, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ public NotificationChain basicSetEvolution(Evolution newEvolution, NotificationChain msgs) { msgs = eBasicSetContainer((InternalEObject)newEvolution, EvolutionPackage.RELEASE__EVOLUTION, msgs); @@ -315,7 +325,11 @@ public class ReleaseImpl extends ModelSetImpl implements Release switch (featureID) { case EvolutionPackage.RELEASE__EVOLUTION: - return getEvolution(); + if (resolve) + { + return getEvolution(); + } + return basicGetEvolution(); case EvolutionPackage.RELEASE__VERSION: return getVersion(); case EvolutionPackage.RELEASE__DATE: @@ -405,7 +419,7 @@ public class ReleaseImpl extends ModelSetImpl implements Release switch (featureID) { case EvolutionPackage.RELEASE__EVOLUTION: - return getEvolution() != null; + return basicGetEvolution() != null; case EvolutionPackage.RELEASE__VERSION: return getVersion() != VERSION_EDEFAULT; case EvolutionPackage.RELEASE__DATE: |