package org.simantics.xml.sax.base; import java.util.Collection; 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; public abstract 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 { } public abstract String decode(Object value); @Override public void characters(ReadGraph graph, WriterElement instance, XMLStreamWriter writer) throws XMLStreamException, DatabaseException { Object value = graph.getValue(instance.getResource(), binding); writer.writeCharacters(decode(value)); } }