]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/MigrateModel.java
Made SCLExpressionIssueProvider component requests synchronous
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / MigrateModel.java
index 16b8ae92aeca27e2e407f3e0bf911a5fc7c4e2ba..eb0b80709b70094fcdfff1f5900a70f35d0dee2e 100644 (file)
@@ -28,6 +28,7 @@ import org.simantics.db.WriteGraph;
 import org.simantics.db.common.NamedResource;
 import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.adapter.Instances;
 import org.simantics.db.layer0.util.Layer0Utils;
 import org.simantics.diagram.stubs.DiagramResource;
 import org.simantics.layer0.Layer0;
@@ -216,4 +217,28 @@ public class MigrateModel {
        public List<Triple<String, NamedResource, Collection<MigrationOperation>>> instances = new ArrayList<>();
        public List<MigrationOperation> sortedShownInstances = Collections.emptyList();
 
+       public static void changeComponentType(WriteGraph graph, Resource instance, Resource newComponentType) throws DatabaseException {
+           ModelingResources MOD = ModelingResources.getInstance(graph);
+           Resource newSymbol = graph.getSingleObject(newComponentType, MOD.ComponentTypeToSymbol);
+           new MigrationOperation(new NamedResource("", instance), new NamedResource("", newComponentType), new NamedResource("", newSymbol))
+           .perform(graph);
+       }
+
+       public static void changeAllComponentTypes(WriteGraph graph, Resource model, Resource oldComponentType, Resource newComponentType) throws DatabaseException {
+           ModelingResources MOD = ModelingResources.getInstance(graph);
+           NamedResource newComponentTypeN = new NamedResource("", newComponentType);
+        Resource newSymbol = graph.getSingleObject(newComponentType, MOD.ComponentTypeToSymbol);
+        NamedResource newSymbolN = new NamedResource("", newSymbol);
+        
+           Collection<Resource> instances = graph.adapt(oldComponentType, Instances.class).find(graph, model);
+           
+           for(Resource instance : instances) {
+               new MigrationOperation(
+                       new NamedResource("", instance),
+                       newComponentTypeN,
+                       newSymbolN)
+               .perform(graph);
+           }
+       }
+
 }