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