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.StringColumnZoneOffsetMapper;
23 import org.jadira.usertype.dateandtime.threeten.columnmapper.TimeColumnLocalTimeMapper;
24 import org.jadira.usertype.spi.shared.AbstractMultiColumnUserType;
25 import org.jadira.usertype.spi.shared.ColumnMapper;
26
27
28
29
30
31 public class PersistentOffsetTimeAsTimeAndStringOffset extends AbstractMultiColumnUserType<OffsetTime> {
32
33 private static final long serialVersionUID = 1364221029392346011L;
34
35 private static final ColumnMapper<?, ?>[] COLUMN_MAPPERS = new ColumnMapper<?, ?>[] { new TimeColumnLocalTimeMapper(), 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 @Override
49 protected ColumnMapper<?, ?>[] getColumnMappers() {
50 return COLUMN_MAPPERS;
51 }
52
53 @Override
54 protected Object[] toConvertedColumns(OffsetTime value) {
55 return new Object[] { value.toLocalTime(), value.getOffset() };
56 }
57
58 @Override
59 public String[] getPropertyNames() {
60 return PROPERTY_NAMES;
61 }
62 }