]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.databoard/src/org/simantics/databoard/binding/factory/RecordObjectArrayBinding.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.databoard / src / org / simantics / databoard / binding / factory / RecordObjectArrayBinding.java
diff --git a/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/factory/RecordObjectArrayBinding.java b/bundles/org.simantics.databoard/src/org/simantics/databoard/binding/factory/RecordObjectArrayBinding.java
new file mode 100644 (file)
index 0000000..bcd771f
--- /dev/null
@@ -0,0 +1,54 @@
+package org.simantics.databoard.binding.factory;\r
+\r
+import org.simantics.databoard.binding.Binding;\r
+import org.simantics.databoard.binding.RecordBinding;\r
+import org.simantics.databoard.binding.error.BindingException;\r
+import org.simantics.databoard.type.RecordType;\r
+\r
+/**\r
+ * Binds RecordType to Object[]\r
+ *\r
+ * @author Toni Kalajainen <toni.kalajainen@vtt.fi>\r
+ */\r
+class RecordObjectArrayBinding extends RecordBinding {\r
+\r
+       public RecordObjectArrayBinding(RecordType type, Binding[] componentBindings)\r
+       {\r
+               this.componentBindings = componentBindings;\r
+        if (type==null) throw new IllegalArgumentException("null arg");\r
+               this.type = type;\r
+       }\r
+               \r
+       @Override\r
+       public Object create(Object... value) {         \r
+               return value;\r
+       }\r
+       \r
+       @Override\r
+       public Object createPartial() {\r
+               return new Object[getComponentCount()];\r
+       }\r
+       \r
+       @Override\r
+       public Object getComponent(Object obj, int index) {\r
+               return ((Object[])obj)[index];\r
+       }\r
+\r
+       @Override\r
+       public void setComponents(Object obj, Object... value) throws BindingException {\r
+               System.arraycopy(value, 0, obj, 0, value.length);\r
+       }\r
+       \r
+       @Override\r
+       public void setComponent(Object obj, int index, Object value)\r
+                       throws BindingException {\r
+               Object[] array = (Object[]) obj;\r
+               array[index] = value;\r
+       }\r
+\r
+       @Override\r
+       public boolean isInstance(Object obj) {\r
+               return (obj instanceof Object[]) && (((Object[])obj).length == componentBindings.length);\r
+       }\r
+       \r
+}
\ No newline at end of file