]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.layer0x.ontology/src/org/simantics/layer0/PredicateResource.java
(refs #7177) Rounded connections
[simantics/platform.git] / bundles / org.simantics.layer0x.ontology / src / org / simantics / layer0 / PredicateResource.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 PredicateResource {
12     
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;
28         
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";
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 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);
72     }
73     
74     public static PredicateResource getInstance(ReadGraph graph) {
75         Session session = graph.getSession();
76         PredicateResource ret = session.peekService(PredicateResource.class);
77         if(ret == null) {
78             QueryControl qc = graph.getService(QueryControl.class);
79             ret = new PredicateResource(qc.getIndependentGraph(graph));
80             session.registerService(PredicateResource.class, ret);
81         }
82         return ret;
83     }
84     
85     public static PredicateResource getInstance(RequestProcessor session) throws DatabaseException {
86         PredicateResource ret = session.peekService(PredicateResource.class);
87         if(ret == null) {
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));
92                 }
93             });
94             session.registerService(PredicateResource.class, ret);
95         }
96         return ret;
97     }
98     
99 }
100