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