]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/ValueElementParser.java
Initial support for XML export (order of Elements is not kept)
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / ValueElementParser.java
1 package org.simantics.xml.sax.base;\r
2 \r
3 import java.util.Deque;\r
4 \r
5 import org.simantics.databoard.Bindings;\r
6 import org.simantics.databoard.binding.Binding;\r
7 import org.simantics.db.Resource;\r
8 import org.simantics.db.WriteGraph;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.layer0.Layer0;\r
11 \r
12 public class ValueElementParser extends XMLElementParserBase{\r
13         \r
14         String name;\r
15         Binding binding;\r
16         String relationURI;\r
17         \r
18         public ValueElementParser(String name, String relationURI,Binding binding) {\r
19                 this.name = name;\r
20                 this.relationURI = relationURI;\r
21                 this.binding = binding;\r
22         }\r
23         \r
24         @Override\r
25         public String getElementId() {\r
26                 return name;\r
27         }\r
28         \r
29         @Override\r
30         public Resource create(WriteGraph graph, ParserElement element)\r
31                         throws DatabaseException {\r
32                 Resource res = graph.newResource();\r
33                 return res;\r
34         }\r
35         \r
36         @Override\r
37         public void configure(WriteGraph graph, Deque<ParserElement> parents,   ParserElement element) throws DatabaseException {\r
38         }\r
39         \r
40         @Override\r
41         public boolean connectParent(WriteGraph graph, ParserElement parent, ParserElement element)throws DatabaseException {\r
42                 graph.claim(parent.getData(), graph.getResource(relationURI), element.getData());\r
43                 return true;\r
44         }\r
45         \r
46         @Override\r
47         public boolean connectChild(WriteGraph graph, ParserElement element, ParserElement child) throws DatabaseException {\r
48                 return false;\r
49         }\r
50         \r
51         @Override\r
52         public void configure(WriteGraph graph, ParserElement element, String string)   throws DatabaseException {\r
53                 Layer0 l0 = Layer0.getInstance(graph);\r
54                 if (binding == Bindings.STRING) {\r
55                         graph.claim(element.getData(), l0.InstanceOf, l0.String);\r
56                         graph.claimValue(element.getData(), string, binding);\r
57                 } else if (binding == Bindings.INTEGER) {\r
58                         graph.claim(element.getData(), l0.InstanceOf, l0.Integer);\r
59                         graph.claimValue(element.getData(), Integer.parseInt(string), binding);\r
60                 } else if (binding == Bindings.FLOAT) {\r
61                         graph.claim(element.getData(), l0.InstanceOf, l0.Float);\r
62                         graph.claimValue(element.getData(), Float.parseFloat(string), binding);\r
63                 } else if (binding == Bindings.DOUBLE) {\r
64                         graph.claim(element.getData(), l0.InstanceOf, l0.Double);\r
65                         graph.claimValue(element.getData(), Double.parseDouble(string), binding);\r
66                 } else if (binding == Bindings.BOOLEAN) {\r
67                         graph.claim(element.getData(), l0.InstanceOf, l0.Boolean);\r
68                         graph.claimValue(element.getData(), Boolean.parseBoolean(string), binding);\r
69                 } else if (binding == Bindings.LONG) {\r
70                         graph.claim(element.getData(), l0.InstanceOf, l0.Long);\r
71                         graph.claimValue(element.getData(), Long.parseLong(string), binding);\r
72                 } else if (binding == Bindings.BYTE) {\r
73                         graph.claim(element.getData(), l0.InstanceOf, l0.Byte);\r
74                         graph.claimValue(element.getData(), Byte.parseByte(string), binding);\r
75                 } else {\r
76                         throw new DatabaseException("Unknown datatype " + binding);\r
77                 }\r
78         }\r
79 \r
80 }\r