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