From: Tuukka Lehtonen Date: Mon, 8 Jan 2018 09:06:28 +0000 (+0200) Subject: Fixed MigrationUtils.importTo root activation to use virtual graph X-Git-Tag: v1.43.0~136^2~632 X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=commitdiff_plain;h=7aa402816a14f0f53bb6085da3ec670922ac58a4 Fixed MigrationUtils.importTo root activation to use virtual graph Also made the activation optional based on the new migration state key MigrationKeys.ACTIVATE_ROOT_IF_NONE_ACTIVE. refs #7686 Change-Id: I8b7c5868231c3b258bb1ad7f63fa96ba42390f24 --- diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationKeys.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationKeys.java index 2ac95e7f4..79f91dff9 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationKeys.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationKeys.java @@ -12,9 +12,10 @@ package org.simantics.db.layer0.migration; public class MigrationKeys { - - final public static String TG = "TransferableGraph"; - final public static String STEP_RESOURCE = "StepResource"; - final public static String IMPORTED_RESOURCE = "ImportedResource"; + + public static final String TG = "TransferableGraph"; + public static final String STEP_RESOURCE = "StepResource"; + public static final String IMPORTED_RESOURCE = "ImportedResource"; + public static final String ACTIVATE_ROOT_IF_NONE_ACTIVE = "ActivateRootIfNoneActive"; } diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationUtils.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationUtils.java index 58197619a..e1421df90 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationUtils.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/migration/MigrationUtils.java @@ -50,9 +50,11 @@ import org.simantics.db.layer0.adapter.impl.DefaultPasteHandler; import org.simantics.db.layer0.adapter.impl.SharedOntologyImportAdvisor; import org.simantics.db.layer0.adapter.impl.TrashBinRemover; import org.simantics.db.layer0.internal.SimanticsInternal; +import org.simantics.db.layer0.request.ActivateModel; import org.simantics.db.layer0.util.ExternalDownloadBean; import org.simantics.db.layer0.util.Layer0Utils; import org.simantics.db.layer0.util.TGTransferableGraphSource; +import org.simantics.db.request.Write; import org.simantics.db.service.XSupport; import org.simantics.graph.db.IImportAdvisor; import org.simantics.graph.db.ImportResult; @@ -92,13 +94,9 @@ public class MigrationUtils { // return getTG(session, state, true, false); // } - public static void clearTempResource(Session session, final Resource resource) { - session.asyncRequest(new WriteRequest() { - - @Override - public void perform(WriteGraph graph) throws DatabaseException { - graph.deny(resource, Layer0.getInstance(graph).PartOf); - } + public static void clearTempResource(Session session, Resource resource) { + session.asyncRequest((Write) graph -> { + graph.deny(resource, Layer0.getInstance(graph).PartOf); }); } @@ -108,13 +106,14 @@ public class MigrationUtils { private static void activateIfNoActiveModel(WriteGraph graph, Resource root, Resource parent) throws DatabaseException { Layer0X L0X = Layer0X.getInstance(graph); SimulationResource SIMU = SimulationResource.getInstance(graph); - if(!graph.hasStatement(parent, L0X.Activates) && graph.isInstanceOf(root, SIMU.Model)) - graph.claim(parent, L0X.Activates, root); + if (!graph.hasStatement(parent, L0X.Activates) && graph.isInstanceOf(root, SIMU.Model)) { + new ActivateModel(parent, root).perform(graph); + } } public static Collection importTo(IProgressMonitor monitor, Session session, MigrationState state, final Resource parent, final IImportAdvisor advisor) throws DatabaseException, TransferableGraphException { final Resource resource = getResource(monitor, session, state); - final ArrayList result = new ArrayList(); + final ArrayList result = new ArrayList<>(); if(resource != null) { session.syncRequest(new WriteRequest() { @@ -130,11 +129,11 @@ public class MigrationUtils { if(version != null) { VersionMap map = graph.syncRequest(new VersionMapRequest(parent)); if(map.contains(baseName, version)) { - String newName = graph.syncRequest(new FreshEscapedName(parent, Layer0.getInstance(graph).ConsistsOf, baseName)); + String newName = graph.syncRequest(new FreshEscapedName(parent, L0.ConsistsOf, baseName)); graph.claimLiteral(root, L0.HasName, newName + "@1", Bindings.STRING); } } else { - String newName = graph.syncRequest(new FreshEscapedName(parent, Layer0.getInstance(graph).ConsistsOf, baseName)); + String newName = graph.syncRequest(new FreshEscapedName(parent, L0.ConsistsOf, baseName)); if(!newName.equals(baseName)) { graph.claimLiteral(root, L0.HasName, newName, Bindings.STRING); } @@ -142,10 +141,10 @@ public class MigrationUtils { graph.deny(root, L0.PartOf); graph.claim(root, L0.PartOf, parent); - - // FIXME : Model activation must be done in "activations" virtual graph. - // FIXME : This step should be optional, not all the products use active models. - //activateIfNoActiveModel(graph, root, parent); + + if (Boolean.TRUE.equals( state.getProperty(MigrationKeys.ACTIVATE_ROOT_IF_NONE_ACTIVE) )) { + activateIfNoActiveModel(graph, root, parent); + } CommentMetadata cm = graph.getMetadata(CommentMetadata.class); graph.addMetadata(cm.add("Imported " + graph.getURI(root) + ", resource " + root)); @@ -189,9 +188,9 @@ public class MigrationUtils { public Collection perform(ReadGraph graph) throws DatabaseException { Layer0 L0 = Layer0.getInstance(graph); - ArrayList> steps = new ArrayList>(); + ArrayList> steps = new ArrayList<>(); Instances query = graph.adapt(L0.Migration, Instances.class); - Set migrations = new HashSet(); + Set migrations = new HashSet<>(); for(Resource ontology : Layer0Utils.listOntologies(graph)) { migrations.addAll(Layer0Utils.sortByCluster(graph, query.find(graph, ontology))); }