1 package org.simantics.layer0;
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;
11 public class PredicateResource {
13 public final Resource AppliesFirst;
14 public final Resource AppliesThen;
15 public final Resource BinaryPredicate;
16 public final Resource CompositePredicate;
17 public final Resource Conjunction;
18 public final Resource Disjunction;
19 public final Resource HasBinaryPredicate;
20 public final Resource HasPredicate;
21 public final Resource IntersectionPredicate;
22 public final Resource InversePredicate;
23 public final Resource Negation;
24 public final Resource OrderedSetElements;
25 public final Resource Predicate;
26 public final Resource TransitiveClosure;
27 public final Resource UnionPredicate;
29 public static class URIs {
30 public static final String AppliesFirst = "http://www.simantics.org/Layer0X-1.1/Predicate/AppliesFirst";
31 public static final String AppliesThen = "http://www.simantics.org/Layer0X-1.1/Predicate/AppliesThen";
32 public static final String BinaryPredicate = "http://www.simantics.org/Layer0X-1.1/Predicate/BinaryPredicate";
33 public static final String CompositePredicate = "http://www.simantics.org/Layer0X-1.1/Predicate/CompositePredicate";
34 public static final String Conjunction = "http://www.simantics.org/Layer0X-1.1/Predicate/Conjunction";
35 public static final String Disjunction = "http://www.simantics.org/Layer0X-1.1/Predicate/Disjunction";
36 public static final String HasBinaryPredicate = "http://www.simantics.org/Layer0X-1.1/Predicate/HasBinaryPredicate";
37 public static final String HasPredicate = "http://www.simantics.org/Layer0X-1.1/Predicate/HasPredicate";
38 public static final String IntersectionPredicate = "http://www.simantics.org/Layer0X-1.1/Predicate/IntersectionPredicate";
39 public static final String InversePredicate = "http://www.simantics.org/Layer0X-1.1/Predicate/InversePredicate";
40 public static final String Negation = "http://www.simantics.org/Layer0X-1.1/Predicate/Negation";
41 public static final String OrderedSetElements = "http://www.simantics.org/Layer0X-1.1/Predicate/OrderedSetElements";
42 public static final String Predicate = "http://www.simantics.org/Layer0X-1.1/Predicate/Predicate";
43 public static final String TransitiveClosure = "http://www.simantics.org/Layer0X-1.1/Predicate/TransitiveClosure";
44 public static final String UnionPredicate = "http://www.simantics.org/Layer0X-1.1/Predicate/UnionPredicate";
47 public static Resource getResourceOrNull(ReadGraph graph, String uri) {
49 return graph.getResource(uri);
50 } catch(DatabaseException e) {
51 System.err.println(e.getMessage());
56 public PredicateResource(ReadGraph graph) {
57 AppliesFirst = getResourceOrNull(graph, URIs.AppliesFirst);
58 AppliesThen = getResourceOrNull(graph, URIs.AppliesThen);
59 BinaryPredicate = getResourceOrNull(graph, URIs.BinaryPredicate);
60 CompositePredicate = getResourceOrNull(graph, URIs.CompositePredicate);
61 Conjunction = getResourceOrNull(graph, URIs.Conjunction);
62 Disjunction = getResourceOrNull(graph, URIs.Disjunction);
63 HasBinaryPredicate = getResourceOrNull(graph, URIs.HasBinaryPredicate);
64 HasPredicate = getResourceOrNull(graph, URIs.HasPredicate);
65 IntersectionPredicate = getResourceOrNull(graph, URIs.IntersectionPredicate);
66 InversePredicate = getResourceOrNull(graph, URIs.InversePredicate);
67 Negation = getResourceOrNull(graph, URIs.Negation);
68 OrderedSetElements = getResourceOrNull(graph, URIs.OrderedSetElements);
69 Predicate = getResourceOrNull(graph, URIs.Predicate);
70 TransitiveClosure = getResourceOrNull(graph, URIs.TransitiveClosure);
71 UnionPredicate = getResourceOrNull(graph, URIs.UnionPredicate);
74 public static PredicateResource getInstance(ReadGraph graph) {
75 Session session = graph.getSession();
76 PredicateResource ret = session.peekService(PredicateResource.class);
78 QueryControl qc = graph.getService(QueryControl.class);
79 ret = new PredicateResource(qc.getIndependentGraph(graph));
80 session.registerService(PredicateResource.class, ret);
85 public static PredicateResource getInstance(RequestProcessor session) throws DatabaseException {
86 PredicateResource ret = session.peekService(PredicateResource.class);
88 ret = session.syncRequest(new Read<PredicateResource>() {
89 public PredicateResource perform(ReadGraph graph) throws DatabaseException {
90 QueryControl qc = graph.getService(QueryControl.class);
91 return new PredicateResource(qc.getIndependentGraph(graph));
94 session.registerService(PredicateResource.class, ret);