diff options
author | Laurent Fasani | 2021-04-28 14:09:02 +0000 |
---|---|---|
committer | Laurent Fasani | 2021-04-28 14:09:02 +0000 |
commit | 6731a5bc6bf2482e7fd55b8aa76f817359319d03 (patch) | |
tree | 4a34bacf25a8b3674bc05609feac78ad12044b66 /plugins/org.eclipse.sirius.diagram/src-core/org | |
parent | f4c2c6304df8f0ca74f42ea5a83e5b5820f895db (diff) | |
download | org.eclipse.sirius-6731a5bc6bf2482e7fd55b8aa76f817359319d03.tar.gz org.eclipse.sirius-6731a5bc6bf2482e7fd55b8aa76f817359319d03.tar.xz org.eclipse.sirius-6731a5bc6bf2482e7fd55b8aa76f817359319d03.zip |
Before this commit, only dangling originalStyle features were unset. Now
all originalStyle features are unset.
Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=572828
Change-Id: Ie9aa87ba47cd57d8a34511cda6897fee681995a9
Signed-off-by: Laurent Fasani <laurent.fasani@obeo.fr>
Diffstat (limited to 'plugins/org.eclipse.sirius.diagram/src-core/org')
-rw-r--r-- | plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/migration/UnsetOriginalStyleFeatureMigrationParticipant.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/migration/UnsetOriginalStyleFeatureMigrationParticipant.java b/plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/migration/UnsetOriginalStyleFeatureMigrationParticipant.java index 017add79dd..8eed5c1ab5 100644 --- a/plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/migration/UnsetOriginalStyleFeatureMigrationParticipant.java +++ b/plugins/org.eclipse.sirius.diagram/src-core/org/eclipse/sirius/diagram/business/internal/migration/UnsetOriginalStyleFeatureMigrationParticipant.java @@ -25,9 +25,17 @@ import org.eclipse.emf.ecore.resource.Resource.Diagnostic; import org.eclipse.emf.ecore.xmi.UnresolvedReferenceException; import org.eclipse.emf.ecore.xmi.XMLResource; import org.eclipse.sirius.business.api.migration.AbstractRepresentationsFileMigrationParticipant; +import org.eclipse.sirius.business.api.query.DViewQuery; +import org.eclipse.sirius.diagram.DDiagram; +import org.eclipse.sirius.diagram.DDiagramElementContainer; +import org.eclipse.sirius.diagram.DEdge; +import org.eclipse.sirius.diagram.DNode; +import org.eclipse.sirius.diagram.DNodeListElement; import org.eclipse.sirius.diagram.DiagramPackage; import org.eclipse.sirius.diagram.DiagramPlugin; import org.eclipse.sirius.diagram.Messages; +import org.eclipse.sirius.diagram.business.api.query.DDiagramQuery; +import org.eclipse.sirius.viewpoint.DAnalysis; import org.osgi.framework.Version; /** @@ -66,6 +74,37 @@ public class UnsetOriginalStyleFeatureMigrationParticipant extends AbstractRepre return super.getValue(object, feature, value, loadedVersion); } + /** + * This method is overridden to unset originalStyle features.<br/> + * It is not sufficient to implement {@code getValue(EObject , EStructuralFeature , Object , String )} method for + * not dangling features. + * + * @see org.eclipse.sirius.business.api.migration.AbstractRepresentationsFileMigrationParticipant#postLoad(org.eclipse.sirius.viewpoint.DAnalysis, + * org.osgi.framework.Version) + */ + @Override + protected void postLoad(DAnalysis dAnalysis, Version loadedVersion) { + if (loadedVersion.compareTo(MIGRATION_VERSION) < 0) { + //@formatter:off + dAnalysis.getOwnedViews().stream() + .flatMap(dView -> new DViewQuery(dView).getLoadedRepresentations().stream()) + .filter(DDiagram.class::isInstance) + .flatMap(diagram -> new DDiagramQuery((DDiagram) diagram).getAllDiagramElements().stream()) + .forEach(diagElement -> { + if (diagElement instanceof DNode) { + ((DNode) diagElement).setOriginalStyle(null); + } else if (diagElement instanceof DEdge) { + ((DEdge) diagElement).setOriginalStyle(null); + } else if (diagElement instanceof DDiagramElementContainer) { + ((DDiagramElementContainer) diagElement).setOriginalStyle(null); + } else if (diagElement instanceof DNodeListElement) { + ((DNodeListElement) diagElement).setOriginalStyle(null); + } + }); + //@formatter:on + } + } + @Override public void postLoad(XMLResource resource, String loadedVersion) { Iterator<Diagnostic> iterator = resource.getErrors().iterator(); |