]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/ValueElementWriter.java
Initial support for XML export (order of Elements is not kept)
[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.Collections;\r
5 import java.util.List;\r
6 \r
7 import javax.xml.stream.XMLStreamException;\r
8 import javax.xml.stream.XMLStreamWriter;\r
9 \r
10 import org.simantics.databoard.binding.Binding;\r
11 import org.simantics.db.ReadGraph;\r
12 import org.simantics.db.Resource;\r
13 import org.simantics.db.Statement;\r
14 import org.simantics.db.exception.DatabaseException;\r
15 import org.simantics.layer0.Layer0;\r
16 \r
17 public class ValueElementWriter implements XMLElementWriter{\r
18         \r
19         String name;\r
20         Binding binding;\r
21         String typeURI;\r
22         \r
23         public ValueElementWriter(String name, String typeURI,Binding binding) {\r
24                 this.name = name;\r
25                 this.typeURI = typeURI;\r
26                 this.binding = binding;\r
27         }\r
28         \r
29         @Override\r
30         public String getElementId() {\r
31                 return name;\r
32         }\r
33         \r
34         @Override\r
35         public Resource getType(ReadGraph graph) throws DatabaseException {\r
36                 return graph.getResource(typeURI);\r
37         }\r
38         \r
39         @Override\r
40         public void start(ReadGraph graph, WriterElement instance, XMLStreamWriter writer)\r
41                         throws XMLStreamException, DatabaseException {\r
42                 writer.writeStartElement(getElementId());\r
43         }\r
44         \r
45         @Override\r
46         public List<Resource> children(ReadGraph graph, WriterElement instance, XMLStreamWriter writer)\r
47                         throws XMLStreamException, DatabaseException {\r
48                 return Collections.EMPTY_LIST;\r
49         }\r
50         \r
51         @Override\r
52         public void end(ReadGraph graph, WriterElement instance, XMLStreamWriter writer)\r
53                         throws XMLStreamException, DatabaseException {\r
54                 writer.writeEndElement();\r
55         }\r
56         \r
57         @Override\r
58         public void attributes(ReadGraph graph, WriterElement instance, Collection<Statement> attributes,\r
59                         XMLStreamWriter writer) throws XMLStreamException, DatabaseException {\r
60                 \r
61         }\r
62         \r
63         @Override\r
64         public void characters(ReadGraph graph, WriterElement instance, XMLStreamWriter writer)\r
65                         throws XMLStreamException, DatabaseException {\r
66                         Layer0 l0 = Layer0.getInstance(graph);\r
67                 Object value = graph.getValue(instance.getResource(), binding);\r
68                 writer.writeCharacters(value.toString());\r
69 //              if (binding == Bindings.STRING) {\r
70 //                      graph.claim(element.getData(), l0.InstanceOf, l0.String);\r
71 //                      graph.claimValue(element.getData(), string, binding);\r
72 //              } else if (binding == Bindings.INTEGER) {\r
73 //                      graph.claim(element.getData(), l0.InstanceOf, l0.Integer);\r
74 //                      graph.claimValue(element.getData(), Integer.parseInt(string), binding);\r
75 //              } else if (binding == Bindings.FLOAT) {\r
76 //                      graph.claim(element.getData(), l0.InstanceOf, l0.Float);\r
77 //                      graph.claimValue(element.getData(), Float.parseFloat(string), binding);\r
78 //              } else if (binding == Bindings.DOUBLE) {\r
79 //                      graph.claim(element.getData(), l0.InstanceOf, l0.Double);\r
80 //                      graph.claimValue(element.getData(), Double.parseDouble(string), binding);\r
81 //              } else if (binding == Bindings.BOOLEAN) {\r
82 //                      graph.claim(element.getData(), l0.InstanceOf, l0.Boolean);\r
83 //                      graph.claimValue(element.getData(), Boolean.parseBoolean(string), binding);\r
84 //              } else if (binding == Bindings.LONG) {\r
85 //                      graph.claim(element.getData(), l0.InstanceOf, l0.Long);\r
86 //                      graph.claimValue(element.getData(), Long.parseLong(string), binding);\r
87 //              } else if (binding == Bindings.BYTE) {\r
88 //                      graph.claim(element.getData(), l0.InstanceOf, l0.Byte);\r
89 //                      graph.claimValue(element.getData(), Byte.parseByte(string), binding);\r
90 //              } else {\r
91 //                      throw new DatabaseException("Unknown datatype " + binding);\r
92 //              }\r
93         }\r
94 \r
95 }\r