1 package org.simantics.modeling.migration;
\r
3 import java.util.List;
\r
5 import org.eclipse.core.runtime.IProgressMonitor;
\r
6 import org.simantics.db.Resource;
\r
7 import org.simantics.db.Session;
\r
8 import org.simantics.db.Statement;
\r
9 import org.simantics.db.WriteGraph;
\r
10 import org.simantics.db.common.CommentMetadata;
\r
11 import org.simantics.db.common.request.DelayedWriteRequest;
\r
12 import org.simantics.db.common.request.WriteRequest;
\r
13 import org.simantics.db.exception.DatabaseException;
\r
14 import org.simantics.db.layer0.migration.MigrationState;
\r
15 import org.simantics.db.layer0.migration.MigrationStep;
\r
16 import org.simantics.db.layer0.migration.MigrationUtils;
\r
17 import org.simantics.db.layer0.util.Layer0Utils;
\r
18 import org.simantics.db.layer0.util.RemoverUtil;
\r
19 import org.simantics.diagram.stubs.DiagramResource;
\r
20 import org.simantics.layer0.Layer0;
\r
21 import org.simantics.modeling.ModelingUtils;
\r
22 import org.simantics.utils.logging.TimeLogger;
\r
24 public class LayerCleanupMigrationStep implements MigrationStep {
\r
27 public void applyTo(final IProgressMonitor monitor, Session session, MigrationState state) throws DatabaseException {
\r
29 TimeLogger.log("LayerCleanupMigrationStep");
\r
31 final Resource indexRoot = MigrationUtils.getResource(monitor, session, state);
\r
32 if(indexRoot == null) return;
\r
34 monitor.setTaskName("Cleanup layers migration - remove layer assignments");
\r
36 session.sync(new DelayedWriteRequest() {
\r
39 public void perform(WriteGraph graph) throws DatabaseException {
\r
41 Layer0Utils.setDependenciesIndexingDisabled(graph, true);
\r
43 Layer0 L0 = Layer0.getInstance(graph);
\r
44 DiagramResource DIA = DiagramResource.getInstance(graph);
\r
46 for(Resource model : graph.getObjects(indexRoot, L0.ConsistsOf)) {
\r
48 List<Resource> elements = ModelingUtils.searchByType(graph, model, DIA.Element);
\r
49 for(Resource element : Layer0Utils.sortByCluster(graph, elements)) {
\r
50 for(Statement stm : graph.getStatements(element, DIA.IsFocusable))
\r
52 for(Statement stm : graph.getStatements(element, DIA.IsVisible))
\r
58 CommentMetadata cm = graph.getMetadata(CommentMetadata.class);
\r
59 graph.addMetadata(cm.add("Removing deprecated layer assignments from the model."));
\r
65 monitor.setTaskName("Cleanup layers migration - remove layers");
\r
67 session.sync(new WriteRequest() {
\r
71 public void perform(WriteGraph graph) throws DatabaseException {
\r
73 Layer0Utils.setDependenciesIndexingDisabled(graph, true);
\r
75 Layer0 L0 = Layer0.getInstance(graph);
\r
76 DiagramResource DIA = DiagramResource.getInstance(graph);
\r
78 for(Resource model : graph.getObjects(indexRoot, L0.ConsistsOf)) {
\r
80 for(Resource diagram : ModelingUtils.searchByType(graph, model, DIA.Composite)) {
\r
81 for(Resource layer : graph.getObjects(diagram, DIA.HasLayer))
\r
82 RemoverUtil.remove(graph, layer);
\r
87 CommentMetadata cm = graph.getMetadata(CommentMetadata.class);
\r
88 graph.addMetadata(cm.add("Removing deprecated layers from the model."));
\r
94 TimeLogger.log("LayerCleanupMigrationStep done");
\r