]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d.csg.ontology/src/org/simantics/g3d/csg/ontology/CSG.java
9619f15c1e088477fa376b5d02c42dcf96ed5a08
[simantics/3d.git] / org.simantics.g3d.csg.ontology / src / org / simantics / g3d / csg / ontology / CSG.java
1 package org.simantics.g3d.csg.ontology;\r
2 \r
3 import org.simantics.db.Resource;\r
4 import org.simantics.db.ReadGraph;\r
5 import org.simantics.db.request.Read;\r
6 import org.simantics.db.Session;\r
7 import org.simantics.db.exception.DatabaseException;\r
8 import org.simantics.db.service.QueryControl;\r
9 \r
10 public class CSG {\r
11     \r
12     public final Resource Barrel;\r
13     public final Resource BooleanOperation;\r
14     public final Resource Box;\r
15     public final Resource CSGBrowseContext;\r
16     public final Resource CSGBrowseContext_ActiveLabelDecorationRule;\r
17     public final Resource CSGBrowseContext_RunLabelRule;\r
18     public final Resource CSGBrowseContext_ShapeTabContribution;\r
19     public final Resource Cone;\r
20     public final Resource Cylinder;\r
21     public final Resource Difference;\r
22     public final Resource EllipticCylinder;\r
23     public final Resource HasBottomRadius;\r
24     public final Resource HasBottomRadius_Inverse;\r
25     public final Resource HasCorners;\r
26     public final Resource HasCorners_Inverse;\r
27     public final Resource HasHeight;\r
28     public final Resource HasHeight_Inverse;\r
29     public final Resource HasMajorRadius;\r
30     public final Resource HasMajorRadius_Inverse;\r
31     public final Resource HasMinorRadius;\r
32     public final Resource HasMinorRadius_Inverse;\r
33     public final Resource HasRadius;\r
34     public final Resource HasRadius_Inverse;\r
35     public final Resource HasSizingProperty;\r
36     public final Resource HasSizingProperty_Inverse;\r
37     public final Resource HasTopRadius;\r
38     public final Resource HasTopRadius_Inverse;\r
39     public final Resource HasXAxisMaximumSize;\r
40     public final Resource HasXAxisMaximumSize_Inverse;\r
41     public final Resource HasXAxisMinimumSize;\r
42     public final Resource HasXAxisMinimumSize_Inverse;\r
43     public final Resource HasXAxisSize;\r
44     public final Resource HasXAxisSize_Inverse;\r
45     public final Resource HasYAxisSize;\r
46     public final Resource HasYAxisSize_Inverse;\r
47     public final Resource HasZAxisMaximumSize;\r
48     public final Resource HasZAxisMaximumSize_Inverse;\r
49     public final Resource HasZAxisMinimumSize;\r
50     public final Resource HasZAxisMinimumSize_Inverse;\r
51     public final Resource HasZAxisSize;\r
52     public final Resource HasZAxisSize_Inverse;\r
53     public final Resource Images;\r
54     public final Resource Images_Difference;\r
55     public final Resource Images_Intersection;\r
56     public final Resource Images_Ruby;\r
57     public final Resource Images_Union;\r
58     public final Resource Intersection;\r
59     public final Resource Model;\r
60     public final Resource Primitive;\r
61     public final Resource RectangularSolid;\r
62     public final Resource RegularPrism;\r
63     public final Resource Shape;\r
64     public final Resource Sphere;\r
65     public final Resource Torus;\r
66     public final Resource Union;\r
67     public final Resource hasChildShape;\r
68     public final Resource hasChildShape_Inverse;\r
69     public final Resource hasPrimaryShape;\r
70     public final Resource hasPrimaryShape_Inverse;\r
71     public final Resource hasSecondaryShape;\r
72     public final Resource hasSecondaryShape_Inverse;\r
73         \r
74     public static class URIs {\r
75         public static final String Barrel = "http://www.simantics.org/CSG-0.1/Barrel";\r
76         public static final String BooleanOperation = "http://www.simantics.org/CSG-0.1/BooleanOperation";\r
77         public static final String Box = "http://www.simantics.org/CSG-0.1/Box";\r
78         public static final String CSGBrowseContext = "http://www.simantics.org/CSG-0.1/CSGBrowseContext";\r
79         public static final String CSGBrowseContext_ActiveLabelDecorationRule = "http://www.simantics.org/CSG-0.1/CSGBrowseContext/ActiveLabelDecorationRule";\r
80         public static final String CSGBrowseContext_RunLabelRule = "http://www.simantics.org/CSG-0.1/CSGBrowseContext/RunLabelRule";\r
81         public static final String CSGBrowseContext_ShapeTabContribution = "http://www.simantics.org/CSG-0.1/CSGBrowseContext/ShapeTabContribution";\r
82         public static final String Cone = "http://www.simantics.org/CSG-0.1/Cone";\r
83         public static final String Cylinder = "http://www.simantics.org/CSG-0.1/Cylinder";\r
84         public static final String Difference = "http://www.simantics.org/CSG-0.1/Difference";\r
85         public static final String EllipticCylinder = "http://www.simantics.org/CSG-0.1/EllipticCylinder";\r
86         public static final String HasBottomRadius = "http://www.simantics.org/CSG-0.1/HasBottomRadius";\r
87         public static final String HasBottomRadius_Inverse = "http://www.simantics.org/CSG-0.1/HasBottomRadius/Inverse";\r
88         public static final String HasCorners = "http://www.simantics.org/CSG-0.1/HasCorners";\r
89         public static final String HasCorners_Inverse = "http://www.simantics.org/CSG-0.1/HasCorners/Inverse";\r
90         public static final String HasHeight = "http://www.simantics.org/CSG-0.1/HasHeight";\r
91         public static final String HasHeight_Inverse = "http://www.simantics.org/CSG-0.1/HasHeight/Inverse";\r
92         public static final String HasMajorRadius = "http://www.simantics.org/CSG-0.1/HasMajorRadius";\r
93         public static final String HasMajorRadius_Inverse = "http://www.simantics.org/CSG-0.1/HasMajorRadius/Inverse";\r
94         public static final String HasMinorRadius = "http://www.simantics.org/CSG-0.1/HasMinorRadius";\r
95         public static final String HasMinorRadius_Inverse = "http://www.simantics.org/CSG-0.1/HasMinorRadius/Inverse";\r
96         public static final String HasRadius = "http://www.simantics.org/CSG-0.1/HasRadius";\r
97         public static final String HasRadius_Inverse = "http://www.simantics.org/CSG-0.1/HasRadius/Inverse";\r
98         public static final String HasSizingProperty = "http://www.simantics.org/CSG-0.1/HasSizingProperty";\r
99         public static final String HasSizingProperty_Inverse = "http://www.simantics.org/CSG-0.1/HasSizingProperty/Inverse";\r
100         public static final String HasTopRadius = "http://www.simantics.org/CSG-0.1/HasTopRadius";\r
101         public static final String HasTopRadius_Inverse = "http://www.simantics.org/CSG-0.1/HasTopRadius/Inverse";\r
102         public static final String HasXAxisMaximumSize = "http://www.simantics.org/CSG-0.1/HasXAxisMaximumSize";\r
103         public static final String HasXAxisMaximumSize_Inverse = "http://www.simantics.org/CSG-0.1/HasXAxisMaximumSize/Inverse";\r
104         public static final String HasXAxisMinimumSize = "http://www.simantics.org/CSG-0.1/HasXAxisMinimumSize";\r
105         public static final String HasXAxisMinimumSize_Inverse = "http://www.simantics.org/CSG-0.1/HasXAxisMinimumSize/Inverse";\r
106         public static final String HasXAxisSize = "http://www.simantics.org/CSG-0.1/HasXAxisSize";\r
107         public static final String HasXAxisSize_Inverse = "http://www.simantics.org/CSG-0.1/HasXAxisSize/Inverse";\r
108         public static final String HasYAxisSize = "http://www.simantics.org/CSG-0.1/HasYAxisSize";\r
109         public static final String HasYAxisSize_Inverse = "http://www.simantics.org/CSG-0.1/HasYAxisSize/Inverse";\r
110         public static final String HasZAxisMaximumSize = "http://www.simantics.org/CSG-0.1/HasZAxisMaximumSize";\r
111         public static final String HasZAxisMaximumSize_Inverse = "http://www.simantics.org/CSG-0.1/HasZAxisMaximumSize/Inverse";\r
112         public static final String HasZAxisMinimumSize = "http://www.simantics.org/CSG-0.1/HasZAxisMinimumSize";\r
113         public static final String HasZAxisMinimumSize_Inverse = "http://www.simantics.org/CSG-0.1/HasZAxisMinimumSize/Inverse";\r
114         public static final String HasZAxisSize = "http://www.simantics.org/CSG-0.1/HasZAxisSize";\r
115         public static final String HasZAxisSize_Inverse = "http://www.simantics.org/CSG-0.1/HasZAxisSize/Inverse";\r
116         public static final String Images = "http://www.simantics.org/CSG-0.1/Images";\r
117         public static final String Images_Difference = "http://www.simantics.org/CSG-0.1/Images/Difference";\r
118         public static final String Images_Intersection = "http://www.simantics.org/CSG-0.1/Images/Intersection";\r
119         public static final String Images_Ruby = "http://www.simantics.org/CSG-0.1/Images/Ruby";\r
120         public static final String Images_Union = "http://www.simantics.org/CSG-0.1/Images/Union";\r
121         public static final String Intersection = "http://www.simantics.org/CSG-0.1/Intersection";\r
122         public static final String Model = "http://www.simantics.org/CSG-0.1/Model";\r
123         public static final String Primitive = "http://www.simantics.org/CSG-0.1/Primitive";\r
124         public static final String RectangularSolid = "http://www.simantics.org/CSG-0.1/RectangularSolid";\r
125         public static final String RegularPrism = "http://www.simantics.org/CSG-0.1/RegularPrism";\r
126         public static final String Shape = "http://www.simantics.org/CSG-0.1/Shape";\r
127         public static final String Sphere = "http://www.simantics.org/CSG-0.1/Sphere";\r
128         public static final String Torus = "http://www.simantics.org/CSG-0.1/Torus";\r
129         public static final String Union = "http://www.simantics.org/CSG-0.1/Union";\r
130         public static final String hasChildShape = "http://www.simantics.org/CSG-0.1/hasChildShape";\r
131         public static final String hasChildShape_Inverse = "http://www.simantics.org/CSG-0.1/hasChildShape/Inverse";\r
132         public static final String hasPrimaryShape = "http://www.simantics.org/CSG-0.1/hasPrimaryShape";\r
133         public static final String hasPrimaryShape_Inverse = "http://www.simantics.org/CSG-0.1/hasPrimaryShape/Inverse";\r
134         public static final String hasSecondaryShape = "http://www.simantics.org/CSG-0.1/hasSecondaryShape";\r
135         public static final String hasSecondaryShape_Inverse = "http://www.simantics.org/CSG-0.1/hasSecondaryShape/Inverse";\r
136     }\r
137     \r
138     public static Resource getResourceOrNull(ReadGraph graph, String uri) {\r
139         try {\r
140             return graph.getResource(uri);\r
141         } catch(DatabaseException e) {\r
142             System.err.println(e.getMessage());\r
143             return null;\r
144         }\r
145     }\r
146     \r
147     public CSG(ReadGraph graph) {\r
148         Barrel = getResourceOrNull(graph, URIs.Barrel);\r
149         BooleanOperation = getResourceOrNull(graph, URIs.BooleanOperation);\r
150         Box = getResourceOrNull(graph, URIs.Box);\r
151         CSGBrowseContext = getResourceOrNull(graph, URIs.CSGBrowseContext);\r
152         CSGBrowseContext_ActiveLabelDecorationRule = getResourceOrNull(graph, URIs.CSGBrowseContext_ActiveLabelDecorationRule);\r
153         CSGBrowseContext_RunLabelRule = getResourceOrNull(graph, URIs.CSGBrowseContext_RunLabelRule);\r
154         CSGBrowseContext_ShapeTabContribution = getResourceOrNull(graph, URIs.CSGBrowseContext_ShapeTabContribution);\r
155         Cone = getResourceOrNull(graph, URIs.Cone);\r
156         Cylinder = getResourceOrNull(graph, URIs.Cylinder);\r
157         Difference = getResourceOrNull(graph, URIs.Difference);\r
158         EllipticCylinder = getResourceOrNull(graph, URIs.EllipticCylinder);\r
159         HasBottomRadius = getResourceOrNull(graph, URIs.HasBottomRadius);\r
160         HasBottomRadius_Inverse = getResourceOrNull(graph, URIs.HasBottomRadius_Inverse);\r
161         HasCorners = getResourceOrNull(graph, URIs.HasCorners);\r
162         HasCorners_Inverse = getResourceOrNull(graph, URIs.HasCorners_Inverse);\r
163         HasHeight = getResourceOrNull(graph, URIs.HasHeight);\r
164         HasHeight_Inverse = getResourceOrNull(graph, URIs.HasHeight_Inverse);\r
165         HasMajorRadius = getResourceOrNull(graph, URIs.HasMajorRadius);\r
166         HasMajorRadius_Inverse = getResourceOrNull(graph, URIs.HasMajorRadius_Inverse);\r
167         HasMinorRadius = getResourceOrNull(graph, URIs.HasMinorRadius);\r
168         HasMinorRadius_Inverse = getResourceOrNull(graph, URIs.HasMinorRadius_Inverse);\r
169         HasRadius = getResourceOrNull(graph, URIs.HasRadius);\r
170         HasRadius_Inverse = getResourceOrNull(graph, URIs.HasRadius_Inverse);\r
171         HasSizingProperty = getResourceOrNull(graph, URIs.HasSizingProperty);\r
172         HasSizingProperty_Inverse = getResourceOrNull(graph, URIs.HasSizingProperty_Inverse);\r
173         HasTopRadius = getResourceOrNull(graph, URIs.HasTopRadius);\r
174         HasTopRadius_Inverse = getResourceOrNull(graph, URIs.HasTopRadius_Inverse);\r
175         HasXAxisMaximumSize = getResourceOrNull(graph, URIs.HasXAxisMaximumSize);\r
176         HasXAxisMaximumSize_Inverse = getResourceOrNull(graph, URIs.HasXAxisMaximumSize_Inverse);\r
177         HasXAxisMinimumSize = getResourceOrNull(graph, URIs.HasXAxisMinimumSize);\r
178         HasXAxisMinimumSize_Inverse = getResourceOrNull(graph, URIs.HasXAxisMinimumSize_Inverse);\r
179         HasXAxisSize = getResourceOrNull(graph, URIs.HasXAxisSize);\r
180         HasXAxisSize_Inverse = getResourceOrNull(graph, URIs.HasXAxisSize_Inverse);\r
181         HasYAxisSize = getResourceOrNull(graph, URIs.HasYAxisSize);\r
182         HasYAxisSize_Inverse = getResourceOrNull(graph, URIs.HasYAxisSize_Inverse);\r
183         HasZAxisMaximumSize = getResourceOrNull(graph, URIs.HasZAxisMaximumSize);\r
184         HasZAxisMaximumSize_Inverse = getResourceOrNull(graph, URIs.HasZAxisMaximumSize_Inverse);\r
185         HasZAxisMinimumSize = getResourceOrNull(graph, URIs.HasZAxisMinimumSize);\r
186         HasZAxisMinimumSize_Inverse = getResourceOrNull(graph, URIs.HasZAxisMinimumSize_Inverse);\r
187         HasZAxisSize = getResourceOrNull(graph, URIs.HasZAxisSize);\r
188         HasZAxisSize_Inverse = getResourceOrNull(graph, URIs.HasZAxisSize_Inverse);\r
189         Images = getResourceOrNull(graph, URIs.Images);\r
190         Images_Difference = getResourceOrNull(graph, URIs.Images_Difference);\r
191         Images_Intersection = getResourceOrNull(graph, URIs.Images_Intersection);\r
192         Images_Ruby = getResourceOrNull(graph, URIs.Images_Ruby);\r
193         Images_Union = getResourceOrNull(graph, URIs.Images_Union);\r
194         Intersection = getResourceOrNull(graph, URIs.Intersection);\r
195         Model = getResourceOrNull(graph, URIs.Model);\r
196         Primitive = getResourceOrNull(graph, URIs.Primitive);\r
197         RectangularSolid = getResourceOrNull(graph, URIs.RectangularSolid);\r
198         RegularPrism = getResourceOrNull(graph, URIs.RegularPrism);\r
199         Shape = getResourceOrNull(graph, URIs.Shape);\r
200         Sphere = getResourceOrNull(graph, URIs.Sphere);\r
201         Torus = getResourceOrNull(graph, URIs.Torus);\r
202         Union = getResourceOrNull(graph, URIs.Union);\r
203         hasChildShape = getResourceOrNull(graph, URIs.hasChildShape);\r
204         hasChildShape_Inverse = getResourceOrNull(graph, URIs.hasChildShape_Inverse);\r
205         hasPrimaryShape = getResourceOrNull(graph, URIs.hasPrimaryShape);\r
206         hasPrimaryShape_Inverse = getResourceOrNull(graph, URIs.hasPrimaryShape_Inverse);\r
207         hasSecondaryShape = getResourceOrNull(graph, URIs.hasSecondaryShape);\r
208         hasSecondaryShape_Inverse = getResourceOrNull(graph, URIs.hasSecondaryShape_Inverse);\r
209     }\r
210     \r
211     public static CSG getInstance(ReadGraph graph) {\r
212         Session session = graph.getSession();\r
213         CSG ret = session.peekService(CSG.class);\r
214         if(ret == null) {\r
215             QueryControl qc = graph.getService(QueryControl.class);\r
216             ret = new CSG(qc.getIndependentGraph(graph));\r
217             session.registerService(CSG.class, ret);\r
218         }\r
219         return ret;\r
220     }\r
221     \r
222     public static CSG getInstance(Session session) throws DatabaseException {\r
223         CSG ret = session.peekService(CSG.class);\r
224         if(ret == null) {\r
225             ret = session.syncRequest(new Read<CSG>() {\r
226                 public CSG perform(ReadGraph graph) throws DatabaseException {\r
227                     QueryControl qc = graph.getService(QueryControl.class);\r
228                     return new CSG(qc.getIndependentGraph(graph));\r
229                 }\r
230             });\r
231             session.registerService(CSG.class, ret);\r
232         }\r
233         return ret;\r
234     }\r
235     \r
236 }\r
237 \r