]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.network.ui/src/org/simantics/district/network/ui/DNGraphLayerUtil.java
Some more added functionality to simantics district editor etc
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / DNGraphLayerUtil.java
1 package org.simantics.district.network.ui;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import org.simantics.db.ReadGraph;
7 import org.simantics.db.Resource;
8 import org.simantics.db.WriteGraph;
9 import org.simantics.db.exception.DatabaseException;
10 import org.simantics.diagram.stubs.DiagramResource;
11 import org.simantics.diagram.synchronization.graph.layer.GraphLayer;
12 import org.simantics.diagram.synchronization.graph.layer.GraphLayerUtil;
13 import org.simantics.diagram.synchronization.graph.layer.IGraphLayerUtil;
14 import org.simantics.district.network.ontology.DistrictNetworkResource;
15 import org.simantics.layer0.Layer0;
16
17 public class DNGraphLayerUtil implements IGraphLayerUtil {
18
19     public DNGraphLayerUtil(Resource layer) {
20         
21     }
22
23     @Override
24     public GraphLayer loadLayer(ReadGraph graph, Resource layer) throws DatabaseException {
25         Layer0 L0 = Layer0.getInstance(graph);
26         DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
27         DiagramResource DIA = DiagramResource.getInstance(graph);
28         String name = graph.getRelatedValue(layer, L0.HasName);
29         Resource inLayer = graph.getSingleObject(layer, DN.HasInLayerTag);
30         Resource visible = graph.getSingleObject(layer, DIA.HasVisibleTag);
31         Resource focusable = graph.getSingleObject(layer, DIA.HasFocusableTag);
32         
33         Map<String, Resource> properties = new HashMap<>();
34         properties.put(GraphLayer.PROP_FOCUSABLE, focusable);
35         properties.put(GraphLayer.PROP_VISIBLE, visible);
36         properties.put("IN_LAYER", inLayer);
37
38         return new GraphLayer(name, layer, properties);
39     }
40
41     @Override
42     public GraphLayer createLayer(WriteGraph graph, String layerName, boolean active) throws DatabaseException {
43         Layer0 L0 = Layer0.getInstance(graph);
44         DiagramResource DIA = DiagramResource.getInstance(graph);
45         DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
46         
47         
48         Resource layer = graph.newResource();
49         graph.claim(layer, L0.InstanceOf, null, DN.Layer);
50
51         // Assign tagging relations
52         Resource inLayerTag = GraphLayerUtil.newTag(graph, L0, DN.InLayer);
53         // for backwards compatibility
54         Resource visibleTag = GraphLayerUtil.newTag(graph, L0, DIA.IsVisible);
55         Resource focusableTag = GraphLayerUtil.newTag(graph, L0, DIA.IsFocusable);
56         graph.claim(layer, DN.HasInLayerTag, inLayerTag);
57         // for backwards compatibility
58         graph.claim(layer, DIA.HasVisibleTag, visibleTag);
59         graph.claim(layer, DIA.HasFocusableTag, focusableTag);
60
61         // Assign shared name property for all, the layer and the tags
62         Resource name = graph.newResource();
63         graph.claim(name, L0.InstanceOf, null, L0.String);
64         graph.claimValue(name, layerName);
65
66         graph.claim(layer, L0.HasName, name);
67         graph.claim(inLayerTag, L0.HasName, name);
68         graph.claim(visibleTag, L0.HasName, name);
69         graph.claim(focusableTag, L0.HasName, name);
70         
71         graph.claim(layer, DN.HasSpatialRefSystem, DN.EPSG_4326);
72
73         GraphLayerUtil.setLayerActive(graph, DIA, layer, active);
74
75         Map<String, Resource> properties = new HashMap<>();
76         properties.put("IN_LAYER", inLayerTag);
77         properties.put(GraphLayer.PROP_FOCUSABLE, focusableTag);
78         properties.put(GraphLayer.PROP_VISIBLE, visibleTag);
79         
80         return new GraphLayer(layerName, layer, properties);
81     }
82
83 }