]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/ValueElementWriter.java
Several updates to interoperability.
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / ValueElementWriter.java
1 package org.simantics.xml.sax.base;\r
2 \r
3 import java.util.Collection;\r
4 import java.util.Set;\r
5 \r
6 import javax.xml.stream.XMLStreamException;\r
7 import javax.xml.stream.XMLStreamWriter;\r
8 \r
9 import org.simantics.databoard.binding.Binding;\r
10 import org.simantics.db.ReadGraph;\r
11 import org.simantics.db.Resource;\r
12 import org.simantics.db.Statement;\r
13 import org.simantics.db.exception.DatabaseException;\r
14 \r
15 public abstract class ValueElementWriter implements XMLElementWriter{\r
16         \r
17         String name;\r
18         Binding binding;\r
19         String typeURI;\r
20         \r
21         public ValueElementWriter(String name, String typeURI,Binding binding) {\r
22                 this.name = name;\r
23                 this.typeURI = typeURI;\r
24                 this.binding = binding;\r
25         }\r
26         \r
27         @Override\r
28         public String getElementId() {\r
29                 return name;\r
30         }\r
31         \r
32         @Override\r
33         public Resource getType(ReadGraph graph) throws DatabaseException {\r
34                 return graph.getResource(typeURI);\r
35         }\r
36         \r
37         @Override\r
38         public void start(ReadGraph graph, WriterElement instance, XMLStreamWriter writer)\r
39                         throws XMLStreamException, DatabaseException {\r
40                 writer.writeStartElement(getElementId());\r
41         }\r
42         \r
43         @Override\r
44         public void children(ReadGraph graph, WriterElement instance, Set<Resource> sorted)\r
45                         throws XMLStreamException, DatabaseException {\r
46                 \r
47         }\r
48         \r
49         @Override\r
50         public void end(ReadGraph graph, WriterElement instance, XMLStreamWriter writer)\r
51                         throws XMLStreamException, DatabaseException {\r
52                 writer.writeEndElement();\r
53         }\r
54         \r
55         @Override\r
56         public void attributes(ReadGraph graph, WriterElement instance, Collection<Statement> attributes,\r
57                         XMLStreamWriter writer) throws XMLStreamException, DatabaseException {\r
58                 \r
59         }\r
60         \r
61         public abstract String decode(Object value);\r
62         \r
63         @Override\r
64         public void characters(ReadGraph graph, WriterElement instance, XMLStreamWriter writer)\r
65                         throws XMLStreamException, DatabaseException {\r
66                 Object value = graph.getValue(instance.getResource(), binding);\r
67                 writer.writeCharacters(decode(value));\r
68         }\r
69 \r
70 }\r