1 package org.simantics.xml.sax.base;
\r
3 import java.util.Deque;
\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
12 public class ValueElementParser extends XMLElementParserBase{
\r
18 public ValueElementParser(String name, String relationURI,Binding binding) {
\r
20 this.relationURI = relationURI;
\r
21 this.binding = binding;
\r
25 public String getElementId() {
\r
30 public Resource create(WriteGraph graph, ParserElement element)
\r
31 throws DatabaseException {
\r
32 Resource res = graph.newResource();
\r
37 public void configure(WriteGraph graph, Deque<ParserElement> parents, ParserElement element) throws DatabaseException {
\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
47 public boolean connectChild(WriteGraph graph, ParserElement element, ParserElement child) throws DatabaseException {
\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
76 throw new DatabaseException("Unknown datatype " + binding);
\r