--- /dev/null
+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