package org.simantics.xml.sax.base; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import org.simantics.databoard.binding.Binding; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.Statement; import org.simantics.db.exception.DatabaseException; import org.simantics.layer0.Layer0; public class ValueElementWriter implements XMLElementWriter{ String name; Binding binding; String typeURI; public ValueElementWriter(String name, String typeURI,Binding binding) { this.name = name; this.typeURI = typeURI; this.binding = binding; } @Override public String getElementId() { return name; } @Override public Resource getType(ReadGraph graph) throws DatabaseException { return graph.getResource(typeURI); } @Override public void start(ReadGraph graph, WriterElement instance, XMLStreamWriter writer) throws XMLStreamException, DatabaseException { writer.writeStartElement(getElementId()); } @Override public void children(ReadGraph graph, WriterElement instance, Set sorted) throws XMLStreamException, DatabaseException { } @Override public void end(ReadGraph graph, WriterElement instance, XMLStreamWriter writer) throws XMLStreamException, DatabaseException { writer.writeEndElement(); } @Override public void attributes(ReadGraph graph, WriterElement instance, Collection attributes, XMLStreamWriter writer) throws XMLStreamException, DatabaseException { } @Override public void characters(ReadGraph graph, WriterElement instance, XMLStreamWriter writer) throws XMLStreamException, DatabaseException { Layer0 l0 = Layer0.getInstance(graph); Object value = graph.getValue(instance.getResource(), binding); writer.writeCharacters(value.toString()); // 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); // } } }