--- /dev/null
+package org.simantics.layer0;\r
+\r
+import org.simantics.db.RequestProcessor;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.request.Read;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.db.service.QueryControl;\r
+\r
+public class DublinCore {\r
+ \r
+ public final Resource Bar;\r
+ public final Resource Contributor;\r
+ public final Resource Coverage;\r
+ public final Resource Creator;\r
+ public final Resource Date;\r
+ public final Resource Date_Inverse;\r
+ public final Resource Description;\r
+ public final Resource Foo;\r
+ public final Resource Format;\r
+ public final Resource Identifier;\r
+ public final Resource Identifier_Inverse;\r
+ public final Resource Language;\r
+ public final Resource Publisher;\r
+ public final Resource Relation;\r
+ public final Resource Rights;\r
+ public final Resource Source;\r
+ public final Resource Subject;\r
+ public final Resource Title;\r
+ public final Resource Type;\r
+ \r
+ public static class URIs {\r
+ public static final String Bar = "http://www.simantics.org/DublinCore-1.1/Bar";\r
+ public static final String Contributor = "http://www.simantics.org/DublinCore-1.1/Contributor";\r
+ public static final String Coverage = "http://www.simantics.org/DublinCore-1.1/Coverage";\r
+ public static final String Creator = "http://www.simantics.org/DublinCore-1.1/Creator";\r
+ public static final String Date = "http://www.simantics.org/DublinCore-1.1/Date";\r
+ public static final String Date_Inverse = "http://www.simantics.org/DublinCore-1.1/Date/Inverse";\r
+ public static final String Description = "http://www.simantics.org/DublinCore-1.1/Description";\r
+ public static final String Foo = "http://www.simantics.org/DublinCore-1.1/Foo";\r
+ public static final String Format = "http://www.simantics.org/DublinCore-1.1/Format";\r
+ public static final String Identifier = "http://www.simantics.org/DublinCore-1.1/Identifier";\r
+ public static final String Identifier_Inverse = "http://www.simantics.org/DublinCore-1.1/Identifier/Inverse";\r
+ public static final String Language = "http://www.simantics.org/DublinCore-1.1/Language";\r
+ public static final String Publisher = "http://www.simantics.org/DublinCore-1.1/Publisher";\r
+ public static final String Relation = "http://www.simantics.org/DublinCore-1.1/Relation";\r
+ public static final String Rights = "http://www.simantics.org/DublinCore-1.1/Rights";\r
+ public static final String Source = "http://www.simantics.org/DublinCore-1.1/Source";\r
+ public static final String Subject = "http://www.simantics.org/DublinCore-1.1/Subject";\r
+ public static final String Title = "http://www.simantics.org/DublinCore-1.1/Title";\r
+ public static final String Type = "http://www.simantics.org/DublinCore-1.1/Type";\r
+ }\r
+ \r
+ public static Resource getResourceOrNull(ReadGraph graph, String uri) {\r
+ try {\r
+ return graph.getResource(uri);\r
+ } catch(DatabaseException e) {\r
+ System.err.println(e.getMessage());\r
+ return null;\r
+ }\r
+ }\r
+ \r
+ public DublinCore(ReadGraph graph) {\r
+ Bar = getResourceOrNull(graph, URIs.Bar);\r
+ Contributor = getResourceOrNull(graph, URIs.Contributor);\r
+ Coverage = getResourceOrNull(graph, URIs.Coverage);\r
+ Creator = getResourceOrNull(graph, URIs.Creator);\r
+ Date = getResourceOrNull(graph, URIs.Date);\r
+ Date_Inverse = getResourceOrNull(graph, URIs.Date_Inverse);\r
+ Description = getResourceOrNull(graph, URIs.Description);\r
+ Foo = getResourceOrNull(graph, URIs.Foo);\r
+ Format = getResourceOrNull(graph, URIs.Format);\r
+ Identifier = getResourceOrNull(graph, URIs.Identifier);\r
+ Identifier_Inverse = getResourceOrNull(graph, URIs.Identifier_Inverse);\r
+ Language = getResourceOrNull(graph, URIs.Language);\r
+ Publisher = getResourceOrNull(graph, URIs.Publisher);\r
+ Relation = getResourceOrNull(graph, URIs.Relation);\r
+ Rights = getResourceOrNull(graph, URIs.Rights);\r
+ Source = getResourceOrNull(graph, URIs.Source);\r
+ Subject = getResourceOrNull(graph, URIs.Subject);\r
+ Title = getResourceOrNull(graph, URIs.Title);\r
+ Type = getResourceOrNull(graph, URIs.Type);\r
+ }\r
+ \r
+ public static DublinCore getInstance(ReadGraph graph) {\r
+ Session session = graph.getSession();\r
+ DublinCore ret = session.peekService(DublinCore.class);\r
+ if(ret == null) {\r
+ QueryControl qc = graph.getService(QueryControl.class);\r
+ ret = new DublinCore(qc.getIndependentGraph(graph));\r
+ session.registerService(DublinCore.class, ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+ public static DublinCore getInstance(RequestProcessor session) throws DatabaseException {\r
+ DublinCore ret = session.peekService(DublinCore.class);\r
+ if(ret == null) {\r
+ ret = session.syncRequest(new Read<DublinCore>() {\r
+ public DublinCore perform(ReadGraph graph) throws DatabaseException {\r
+ QueryControl qc = graph.getService(QueryControl.class);\r
+ return new DublinCore(qc.getIndependentGraph(graph));\r
+ }\r
+ });\r
+ session.registerService(DublinCore.class, ret);\r
+ }\r
+ return ret;\r
+ }\r
+ \r
+}\r
+\r