]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNGraphLayerUtil.java
Implement district features to Simantics platform
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / DNGraphLayerUtil.java
diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNGraphLayerUtil.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNGraphLayerUtil.java
new file mode 100644 (file)
index 0000000..27905a5
--- /dev/null
@@ -0,0 +1,66 @@
+package org.simantics.district.network.ui;\r
+\r
+import java.util.Collections;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.diagram.stubs.DiagramResource;\r
+import org.simantics.diagram.synchronization.graph.layer.GraphLayer;\r
+import org.simantics.diagram.synchronization.graph.layer.GraphLayerUtil;\r
+import org.simantics.diagram.synchronization.graph.layer.IGraphLayerUtil;\r
+import org.simantics.district.network.ontology.DistrictNetworkResource;\r
+import org.simantics.layer0.Layer0;\r
+\r
+public class DNGraphLayerUtil implements IGraphLayerUtil {\r
+\r
+    public DNGraphLayerUtil(Resource layer) {\r
+        \r
+    }\r
+\r
+    @Override\r
+    public GraphLayer loadLayer(ReadGraph graph, Resource layer) throws DatabaseException {\r
+        Layer0 L0 = Layer0.getInstance(graph);\r
+        DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);\r
+        String name = graph.getRelatedValue(layer, L0.HasName);\r
+        Resource inLayer = graph.getSingleObject(layer, DN.HasInLayerTag);\r
+        \r
+        Map<String, Resource> properties = new HashMap<>();\r
+        properties.put("IN_LAYER", inLayer);\r
+\r
+        return new GraphLayer(name, layer, properties);\r
+    }\r
+\r
+    @Override\r
+    public GraphLayer createLayer(WriteGraph graph, String layerName, boolean active) throws DatabaseException {\r
+        Layer0 L0 = Layer0.getInstance(graph);\r
+        DiagramResource DIA = DiagramResource.getInstance(graph);\r
+        DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);\r
+        \r
+        \r
+        Resource layer = graph.newResource();\r
+        graph.claim(layer, L0.InstanceOf, null, DN.Layer);\r
+\r
+        // Assign tagging relations\r
+        Resource inLayerTag = GraphLayerUtil.newTag(graph, L0, DN.InLayer);\r
+        graph.claim(layer, DN.HasInLayerTag, inLayerTag);\r
+\r
+        // Assign shared name property for all, the layer and the tags\r
+        Resource name = graph.newResource();\r
+        graph.claim(name, L0.InstanceOf, null, L0.String);\r
+        graph.claimValue(name, layerName);\r
+\r
+        graph.claim(layer, L0.HasName, name);\r
+        graph.claim(inLayerTag, L0.HasName, name);\r
+        \r
+        graph.claim(layer, DN.HasSpatialRefSystem, DN.EPSG_4326);\r
+\r
+        GraphLayerUtil.setLayerActive(graph, DIA, layer, active);\r
+\r
+        return new GraphLayer(layerName, layer, Collections.emptyMap());\r
+    }\r
+\r
+}\r