diff options
| author | Maxime Porhel | 2016-04-14 13:40:11 +0000 |
|---|---|---|
| committer | Maxime Porhel | 2016-04-18 08:50:23 +0000 |
| commit | 58aaa6979c470740ef8f0bbd4e483afab6d7735c (patch) | |
| tree | 7ea52c20236f98382f65ed21c688bd42798b095b | |
| parent | fcfde6e2cc714fb3d2f3d749f375b872367107be (diff) | |
| download | org.eclipse.sirius-58aaa6979c470740ef8f0bbd4e483afab6d7735c.tar.gz org.eclipse.sirius-58aaa6979c470740ef8f0bbd4e483afab6d7735c.tar.xz org.eclipse.sirius-58aaa6979c470740ef8f0bbd4e483afab6d7735c.zip | |
[491604] DRepresentation merge into DView migration
Bug: 491604
Change-Id: I313340cfa8a4e4fd13dd721005735f8bcd6ad588
Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
7 files changed, 310 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.aird b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.aird new file mode 100644 index 0000000000..91ca52a257 --- /dev/null +++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.aird @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_qabOcALgEeabsea8lH150Q" selectedViews="_D-oBcALhEeabsea8lH150Q" version="10.1.0.201509162000"> + <semanticResources>dRepresentationContainerRemoval.ecore</semanticResources> + <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_D-oBcALhEeabsea8lH150Q"> + <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_GGSRgALhEeabsea8lH150Q" name="DRepresentationContainerRemoval"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_GGSRgQLhEeabsea8lH150Q" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_GGSRggLhEeabsea8lH150Q"/> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_GG-1EALhEeabsea8lH150Q" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_GG-1EQLhEeabsea8lH150Q" type="Sirius" element="_GGSRgALhEeabsea8lH150Q" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_GHWogALhEeabsea8lH150Q" type="2002" element="_GGSRgwLhEeabsea8lH150Q"> + <children xmi:type="notation:Node" xmi:id="_GIYjQALhEeabsea8lH150Q" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_GIbmkALhEeabsea8lH150Q" type="7001"> + <children xmi:type="notation:Node" xmi:id="_GIuhgALhEeabsea8lH150Q" type="3007" element="_GGSRhQLhEeabsea8lH150Q"> + <children xmi:type="notation:Node" xmi:id="_GIvIkALhEeabsea8lH150Q" type="5003"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_GIvIkQLhEeabsea8lH150Q" x="31"/> + </children> + <children xmi:type="notation:Node" xmi:id="_GJG8AALhEeabsea8lH150Q" type="3003" element="_GGSRhgLhEeabsea8lH150Q"> + <styles xmi:type="notation:ShapeStyle" xmi:id="_GJG8AQLhEeabsea8lH150Q" fontName=".SF NS Text"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GJG8AgLhEeabsea8lH150Q"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_GIuhgQLhEeabsea8lH150Q" fontName=".SF NS Text" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GIuhggLhEeabsea8lH150Q" x="31" y="30" width="30" height="30"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_GIbmkQLhEeabsea8lH150Q"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_GIbmkgLhEeabsea8lH150Q"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_GHWogQLhEeabsea8lH150Q" fontName=".SF NS Text" fontHeight="8"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GHWoggLhEeabsea8lH150Q"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_GG-1EgLhEeabsea8lH150Q"/> + </data> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_GGSRgwLhEeabsea8lH150Q" name="P1"> + <target xmi:type="ecore:EPackage" href="dRepresentationContainerRemoval.ecore#//P1"/> + <semanticElements xmi:type="ecore:EPackage" href="dRepresentationContainerRemoval.ecore#//P1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_GGSRhALhEeabsea8lH150Q" borderSize="1" borderSizeComputationExpression="1" backgroundColor="233,185,110" foregroundColor="253,206,137"> + <description xmi:type="style:FlatContainerStyleDescription" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']"/> + <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_GGSRhQLhEeabsea8lH150Q" name="C1" width="3" height="3"> + <target xmi:type="ecore:EClass" href="dRepresentationContainerRemoval.ecore#//P1/C1"/> + <semanticElements xmi:type="ecore:EClass" href="dRepresentationContainerRemoval.ecore#//P1/C1"/> + <ownedStyle xmi:type="diagram:Square" xmi:id="_GGSRhgLhEeabsea8lH150Q" color="173,127,168"> + <description xmi:type="style:SquareDescription" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:NodeMapping" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']"/> + </ownedDiagramElements> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_GGSRhwLhEeabsea8lH150Q"/> + <activatedLayers xmi:type="description_1:Layer" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="dRepresentationContainerRemoval.ecore#/"/> + </ownedRepresentations> + <viewpoint xmi:type="description:Viewpoint" href="dRepresentationContainerRemoval.odesign#//@ownedViewpoints[name='DRepresentationContainerRemoval']"/> + </ownedViews> +</viewpoint:DAnalysis> diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.ecore b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.ecore new file mode 100644 index 0000000000..fd8ad08e63 --- /dev/null +++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.ecore @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="P0"> + <eSubpackages name="P1"> + <eClassifiers xsi:type="ecore:EClass" name="C1"> + <eStructuralFeatures xsi:type="ecore:EReference" name="toC1" eType="#//P1/C1"/> + </eClassifiers> + </eSubpackages> +</ecore:EPackage> diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.odesign b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.odesign new file mode 100644 index 0000000000..a3ba0ecbc2 --- /dev/null +++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/dRepresentationContainerRemoval.odesign @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="ASCII"?> +<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" name="DRepresentationContainerRemoval" version="10.1.3.201511131800"> + <ownedViewpoints name="DRepresentationContainerRemoval" modelFileExtension="*.ecore"> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DRepresentationContainerRemoval" domainClass="EPackage"> + <defaultLayer name="Default"> + <edgeMappings name="EReference" semanticCandidatesExpression="aql:self.eAllContents(ecore::EReference)->select(e | not e.eOpposite)" sourceMapping="//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']" targetMapping="//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']/@subNodeMappings[name='EClass']" targetFinderExpression="aql:self.eType" sourceFinderExpression="aql:self.eContainer()" domainClass="EReference" useDomainElement="true"> + <style> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription showIcon="false" labelExpression="aql:self.name"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="EPackage" semanticCandidatesExpression="aql:self.eContents()->filter(ecore::EPackage)" domainClass="EPackage" reusedContainerMappings="//@ownedViewpoints[name='DRepresentationContainerRemoval']/@ownedRepresentations[name='DRepresentationContainerRemoval']/@defaultLayer/@containerMappings[name='EPackage']"> + <subNodeMappings name="EClass" semanticCandidatesExpression="aql:self.eContents()->filter(ecore::EClass)" domainClass="EClass"> + <style xsi:type="style:SquareDescription"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <color xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='purple']"/> + </style> + </subNodeMappings> + <style xsi:type="style:FlatContainerStyleDescription" arcWidth="1" arcHeight="1" borderSizeComputationExpression="1"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='chocolate']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_orange']"/> + </style> + </containerMappings> + </defaultLayer> + </ownedRepresentations> + </ownedViewpoints> +</description:Group> diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java index 64041bc18f..a79d4b50ce 100644 --- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/suite/common/AllCommonPluginTests.java @@ -111,6 +111,7 @@ import org.eclipse.sirius.tests.unit.diagram.migration.BorderSizeMigrationTest; import org.eclipse.sirius.tests.unit.diagram.migration.ComputedStyleDescriptionCachePackingFileMigrationParticipantTests; import org.eclipse.sirius.tests.unit.diagram.migration.CorruptedViewsMigrationTests; import org.eclipse.sirius.tests.unit.diagram.migration.DDiagramSetRemovalMigrationTest; +import org.eclipse.sirius.tests.unit.diagram.migration.DRepresentationContainerRemovalMigrationTest; import org.eclipse.sirius.tests.unit.diagram.migration.DiagramSplitMigrationTest; import org.eclipse.sirius.tests.unit.diagram.migration.FontFormatMigrationTest; import org.eclipse.sirius.tests.unit.diagram.migration.FontStyleForDNodeListElementMigrationTest; @@ -214,6 +215,7 @@ public class AllCommonPluginTests extends TestCase { suite.addTestSuite(FontFormatMigrationTest.class); suite.addTestSuite(BorderSizeMigrationTest.class); suite.addTestSuite(VariableMigrationTest.class); + suite.addTestSuite(DRepresentationContainerRemovalMigrationTest.class); suite.addTest(new JUnit4TestAdapter(CommonPreferencesTest.class)); suite.addTest(new JUnit4TestAdapter(GroupingContentProviderTest.class)); diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/DRepresentationContainerRemovalMigrationTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/DRepresentationContainerRemovalMigrationTest.java new file mode 100644 index 0000000000..07f706f238 --- /dev/null +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/migration/DRepresentationContainerRemovalMigrationTest.java @@ -0,0 +1,158 @@ +/******************************************************************************* + * Copyright (c) 2016 THALES GLOBAL SERVICES. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.tests.unit.diagram.migration; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Collections; + +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.resource.impl.ExtensibleURIConverterImpl; +import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; +import org.eclipse.emf.ecore.xmi.XMLResource; +import org.eclipse.sirius.business.internal.migration.DRepresentationContainerToDViewMigrationParticipant; +import org.eclipse.sirius.business.internal.migration.RepresentationsFileMigrationService; +import org.eclipse.sirius.ecore.extender.tool.api.ModelUtils; +import org.eclipse.sirius.tests.SiriusTestsPlugin; +import org.eclipse.sirius.tests.support.api.SiriusTestCase; +import org.eclipse.sirius.tools.api.command.ICommandFactory; +import org.eclipse.sirius.viewpoint.DAnalysis; +import org.eclipse.sirius.viewpoint.ViewpointPackage; +import org.osgi.framework.Version; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +/** + * Test class to test the load of aird serialized with DRepresentationContainer. + * + * @author mporhel + */ +public class DRepresentationContainerRemovalMigrationTest extends SiriusTestCase { + + private static final String DREPRESENTATION_CONTAINER_FOUND = "DRepresentationContainer found."; + + private static final String PATH = "/data/unit/migration/do_not_migrate/drepresentationContainerRemoval/"; + + private static final String SESSION_RESOURCE_NAME = "dRepresentationContainerRemoval.aird"; + + private static final String SEMANTIC_MODEL_FILENAME = "dRepresentationContainerRemoval.ecore"; + + private static final String VSM_RESOURCE_NAME = "dRepresentationContainerRemoval.odesign"; + + @Override + protected void setUp() throws Exception { + super.setUp(); + genericSetUp(); + copyFilesToTestProject(SiriusTestsPlugin.PLUGIN_ID, PATH, SEMANTIC_MODEL_FILENAME, SESSION_RESOURCE_NAME, VSM_RESOURCE_NAME); + } + + /** + * Test that the data were not migrated on the repo. It allows to check the + * effect of the migration in the other test. + */ + public void testMigrationIsNeededOnData() { + Version dRepresentationContainerRemovalVersion = DRepresentationContainerToDViewMigrationParticipant.MIGRATION_VERSION; + + // Check that the representation file migration is needed. + URI uri = URI.createPlatformPluginURI(SiriusTestsPlugin.PLUGIN_ID + PATH + SESSION_RESOURCE_NAME, true); + Version loadedVersion = checkRepresentationFileMigrationStatus(uri, true); + assertTrue("The DRepresentationContainer removal migration must be required on test data.", dRepresentationContainerRemovalVersion.compareTo(loadedVersion) > 0); + + // check the file contains DRepresentationContainer + checkFileContainsDRepresentationContainer(uri, true, "Test data should contain a DRepresentationContainer."); + } + + private void checkFileContainsDRepresentationContainer(URI uri, boolean expectedDRepresentationContainer, String errorMessage) { + boolean containsDDiagramSet = false; + ExtensibleURIConverterImpl uriConverterImpl = new ExtensibleURIConverterImpl(); + InputStream inputStream = null; + try { + inputStream = uriConverterImpl.createInputStream(uri); + SAXParserFactory factory = SAXParserFactory.newInstance(); + SAXParser saxParser = factory.newSAXParser(); + saxParser.parse(inputStream, new DefaultHandler() { + + @Override + public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { + if (qName.equals("ownedViews") && attributes.getValue("xmi:type").equals(ViewpointPackage.eINSTANCE.getNsPrefix() + ":" + "DRepresentationContainer")) { + throw new SAXException(DREPRESENTATION_CONTAINER_FOUND); + } + } + }); + } catch (SAXException e) { + if (e.getMessage().contains(DREPRESENTATION_CONTAINER_FOUND)) { + containsDDiagramSet = true; + } + } catch (Exception e) { + failCheckData(); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (final IOException e) { + failCheckData(); + } + } + } + assertEquals(errorMessage, expectedDRepresentationContainer, containsDDiagramSet); + } + + private void failCheckData() { + fail("Check the test data, we should not fail here."); + } + + /** + * Check the migration is done and does not produce errors during VSM load. + */ + public void testDRepresentationContainerRemovalMigrationDone() { + ResourceSet set = new ResourceSetImpl(); + DAnalysis analysis = null; + try { + analysis = (DAnalysis) ModelUtils.load(URI.createPlatformResourceURI(TEMPORARY_PROJECT_NAME + "/" + SESSION_RESOURCE_NAME, true), set); + } catch (IOException e) { + failCheckData(); + } + + // Check that the migration was done. + assertNotNull("Check the representation file test data.", analysis); + + // Check there are no more any types + assertTrue("Check the migration logic.", ((XMLResource) analysis.eResource()).getEObjectToExtensionMap().isEmpty()); + + // The version will change on save, so migration service will still + // indicates that the migration is needed. + String version = analysis.getVersion(); + assertTrue("Before save, the migration framework will return true even if the migration has been done during load.", + RepresentationsFileMigrationService.getInstance().isMigrationNeeded(Version.parseVersion(version))); + + try { + analysis.eResource().save(Collections.emptyMap()); + } catch (IOException e) { + failCheckData(); + } + // save should update the version. + version = analysis.getVersion(); + assertFalse("The version tag should now be set telling that the migration was done.", RepresentationsFileMigrationService.getInstance().isMigrationNeeded(Version.parseVersion(version))); + checkFileContainsDRepresentationContainer(analysis.eResource().getURI(), false, "After migration, the resource should not contains any DRepresentationContainer."); + assertFalse(getErrorLoggersMessage(), doesAnErrorOccurs()); + } + + @Override + protected ICommandFactory getCommandFactory() { + // TODO Auto-generated method stub + return null; + } +} diff --git a/plugins/org.eclipse.sirius/plugin.xml b/plugins/org.eclipse.sirius/plugin.xml index 26ac9a06d8..2cb3fe8f5b 100644 --- a/plugins/org.eclipse.sirius/plugin.xml +++ b/plugins/org.eclipse.sirius/plugin.xml @@ -378,6 +378,10 @@ class="org.eclipse.sirius.business.internal.migration.ReplaceModelsBySemanticResources" kind="RepresentationsFile"> </participant> + <participant + class="org.eclipse.sirius.business.internal.migration.DRepresentationContainerToDViewMigrationParticipant" + kind="RepresentationsFile"> + </participant> </extension> <extension point="org.eclipse.emf.ecore.generated_package"> <!-- @generated contribution --> diff --git a/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/DRepresentationContainerToDViewMigrationParticipant.java b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/DRepresentationContainerToDViewMigrationParticipant.java new file mode 100644 index 0000000000..3331428e91 --- /dev/null +++ b/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/internal/migration/DRepresentationContainerToDViewMigrationParticipant.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2016 THALES GLOBAL SERVICES. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.sirius.business.internal.migration; + +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.sirius.business.api.migration.AbstractRepresentationsFileMigrationParticipant; +import org.eclipse.sirius.viewpoint.ViewpointPackage; +import org.osgi.framework.Version; + +/** + * Migration to handle the merge of DRepresentationContainer into DView. + * + * @author mporhel + */ +public class DRepresentationContainerToDViewMigrationParticipant extends AbstractRepresentationsFileMigrationParticipant { + /** + * The VP version for which this migration is added. + */ + /** + * The version for which this migration is added. + */ + public static final Version MIGRATION_VERSION = new Version("11.0.0.201604141600"); //$NON-NLS-1$ + + @Override + public Version getMigrationVersion() { + return MIGRATION_VERSION; + } + + @Override + public EClassifier getType(EPackage ePackage, String name, String loadedVersion) { + EClassifier eClass = null; + if (Version.parseVersion(loadedVersion).compareTo(MIGRATION_VERSION) < 0) { + if (ViewpointPackage.eINSTANCE.equals(ePackage) && "DRepresentationContainer".equals(name)) { //$NON-NLS-1$ + eClass = ViewpointPackage.eINSTANCE.getDView(); + } + } + return eClass; + } +} |
