]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.route.ontology/src/org/simantics/district/route/ontology/RouteResource.java
def312552f17b6e1a1cf0b95d6005762d2a549af
[simantics/district.git] / org.simantics.district.route.ontology / src / org / simantics / district / route / ontology / RouteResource.java
1 package org.simantics.district.route.ontology;
2
3 import org.simantics.db.RequestProcessor;
4 import org.simantics.db.Resource;
5 import org.simantics.db.ReadGraph;
6 import org.simantics.db.request.Read;
7 import org.simantics.db.Session;
8 import org.simantics.db.exception.DatabaseException;
9 import org.simantics.db.service.QueryControl;
10
11 public class RouteResource {
12     
13     public final Resource Route;
14     public final Resource RouteFolder;
15         
16     public static class URIs {
17         public static final String Route = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Route";
18         public static final String RouteFolder = "http://www.simantics.org/DistrictNetworkRoutes-1.0/RouteFolder";
19     }
20     
21     public static Resource getResourceOrNull(ReadGraph graph, String uri) {
22         try {
23             return graph.getResource(uri);
24         } catch(DatabaseException e) {
25             System.err.println(e.getMessage());
26             return null;
27         }
28     }
29     
30     public RouteResource(ReadGraph graph) {
31         Route = getResourceOrNull(graph, URIs.Route);
32         RouteFolder = getResourceOrNull(graph, URIs.RouteFolder);
33     }
34     
35     public static RouteResource getInstance(ReadGraph graph) {
36         Session session = graph.getSession();
37         RouteResource ret = session.peekService(RouteResource.class);
38         if(ret == null) {
39             QueryControl qc = graph.getService(QueryControl.class);
40             ret = new RouteResource(qc.getIndependentGraph(graph));
41             session.registerService(RouteResource.class, ret);
42         }
43         return ret;
44     }
45     
46     public static RouteResource getInstance(RequestProcessor session) throws DatabaseException {
47         RouteResource ret = session.peekService(RouteResource.class);
48         if(ret == null) {
49             ret = session.syncRequest(new Read<RouteResource>() {
50                 public RouteResource perform(ReadGraph graph) throws DatabaseException {
51                     QueryControl qc = graph.getService(QueryControl.class);
52                     return new RouteResource(qc.getIndependentGraph(graph));
53                 }
54             });
55             session.registerService(RouteResource.class, ret);
56         }
57         return ret;
58     }
59     
60 }
61