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