]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/src/org/simantics/databoard/binding/impl/UUIDBinding.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.databoard / src / org / simantics / databoard / binding / impl / UUIDBinding.java
1 package org.simantics.databoard.binding.impl;
2
3 import java.util.UUID;
4
5 import org.simantics.databoard.Bindings;
6 import org.simantics.databoard.Datatypes;
7 import org.simantics.databoard.binding.Binding;
8 import org.simantics.databoard.binding.RecordBinding;
9 import org.simantics.databoard.binding.error.BindingException;
10 import org.simantics.databoard.type.Component;
11 import org.simantics.databoard.type.Datatype;
12 import org.simantics.databoard.type.RecordType;
13
14 public class UUIDBinding extends RecordBinding {
15
16         public static final Datatype UUIDType;
17         
18         public UUIDBinding() {
19                 componentBindings = new Binding[2];
20                 componentBindings[0] = Bindings.getBindingUnchecked(Long.class);
21                 componentBindings[1] = Bindings.getBindingUnchecked(Long.class);
22                 type = UUIDType;
23         }
24
25         @Override
26         public Object create(Object... value) {
27                 return new UUID((Long)value[0], (Long)value[1]);
28         }
29
30         @Override
31         public Object getComponent(Object obj, int index) {
32                 UUID uuid = (UUID) obj;
33                 switch (index) {
34                 case 0: return uuid.getMostSignificantBits();
35                 case 1: return uuid.getLeastSignificantBits();
36                 default: throw new IllegalArgumentException("index out of range, expected 0..3, got "+index);
37                 }
38         }
39
40         @Override
41         public Object createPartial() throws BindingException {
42                 return new UUID(0, 0);
43         }
44
45         @Override
46         public void setComponents(Object obj, Object... value) throws BindingException {
47                 throw new BindingException("Cannot change immutable UUID");
48         }
49         
50         @Override
51         public void setComponent(Object obj, int index, Object value)
52                         throws BindingException {
53                 throw new BindingException("Cannot change immutable UUID");
54         }
55
56         @Override
57         public boolean isInstance(Object obj) {
58                 return obj instanceof UUID;
59         }
60         
61         @Override
62         public long getLong(Object r, int index) throws BindingException {
63                 UUID uuid = (UUID) r;
64                 switch (index) {
65                         case 0: return uuid.getMostSignificantBits();
66                         case 1: return uuid.getLeastSignificantBits();
67                         default: throw new IllegalArgumentException("index out of range, expected 0..3, got "+index);
68                 }
69         }
70
71         static {
72                 Component c1 = new Component("mostSigBits", Datatypes.LONG);
73                 Component c2 = new Component("leastSigBits", Datatypes.LONG);
74                 UUIDType = new RecordType(false, c1, c2);
75         }
76         
77 }       
78