]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui.ontology/src/org/simantics/district/network/ui/ontology/DistrictNetworkUIResource.java
First draft of vertex size adjusting district network diagram profiles
[simantics/district.git] / org.simantics.district.network.ui.ontology / src / org / simantics / district / network / ui / ontology / DistrictNetworkUIResource.java
diff --git a/org.simantics.district.network.ui.ontology/src/org/simantics/district/network/ui/ontology/DistrictNetworkUIResource.java b/org.simantics.district.network.ui.ontology/src/org/simantics/district/network/ui/ontology/DistrictNetworkUIResource.java
new file mode 100644 (file)
index 0000000..d6ae2f6
--- /dev/null
@@ -0,0 +1,64 @@
+package org.simantics.district.network.ui.ontology;
+
+import org.simantics.db.RequestProcessor;
+import org.simantics.db.Resource;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.request.Read;
+import org.simantics.db.Session;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.service.QueryControl;
+
+public class DistrictNetworkUIResource {
+    
+    public final Resource NetworkProperties;
+    public final Resource SelectionTab;
+    public final Resource SelectionTabContribution;
+        
+    public static class URIs {
+        public static final String NetworkProperties = "http://www.simantics.org/DistrictNetworkUI-1.0/NetworkProperties";
+        public static final String SelectionTab = "http://www.simantics.org/DistrictNetworkUI-1.0/SelectionTab";
+        public static final String SelectionTabContribution = "http://www.simantics.org/DistrictNetworkUI-1.0/SelectionTabContribution";
+    }
+    
+    public static Resource getResourceOrNull(ReadGraph graph, String uri) {
+        try {
+            return graph.getResource(uri);
+        } catch(DatabaseException e) {
+            System.err.println(e.getMessage());
+            return null;
+        }
+    }
+    
+    public DistrictNetworkUIResource(ReadGraph graph) {
+        NetworkProperties = getResourceOrNull(graph, URIs.NetworkProperties);
+        SelectionTab = getResourceOrNull(graph, URIs.SelectionTab);
+        SelectionTabContribution = getResourceOrNull(graph, URIs.SelectionTabContribution);
+    }
+    
+    public static DistrictNetworkUIResource getInstance(ReadGraph graph) {
+        Session session = graph.getSession();
+        DistrictNetworkUIResource ret = session.peekService(DistrictNetworkUIResource.class);
+        if(ret == null) {
+            QueryControl qc = graph.getService(QueryControl.class);
+            ret = new DistrictNetworkUIResource(qc.getIndependentGraph(graph));
+            session.registerService(DistrictNetworkUIResource.class, ret);
+        }
+        return ret;
+    }
+    
+    public static DistrictNetworkUIResource getInstance(RequestProcessor session) throws DatabaseException {
+        DistrictNetworkUIResource ret = session.peekService(DistrictNetworkUIResource.class);
+        if(ret == null) {
+            ret = session.syncRequest(new Read<DistrictNetworkUIResource>() {
+                public DistrictNetworkUIResource perform(ReadGraph graph) throws DatabaseException {
+                    QueryControl qc = graph.getService(QueryControl.class);
+                    return new DistrictNetworkUIResource(qc.getIndependentGraph(graph));
+                }
+            });
+            session.registerService(DistrictNetworkUIResource.class, ret);
+        }
+        return ret;
+    }
+    
+}
+