]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d.csg/src/org/simantics/g3d/csg/scenegraph2/SchemaBuilder.java
90999a030be3da9adc467e210ee473f06a77bd80
[simantics/3d.git] / org.simantics.g3d.csg / src / org / simantics / g3d / csg / scenegraph2 / SchemaBuilder.java
1 package org.simantics.g3d.csg.scenegraph2;\r
2 \r
3 import org.simantics.db.ReadGraph;\r
4 import org.simantics.db.Resource;\r
5 import org.simantics.db.exception.DatabaseException;\r
6 import org.simantics.db.request.Read;\r
7 import org.simantics.objmap.graph.schema.IMappingSchema;\r
8 import org.simantics.objmap.graph.schema.MappingSchemas;\r
9 import org.simantics.objmap.graph.schema.SimpleSchema;\r
10 import org.simantics.ui.SimanticsUI;\r
11 \r
12 public class SchemaBuilder {\r
13         \r
14         public static IMappingSchema<Resource,Object> getSchema() throws DatabaseException{\r
15                 return SimanticsUI.getSession().syncRequest(new Read<IMappingSchema<Resource,Object>>() {\r
16                         @Override\r
17                         public IMappingSchema<Resource,Object> perform(ReadGraph g)\r
18                                         throws DatabaseException {\r
19                                 return getSchema(g);\r
20                         }\r
21                 });\r
22         }\r
23         \r
24         public static IMappingSchema<Resource,Object> getSchema(ReadGraph g) throws DatabaseException{\r
25                 try {\r
26                         SimpleSchema schema = new SimpleSchema();\r
27                         schema.addLinkType(MappingSchemas.fromAnnotations(g, BarrelNode.class));\r
28                         schema.addLinkType(MappingSchemas.fromAnnotations(g, BoxNode.class));\r
29                         schema.addLinkType(MappingSchemas.fromAnnotations(g, ConeNode.class));\r
30                         schema.addLinkType(MappingSchemas.fromAnnotations(g, CylinderNode.class));\r
31                         schema.addLinkType(MappingSchemas.fromAnnotations(g, DifferenceNode.class));\r
32                         schema.addLinkType(MappingSchemas.fromAnnotations(g, EllipticCylinderNode.class));\r
33                         schema.addLinkType(MappingSchemas.fromAnnotations(g, IntersectionNode.class));\r
34                         schema.addLinkType(MappingSchemas.fromAnnotations(g, RectangularSolidNode.class));\r
35                         schema.addLinkType(MappingSchemas.fromAnnotations(g, RegularPrismNode.class));\r
36                         schema.addLinkType(MappingSchemas.fromAnnotations(g, SphereNode.class));\r
37                         schema.addLinkType(MappingSchemas.fromAnnotations(g, TorusNode.class));\r
38                         schema.addLinkType(MappingSchemas.fromAnnotations(g, UnionNode.class));\r
39                         schema.addLinkType(MappingSchemas.fromAnnotations(g, CSGrootNode.class));\r
40                         return schema;\r
41                 } catch (IllegalAccessException e) {\r
42                         throw new DatabaseException(e);\r
43                 } catch (InstantiationException e) {\r
44                         throw new DatabaseException(e);\r
45                 }\r
46         }\r
47 \r
48 }\r