]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.interop/src/org/simantics/interop/stubs/InteropResource.java
53ca523079a89c67429402b7950c85de75c5d42c
[simantics/interop.git] / org.simantics.interop / src / org / simantics / interop / stubs / InteropResource.java
1 package org.simantics.interop.stubs;
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 InteropResource {
12     
13     public final Resource HasDestination;
14     public final Resource HasGeneratorID;
15     public final Resource HasGeneratorID_Inverse;
16     public final Resource HasImportData;
17     public final Resource HasInputResource;
18     public final Resource HasSource;
19     public final Resource ImportDataOf;
20     public final Resource ImportLibrary;
21         
22     public static class URIs {
23         public static final String HasDestination = "http://www.simantics.org/Interop-1.0/HasDestination";
24         public static final String HasGeneratorID = "http://www.simantics.org/Interop-1.0/HasGeneratorID";
25         public static final String HasGeneratorID_Inverse = "http://www.simantics.org/Interop-1.0/HasGeneratorID/Inverse";
26         public static final String HasImportData = "http://www.simantics.org/Interop-1.0/HasImportData";
27         public static final String HasInputResource = "http://www.simantics.org/Interop-1.0/HasInputResource";
28         public static final String HasSource = "http://www.simantics.org/Interop-1.0/HasSource";
29         public static final String ImportDataOf = "http://www.simantics.org/Interop-1.0/ImportDataOf";
30         public static final String ImportLibrary = "http://www.simantics.org/Interop-1.0/ImportLibrary";
31     }
32     
33     public static Resource getResourceOrNull(ReadGraph graph, String uri) {
34         try {
35             return graph.getResource(uri);
36         } catch(DatabaseException e) {
37             System.err.println(e.getMessage());
38             return null;
39         }
40     }
41     
42     public InteropResource(ReadGraph graph) {
43         HasDestination = getResourceOrNull(graph, URIs.HasDestination);
44         HasGeneratorID = getResourceOrNull(graph, URIs.HasGeneratorID);
45         HasGeneratorID_Inverse = getResourceOrNull(graph, URIs.HasGeneratorID_Inverse);
46         HasImportData = getResourceOrNull(graph, URIs.HasImportData);
47         HasInputResource = getResourceOrNull(graph, URIs.HasInputResource);
48         HasSource = getResourceOrNull(graph, URIs.HasSource);
49         ImportDataOf = getResourceOrNull(graph, URIs.ImportDataOf);
50         ImportLibrary = getResourceOrNull(graph, URIs.ImportLibrary);
51     }
52     
53     public static InteropResource getInstance(ReadGraph graph) {
54         Session session = graph.getSession();
55         InteropResource ret = session.peekService(InteropResource.class);
56         if(ret == null) {
57             QueryControl qc = graph.getService(QueryControl.class);
58             ret = new InteropResource(qc.getIndependentGraph(graph));
59             session.registerService(InteropResource.class, ret);
60         }
61         return ret;
62     }
63     
64     public static InteropResource getInstance(RequestProcessor session) throws DatabaseException {
65         InteropResource ret = session.peekService(InteropResource.class);
66         if(ret == null) {
67             ret = session.syncRequest(new Read<InteropResource>() {
68                 public InteropResource perform(ReadGraph graph) throws DatabaseException {
69                     QueryControl qc = graph.getService(QueryControl.class);
70                     return new InteropResource(qc.getIndependentGraph(graph));
71                 }
72             });
73             session.registerService(InteropResource.class, ret);
74         }
75         return ret;
76     }
77     
78 }
79