]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.route.ontology/src/org/simantics/district/route/ontology/RouteResource.java
Merge "Initial version of the district network Routes view."
[simantics/district.git] / org.simantics.district.route.ontology / src / org / simantics / district / route / ontology / RouteResource.java
diff --git a/org.simantics.district.route.ontology/src/org/simantics/district/route/ontology/RouteResource.java b/org.simantics.district.route.ontology/src/org/simantics/district/route/ontology/RouteResource.java
new file mode 100644 (file)
index 0000000..def3125
--- /dev/null
@@ -0,0 +1,61 @@
+package org.simantics.district.route.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 RouteResource {
+    
+    public final Resource Route;
+    public final Resource RouteFolder;
+        
+    public static class URIs {
+        public static final String Route = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Route";
+        public static final String RouteFolder = "http://www.simantics.org/DistrictNetworkRoutes-1.0/RouteFolder";
+    }
+    
+    public static Resource getResourceOrNull(ReadGraph graph, String uri) {
+        try {
+            return graph.getResource(uri);
+        } catch(DatabaseException e) {
+            System.err.println(e.getMessage());
+            return null;
+        }
+    }
+    
+    public RouteResource(ReadGraph graph) {
+        Route = getResourceOrNull(graph, URIs.Route);
+        RouteFolder = getResourceOrNull(graph, URIs.RouteFolder);
+    }
+    
+    public static RouteResource getInstance(ReadGraph graph) {
+        Session session = graph.getSession();
+        RouteResource ret = session.peekService(RouteResource.class);
+        if(ret == null) {
+            QueryControl qc = graph.getService(QueryControl.class);
+            ret = new RouteResource(qc.getIndependentGraph(graph));
+            session.registerService(RouteResource.class, ret);
+        }
+        return ret;
+    }
+    
+    public static RouteResource getInstance(RequestProcessor session) throws DatabaseException {
+        RouteResource ret = session.peekService(RouteResource.class);
+        if(ret == null) {
+            ret = session.syncRequest(new Read<RouteResource>() {
+                public RouteResource perform(ReadGraph graph) throws DatabaseException {
+                    QueryControl qc = graph.getService(QueryControl.class);
+                    return new RouteResource(qc.getIndependentGraph(graph));
+                }
+            });
+            session.registerService(RouteResource.class, ret);
+        }
+        return ret;
+    }
+    
+}
+