]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.interop.xmlio/src/org/simantics/interop/xmlio/DefaultLoadRule.java
refs #3842
[simantics/interop.git] / org.simantics.interop.xmlio / src / org / simantics / interop / xmlio / DefaultLoadRule.java
diff --git a/org.simantics.interop.xmlio/src/org/simantics/interop/xmlio/DefaultLoadRule.java b/org.simantics.interop.xmlio/src/org/simantics/interop/xmlio/DefaultLoadRule.java
new file mode 100644 (file)
index 0000000..47bcdb9
--- /dev/null
@@ -0,0 +1,99 @@
+package org.simantics.interop.xmlio;\r
+\r
+import java.util.List;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.interop.xmlio.LoadXML.Bundle;\r
+import org.simantics.layer0.Layer0;\r
+\r
+public class DefaultLoadRule implements LoadRule{\r
+       \r
+       private Layer0 l0;\r
+       \r
+       @Override\r
+       public Resource getResource(ReadGraph graph, String uri)\r
+                       throws DatabaseException {\r
+               return graph.getResource(uri);\r
+       }\r
+       \r
+       @Override\r
+       public Object createValue(ReadGraph graph, List<String> value, List<String> types)\r
+                       throws DatabaseException {\r
+               if (types.contains(Layer0.URIs.String))\r
+                       return value.get(0);\r
+               if (types.contains(Layer0.URIs.Boolean))\r
+                       return Boolean.parseBoolean(value.get(0));\r
+               if (types.contains(Layer0.URIs.Byte))\r
+                       return Byte.parseByte(value.get(0));\r
+               if (types.contains(Layer0.URIs.Double))\r
+                       return Double.parseDouble(value.get(0));\r
+               if (types.contains(Layer0.URIs.Integer))\r
+                       return Integer.parseInt(value.get(0));\r
+               if (types.contains(Layer0.URIs.Long))\r
+                       return Long.parseLong(value.get(0));\r
+               if (types.contains(Layer0.URIs.Float))\r
+                       return Float.parseFloat(value.get(0));\r
+               \r
+               if (types.contains(Layer0.URIs.StringArray)) {\r
+                       String[] result = new String[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = value.get(i);\r
+                       return result;\r
+               }\r
+               if (types.contains(Layer0.URIs.BooleanArray)) {\r
+                       boolean[] result = new boolean[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = Boolean.parseBoolean(value.get(i));\r
+                       return result;\r
+               }\r
+               if (types.contains(Layer0.URIs.BooleanArray)) {\r
+                       boolean[] result = new boolean[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = Boolean.parseBoolean(value.get(i));\r
+                       return result;\r
+               }\r
+               if (types.contains(Layer0.URIs.ByteArray)) {\r
+                       byte[] result = new byte[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = Byte.parseByte(value.get(i));\r
+                       return result;\r
+               }\r
+               if (types.contains(Layer0.URIs.DoubleArray)) {\r
+                       double[] result = new double[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = Double.parseDouble(value.get(i));\r
+                       return result;\r
+               }\r
+               \r
+               if (types.contains(Layer0.URIs.IntegerArray)) {\r
+                       int[] result = new int[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = Integer.parseInt(value.get(i));\r
+                       return result;\r
+               }\r
+               if (types.contains(Layer0.URIs.LongArray)) {\r
+                       long[] result = new long[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = Long.parseLong(value.get(i));\r
+                       return result;\r
+               }\r
+               if (types.contains(Layer0.URIs.FloatArray)) {\r
+                       float[] result = new float[value.size()];\r
+                       for (int i = 0; i < result.length; i++)\r
+                               result[i] = Float.parseFloat(value.get(i));\r
+                       return result;\r
+               }\r
+               throw new DatabaseException("Unknow value");\r
+               \r
+       }\r
+       \r
+       @Override\r
+       public void initializeWithBundles(ReadGraph graph, List<Bundle> bundles)\r
+                       throws DatabaseException {\r
+               l0 = Layer0.getInstance(graph);\r
+               \r
+       }\r
+\r
+}\r