1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jadira.usertype.dateandtime.threeten;
17
18 import java.time.LocalTime;
19 import java.time.OffsetTime;
20 import java.time.ZoneOffset;
21
22 import org.jadira.usertype.dateandtime.threeten.columnmapper.LongColumnLocalTimeMapper;
23 import org.jadira.usertype.dateandtime.threeten.columnmapper.StringColumnZoneOffsetMapper;
24 import org.jadira.usertype.spi.shared.AbstractMultiColumnUserType;
25 import org.jadira.usertype.spi.shared.ColumnMapper;
26
27
28
29
30
31 public class PersistentOffsetTimeAsLongAndStringOffset extends AbstractMultiColumnUserType<OffsetTime> {
32
33 private static final long serialVersionUID = 1364221029392346011L;
34
35 private static final ColumnMapper<?, ?>[] COLUMN_MAPPERS = new ColumnMapper<?, ?>[] { new LongColumnLocalTimeMapper(), new StringColumnZoneOffsetMapper() };
36
37 private static final String[] PROPERTY_NAMES = new String[]{ "time", "offset" };
38
39 @Override
40 protected OffsetTime fromConvertedColumns(Object[] convertedColumns) {
41
42 LocalTime datePart = (LocalTime) convertedColumns[0];
43 ZoneOffset offset = (ZoneOffset) convertedColumns[1];
44
45 return OffsetTime.of(datePart, offset);
46 }
47
48
49 @Override
50 protected ColumnMapper<?, ?>[] getColumnMappers() {
51 return COLUMN_MAPPERS;
52 }
53
54 @Override
55 protected Object[] toConvertedColumns(OffsetTime value) {
56
57 return new Object[] { value.toLocalTime(), value.getOffset() };
58 }
59
60 @Override
61 public String[] getPropertyNames() {
62 return PROPERTY_NAMES;
63 }
64 }