X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax.base%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2Fbase%2FValueElementParser.java;fp=org.simantics.xml.sax.base%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2Fbase%2FValueElementParser.java;h=718c8b029937b5fcc0222e6b432d6fcf235b5ea9;hb=ada38ab0a1a98dcb413bef3273064da36ce2d273;hp=0000000000000000000000000000000000000000;hpb=db6def39515fd442543064502a9ae7ae07ffc160;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/ValueElementParser.java b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/ValueElementParser.java new file mode 100644 index 0000000..718c8b0 --- /dev/null +++ b/org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/ValueElementParser.java @@ -0,0 +1,80 @@ +package org.simantics.xml.sax.base; + +import java.util.Deque; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.binding.Binding; +import org.simantics.db.Resource; +import org.simantics.db.WriteGraph; +import org.simantics.db.exception.DatabaseException; +import org.simantics.layer0.Layer0; + +public class ValueElementParser extends XMLElementParserBase{ + + String name; + Binding binding; + String relationURI; + + public ValueElementParser(String name, String relationURI,Binding binding) { + this.name = name; + this.relationURI = relationURI; + this.binding = binding; + } + + @Override + public String getElementId() { + return name; + } + + @Override + public Resource create(WriteGraph graph, Element element) + throws DatabaseException { + Resource res = graph.newResource(); + return res; + } + + @Override + public void configure(WriteGraph graph, Deque parents, Element element) throws DatabaseException { + } + + @Override + public boolean connectParent(WriteGraph graph, Element parent, Element element)throws DatabaseException { + graph.claim(parent.getData(), graph.getResource(relationURI), element.getData()); + return true; + } + + @Override + public boolean connectChild(WriteGraph graph, Element element, Element child) throws DatabaseException { + return false; + } + + @Override + public void configure(WriteGraph graph, Element element, String string) throws DatabaseException { + Layer0 l0 = Layer0.getInstance(graph); + if (binding == Bindings.STRING) { + graph.claim(element.getData(), l0.InstanceOf, l0.String); + graph.claimValue(element.getData(), string, binding); + } else if (binding == Bindings.INTEGER) { + graph.claim(element.getData(), l0.InstanceOf, l0.Integer); + graph.claimValue(element.getData(), Integer.parseInt(string), binding); + } else if (binding == Bindings.FLOAT) { + graph.claim(element.getData(), l0.InstanceOf, l0.Float); + graph.claimValue(element.getData(), Float.parseFloat(string), binding); + } else if (binding == Bindings.DOUBLE) { + graph.claim(element.getData(), l0.InstanceOf, l0.Double); + graph.claimValue(element.getData(), Double.parseDouble(string), binding); + } else if (binding == Bindings.BOOLEAN) { + graph.claim(element.getData(), l0.InstanceOf, l0.Boolean); + graph.claimValue(element.getData(), Boolean.parseBoolean(string), binding); + } else if (binding == Bindings.LONG) { + graph.claim(element.getData(), l0.InstanceOf, l0.Long); + graph.claimValue(element.getData(), Long.parseLong(string), binding); + } else if (binding == Bindings.BYTE) { + graph.claim(element.getData(), l0.InstanceOf, l0.Byte); + graph.claimValue(element.getData(), Byte.parseByte(string), binding); + } else { + throw new DatabaseException("Unknown datatype " + binding); + } + } + +}