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