]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.graphfile/src/org/simantics/graphfile/util/GraphFileUtil.java
Sync git svn branch with SVN repository r33144.
[simantics/platform.git] / bundles / org.simantics.graphfile / src / org / simantics / graphfile / util / GraphFileUtil.java
index d106f474663d0de50b2fbef0916238f1da162d81..3f668a0519c7b962cca1285d408171121937b0ca 100644 (file)
@@ -17,6 +17,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;\r
 import java.nio.ByteBuffer;\r
 import java.nio.channels.FileChannel;\r
+import java.nio.file.Path;\r
 import java.util.Collection;\r
 import java.util.HashMap;\r
 import java.util.Map;\r
@@ -29,6 +30,7 @@ import org.simantics.db.Resource;
 import org.simantics.db.WriteGraph;\r
 import org.simantics.db.common.request.ReadRequest;\r
 import org.simantics.db.common.request.WriteRequest;\r
+import org.simantics.db.common.request.WriteResultRequest;\r
 import org.simantics.db.common.utils.LiteralFileUtil;\r
 import org.simantics.db.exception.DatabaseException;\r
 import org.simantics.db.exception.DoesNotContainValueException;\r
@@ -540,4 +542,22 @@ public class GraphFileUtil {
                        }\r
                }\r
        }\r
+\r
+    public static Resource createFileReference(final Resource parent, final Path path) throws DatabaseException {\r
+        return Simantics.getSession().syncRequest(new WriteResultRequest<Resource>() {\r
+\r
+            @Override\r
+            public Resource perform(WriteGraph graph) throws DatabaseException {\r
+                Layer0 L0 = Layer0.getInstance(graph);\r
+                GraphFileResource GF = GraphFileResource.getInstance(graph);\r
+                Resource file = graph.newResource();\r
+                graph.claim(file, L0.PartOf, parent);\r
+                graph.claim(file, L0.InstanceOf, GF.File);\r
+                String name = path.getFileName().toString();\r
+                graph.claimLiteral(file, L0.HasName, name, Bindings.STRING);\r
+                graph.claimLiteral(file, GF.SystemPath, path.toAbsolutePath().toString(), Bindings.STRING);\r
+                return file;\r
+            }\r
+        });\r
+    }\r
 }\r