]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.databoard.binding.factory;\r
2 \r
3 import org.simantics.databoard.binding.Binding;\r
4 import org.simantics.databoard.binding.RecordBinding;\r
5 import org.simantics.databoard.binding.error.BindingException;\r
6 import org.simantics.databoard.type.RecordType;\r
7 \r
8 /**\r
9  * Binds RecordType to Object[]\r
10  *\r
11  * @author Toni Kalajainen <toni.kalajainen@vtt.fi>\r
12  */\r
13 class RecordObjectArrayBinding extends RecordBinding {\r
14 \r
15         public RecordObjectArrayBinding(RecordType type, Binding[] componentBindings)\r
16         {\r
17                 this.componentBindings = componentBindings;\r
18         if (type==null) throw new IllegalArgumentException("null arg");\r
19                 this.type = type;\r
20         }\r
21                 \r
22         @Override\r
23         public Object create(Object... value) {         \r
24                 return value;\r
25         }\r
26         \r
27         @Override\r
28         public Object createPartial() {\r
29                 return new Object[getComponentCount()];\r
30         }\r
31         \r
32         @Override\r
33         public Object getComponent(Object obj, int index) {\r
34                 return ((Object[])obj)[index];\r
35         }\r
36 \r
37         @Override\r
38         public void setComponents(Object obj, Object... value) throws BindingException {\r
39                 System.arraycopy(value, 0, obj, 0, value.length);\r
40         }\r
41         \r
42         @Override\r
43         public void setComponent(Object obj, int index, Object value)\r
44                         throws BindingException {\r
45                 Object[] array = (Object[]) obj;\r
46                 array[index] = value;\r
47         }\r
48 \r
49         @Override\r
50         public boolean isInstance(Object obj) {\r
51                 return (obj instanceof Object[]) && (((Object[])obj).length == componentBindings.length);\r
52         }\r
53         \r
54 }