]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.region.ontology/src/org/simantics/district/region/ontology/DiagramRegionsResource.java
Add initial version of regions to source control
[simantics/district.git] / org.simantics.district.region.ontology / src / org / simantics / district / region / ontology / DiagramRegionsResource.java
diff --git a/org.simantics.district.region.ontology/src/org/simantics/district/region/ontology/DiagramRegionsResource.java b/org.simantics.district.region.ontology/src/org/simantics/district/region/ontology/DiagramRegionsResource.java
new file mode 100644 (file)
index 0000000..2777f8a
--- /dev/null
@@ -0,0 +1,70 @@
+package org.simantics.district.region.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 DiagramRegionsResource {
+    
+    public final Resource Region;
+    public final Resource Region_area;
+    public final Resource Region_area_Inverse;
+    public final Resource hasRegion;
+    public final Resource regionOf;
+        
+    public static class URIs {
+        public static final String Region = "http://www.simantics.org/DistrictDiagramRegions-1.0/Region";
+        public static final String Region_area = "http://www.simantics.org/DistrictDiagramRegions-1.0/Region/area";
+        public static final String Region_area_Inverse = "http://www.simantics.org/DistrictDiagramRegions-1.0/Region/area/Inverse";
+        public static final String hasRegion = "http://www.simantics.org/DistrictDiagramRegions-1.0/hasRegion";
+        public static final String regionOf = "http://www.simantics.org/DistrictDiagramRegions-1.0/regionOf";
+    }
+    
+    public static Resource getResourceOrNull(ReadGraph graph, String uri) {
+        try {
+            return graph.getResource(uri);
+        } catch(DatabaseException e) {
+            System.err.println(e.getMessage());
+            return null;
+        }
+    }
+    
+    public DiagramRegionsResource(ReadGraph graph) {
+        Region = getResourceOrNull(graph, URIs.Region);
+        Region_area = getResourceOrNull(graph, URIs.Region_area);
+        Region_area_Inverse = getResourceOrNull(graph, URIs.Region_area_Inverse);
+        hasRegion = getResourceOrNull(graph, URIs.hasRegion);
+        regionOf = getResourceOrNull(graph, URIs.regionOf);
+    }
+    
+    public static DiagramRegionsResource getInstance(ReadGraph graph) {
+        Session session = graph.getSession();
+        DiagramRegionsResource ret = session.peekService(DiagramRegionsResource.class);
+        if(ret == null) {
+            QueryControl qc = graph.getService(QueryControl.class);
+            ret = new DiagramRegionsResource(qc.getIndependentGraph(graph));
+            session.registerService(DiagramRegionsResource.class, ret);
+        }
+        return ret;
+    }
+    
+    public static DiagramRegionsResource getInstance(RequestProcessor session) throws DatabaseException {
+        DiagramRegionsResource ret = session.peekService(DiagramRegionsResource.class);
+        if(ret == null) {
+            ret = session.syncRequest(new Read<DiagramRegionsResource>() {
+                public DiagramRegionsResource perform(ReadGraph graph) throws DatabaseException {
+                    QueryControl qc = graph.getService(QueryControl.class);
+                    return new DiagramRegionsResource(qc.getIndependentGraph(graph));
+                }
+            });
+            session.registerService(DiagramRegionsResource.class, ret);
+        }
+        return ret;
+    }
+    
+}
+