]> gerrit.simantics Code Review - simantics/r.git/blob - bundles/org.simantics.r/src/org/simantics/r/RModelUtils.java
(refs #6833) Test RExp inheritance in SCL
[simantics/r.git] / bundles / org.simantics.r / src / org / simantics / r / RModelUtils.java
1 package org.simantics.r;\r
2 \r
3 import java.io.BufferedReader;\r
4 import java.io.IOException;\r
5 import java.nio.file.Files;\r
6 import java.nio.file.Path;\r
7 \r
8 import org.simantics.Simantics;\r
9 import org.simantics.db.Resource;\r
10 import org.simantics.db.WriteGraph;\r
11 import org.simantics.db.common.request.WriteResultRequest;\r
12 import org.simantics.db.exception.DatabaseException;\r
13 import org.simantics.db.layer0.request.Configuration;\r
14 import org.simantics.modeling.ModelingUtils;\r
15 \r
16 public class RModelUtils {\r
17 \r
18     private static Resource createModel(WriteGraph graph, Resource type, Resource target, String name, String sclMainContents) throws DatabaseException {\r
19         Resource model = ModelingUtils.createModel(graph, type, target, name);\r
20         @SuppressWarnings("unused")\r
21         Resource conf = graph.syncRequest(new Configuration(model));\r
22 \r
23         ModelingUtils.addSCLMainToModel(graph, model, "SCLMain", sclMainContents);\r
24         ModelingUtils.createLocalLibrary(graph, model, "Library");\r
25         \r
26         return model;\r
27     }\r
28 \r
29     public static Resource createRModel(final Resource target, final Path file) {\r
30         StringBuilder sb = new StringBuilder();\r
31         try (BufferedReader reader = Files.newBufferedReader(file)) {\r
32             String newLine = null;\r
33             while ((newLine = reader.readLine()) != null) {\r
34                 sb.append(newLine).append("\n");\r
35             }\r
36         } catch (IOException e) {\r
37             e.printStackTrace();\r
38         }\r
39         final String sclMainContents = sb.toString();\r
40         if (!sclMainContents.isEmpty()) {\r
41             try {\r
42                 return Simantics.sync(new WriteResultRequest<Resource>() {\r
43                     \r
44                     @Override\r
45                     public Resource perform(WriteGraph graph) throws DatabaseException {\r
46                         RResource R = RResource.getInstance(graph);\r
47                         String fileName = file.getFileName().toString();\r
48                         String[] parts = fileName.split("/");\r
49                         String modelName = parts[parts.length - 1]; \r
50                         \r
51                         Resource model = createModel(graph, R.Model, target, modelName, sclMainContents);\r
52                         return model;\r
53                     }\r
54                 });\r
55             } catch (DatabaseException e) {\r
56                 e.printStackTrace();\r
57             }\r
58         }\r
59         return null;\r
60     }\r
61 }\r