]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax.base/src/org/simantics/xml/sax/base/ValueElementParser.java
XML Schema converter
[simantics/interop.git] / org.simantics.xml.sax.base / src / org / simantics / xml / sax / base / ValueElementParser.java
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 (file)
index 0000000..718c8b0
--- /dev/null
@@ -0,0 +1,80 @@
+package org.simantics.xml.sax.base;\r
+\r
+import java.util.Deque;\r
+\r
+import org.simantics.databoard.Bindings;\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.WriteGraph;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.layer0.Layer0;\r
+\r
+public class ValueElementParser extends XMLElementParserBase{\r
+       \r
+       String name;\r
+       Binding binding;\r
+       String relationURI;\r
+       \r
+       public ValueElementParser(String name, String relationURI,Binding binding) {\r
+               this.name = name;\r
+               this.relationURI = relationURI;\r
+               this.binding = binding;\r
+       }\r
+       \r
+       @Override\r
+       public String getElementId() {\r
+               return name;\r
+       }\r
+       \r
+       @Override\r
+       public Resource create(WriteGraph graph, Element element)\r
+                       throws DatabaseException {\r
+               Resource res = graph.newResource();\r
+               return res;\r
+       }\r
+       \r
+       @Override\r
+       public void configure(WriteGraph graph, Deque<Element> parents, Element element) throws DatabaseException {\r
+       }\r
+       \r
+       @Override\r
+       public boolean connectParent(WriteGraph graph, Element parent, Element element)throws DatabaseException {\r
+               graph.claim(parent.getData(), graph.getResource(relationURI), element.getData());\r
+               return true;\r
+       }\r
+       \r
+       @Override\r
+       public boolean connectChild(WriteGraph graph, Element element, Element child) throws DatabaseException {\r
+               return false;\r
+       }\r
+       \r
+       @Override\r
+       public void configure(WriteGraph graph, Element element, String string) throws DatabaseException {\r
+               Layer0 l0 = Layer0.getInstance(graph);\r
+               if (binding == Bindings.STRING) {\r
+                       graph.claim(element.getData(), l0.InstanceOf, l0.String);\r
+                       graph.claimValue(element.getData(), string, binding);\r
+               } else if (binding == Bindings.INTEGER) {\r
+                       graph.claim(element.getData(), l0.InstanceOf, l0.Integer);\r
+                       graph.claimValue(element.getData(), Integer.parseInt(string), binding);\r
+               } else if (binding == Bindings.FLOAT) {\r
+                       graph.claim(element.getData(), l0.InstanceOf, l0.Float);\r
+                       graph.claimValue(element.getData(), Float.parseFloat(string), binding);\r
+               } else if (binding == Bindings.DOUBLE) {\r
+                       graph.claim(element.getData(), l0.InstanceOf, l0.Double);\r
+                       graph.claimValue(element.getData(), Double.parseDouble(string), binding);\r
+               } else if (binding == Bindings.BOOLEAN) {\r
+                       graph.claim(element.getData(), l0.InstanceOf, l0.Boolean);\r
+                       graph.claimValue(element.getData(), Boolean.parseBoolean(string), binding);\r
+               } else if (binding == Bindings.LONG) {\r
+                       graph.claim(element.getData(), l0.InstanceOf, l0.Long);\r
+                       graph.claimValue(element.getData(), Long.parseLong(string), binding);\r
+               } else if (binding == Bindings.BYTE) {\r
+                       graph.claim(element.getData(), l0.InstanceOf, l0.Byte);\r
+                       graph.claimValue(element.getData(), Byte.parseByte(string), binding);\r
+               } else {\r
+                       throw new DatabaseException("Unknown datatype " + binding);\r
+               }\r
+       }\r
+\r
+}\r