]> gerrit.simantics Code Review - simantics/r.git/blobdiff - org.simantics.r/src/org/simantics/r/RModelUtils.java
refs #6626
[simantics/r.git] / org.simantics.r / src / org / simantics / r / RModelUtils.java
diff --git a/org.simantics.r/src/org/simantics/r/RModelUtils.java b/org.simantics.r/src/org/simantics/r/RModelUtils.java
new file mode 100644 (file)
index 0000000..0bf6ccf
--- /dev/null
@@ -0,0 +1,61 @@
+package org.simantics.r;\r
+\r
+import java.io.BufferedReader;\r
+import java.io.IOException;\r
+import java.nio.file.Files;\r
+import java.nio.file.Path;\r
+import java.util.Optional;\r
+\r
+import org.simantics.Simantics;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.common.request.WriteResultRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.layer0.request.Configuration;\r
+import org.simantics.modeling.ModelingUtils;\r
+\r
+public class RModelUtils {\r
+\r
+    private static Resource createModel(WriteGraph graph, Resource type, Resource target, String name, String sclMainContents) throws DatabaseException {\r
+        Resource model = ModelingUtils.createModel(graph, type, target, name);\r
+        Resource conf = graph.syncRequest(new Configuration(model));\r
+\r
+        ModelingUtils.addSCLMainToModel(graph, model, "SCLMain", sclMainContents);\r
+        ModelingUtils.createLocalLibrary(graph, model, "Library");\r
+        \r
+        return model;\r
+    }\r
+\r
+    public static Resource createRModel(final Resource target, final Path file) {\r
+        StringBuilder sb = new StringBuilder();\r
+        try (BufferedReader reader = Files.newBufferedReader(file)) {\r
+            String newLine = null;\r
+            while ((newLine = reader.readLine()) != null) {\r
+                sb.append(newLine).append("\n");\r
+            }\r
+        } catch (IOException e) {\r
+            e.printStackTrace();\r
+        }\r
+        final String sclMainContents = sb.toString();\r
+        if (!sclMainContents.isEmpty()) {\r
+            try {\r
+                return Simantics.sync(new WriteResultRequest<Resource>() {\r
+                    \r
+                    @Override\r
+                    public Resource perform(WriteGraph graph) throws DatabaseException {\r
+                        RResource R = RResource.getInstance(graph);\r
+                        String fileName = file.getFileName().toString();\r
+                        String[] parts = fileName.split("/");\r
+                        String modelName = parts[parts.length - 1]; \r
+                        \r
+                        Resource model = createModel(graph, R.Model, target, modelName, sclMainContents);\r
+                        return model;\r
+                    }\r
+                });\r
+            } catch (DatabaseException e) {\r
+                e.printStackTrace();\r
+            }\r
+        }\r
+        return null;\r
+    }\r
+}\r