]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.layer0/src/org/simantics/layer0/DatabaseManagementResource.java
(refs #7177) Rounded connections
[simantics/platform.git] / bundles / org.simantics.layer0 / src / org / simantics / layer0 / DatabaseManagementResource.java
1 package org.simantics.layer0;
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 DatabaseManagementResource {
12     
13     public final Resource Bundles;
14     public final Resource GraphBundle;
15     public final Resource HasFile;
16     public final Resource HasFile_Inverse;
17     public final Resource HasHashCode;
18     public final Resource HasHashCode_Inverse;
19     public final Resource HasInstallInfo;
20     public final Resource HasInstallInfo_Inverse;
21     public final Resource HasVersionedId;
22     public final Resource HasVersionedId_Inverse;
23     public final Resource InstallInfo;
24     public final Resource InstalledGraphBundles;
25     public final Resource OSGiSymbolicName;
26     public final Resource OSGiVersion;
27     public final Resource VersionedId;
28         
29     public static class URIs {
30         public static final String Bundles = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/Bundles";
31         public static final String GraphBundle = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/GraphBundle";
32         public static final String HasFile = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasFile";
33         public static final String HasFile_Inverse = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasFile/Inverse";
34         public static final String HasHashCode = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasHashCode";
35         public static final String HasHashCode_Inverse = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasHashCode/Inverse";
36         public static final String HasInstallInfo = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasInstallInfo";
37         public static final String HasInstallInfo_Inverse = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasInstallInfo/Inverse";
38         public static final String HasVersionedId = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasVersionedId";
39         public static final String HasVersionedId_Inverse = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/HasVersionedId/Inverse";
40         public static final String InstallInfo = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/InstallInfo";
41         public static final String InstalledGraphBundles = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/InstalledGraphBundles";
42         public static final String OSGiSymbolicName = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/OSGiSymbolicName";
43         public static final String OSGiVersion = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/OSGiVersion";
44         public static final String VersionedId = "http://www.simantics.org/Layer0-1.1/DatabaseManagement/VersionedId";
45     }
46     
47     public static Resource getResourceOrNull(ReadGraph graph, String uri) {
48         try {
49             return graph.getResource(uri);
50         } catch(DatabaseException e) {
51             System.err.println(e.getMessage());
52             return null;
53         }
54     }
55     
56     public DatabaseManagementResource(ReadGraph graph) {
57         Bundles = getResourceOrNull(graph, URIs.Bundles);
58         GraphBundle = getResourceOrNull(graph, URIs.GraphBundle);
59         HasFile = getResourceOrNull(graph, URIs.HasFile);
60         HasFile_Inverse = getResourceOrNull(graph, URIs.HasFile_Inverse);
61         HasHashCode = getResourceOrNull(graph, URIs.HasHashCode);
62         HasHashCode_Inverse = getResourceOrNull(graph, URIs.HasHashCode_Inverse);
63         HasInstallInfo = getResourceOrNull(graph, URIs.HasInstallInfo);
64         HasInstallInfo_Inverse = getResourceOrNull(graph, URIs.HasInstallInfo_Inverse);
65         HasVersionedId = getResourceOrNull(graph, URIs.HasVersionedId);
66         HasVersionedId_Inverse = getResourceOrNull(graph, URIs.HasVersionedId_Inverse);
67         InstallInfo = getResourceOrNull(graph, URIs.InstallInfo);
68         InstalledGraphBundles = getResourceOrNull(graph, URIs.InstalledGraphBundles);
69         OSGiSymbolicName = getResourceOrNull(graph, URIs.OSGiSymbolicName);
70         OSGiVersion = getResourceOrNull(graph, URIs.OSGiVersion);
71         VersionedId = getResourceOrNull(graph, URIs.VersionedId);
72     }
73     
74     public static DatabaseManagementResource getInstance(ReadGraph graph) {
75         Session session = graph.getSession();
76         DatabaseManagementResource ret = session.peekService(DatabaseManagementResource.class);
77         if(ret == null) {
78             QueryControl qc = graph.getService(QueryControl.class);
79             ret = new DatabaseManagementResource(qc.getIndependentGraph(graph));
80             session.registerService(DatabaseManagementResource.class, ret);
81         }
82         return ret;
83     }
84     
85     public static DatabaseManagementResource getInstance(RequestProcessor session) throws DatabaseException {
86         DatabaseManagementResource ret = session.peekService(DatabaseManagementResource.class);
87         if(ret == null) {
88             ret = session.syncRequest(new Read<DatabaseManagementResource>() {
89                 public DatabaseManagementResource perform(ReadGraph graph) throws DatabaseException {
90                     QueryControl qc = graph.getService(QueryControl.class);
91                     return new DatabaseManagementResource(qc.getIndependentGraph(graph));
92                 }
93             });
94             session.registerService(DatabaseManagementResource.class, ret);
95         }
96         return ret;
97     }
98     
99 }
100