Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.evolution')
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore19
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel22
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java13
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java61
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java315
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java24
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java19
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java2
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java169
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java169
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java18
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java106
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java110
-rw-r--r--plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java18
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:

Back to the top