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.LocalDateTime;
19 import java.time.OffsetDateTime;
20 import java.time.ZoneOffset;
21
22 import org.jadira.usertype.dateandtime.threeten.columnmapper.StringColumnLocalDateTimeMapper;
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 public class PersistentOffsetDateTimeAsStringAndStringOffset extends AbstractMultiColumnUserType<OffsetDateTime> {
31
32 private static final long serialVersionUID = 1364221029392346011L;
33
34 private static final ColumnMapper<?, ?>[] COLUMN_MAPPERS = new ColumnMapper<?, ?>[] { new StringColumnLocalDateTimeMapper(), new StringColumnZoneOffsetMapper() };
35
36 private static final String[] PROPERTY_NAMES = new String[]{ "datetime", "offset" };
37
38 @Override
39 protected OffsetDateTime fromConvertedColumns(Object[] convertedColumns) {
40
41 LocalDateTime datePart = (LocalDateTime) convertedColumns[0];
42 ZoneOffset offset = (ZoneOffset) convertedColumns[1];
43
44 return OffsetDateTime.of(datePart, offset);
45 }
46
47
48 @Override
49 protected ColumnMapper<?, ?>[] getColumnMappers() {
50 return COLUMN_MAPPERS;
51 }
52
53 @Override
54 protected Object[] toConvertedColumns(OffsetDateTime value) {
55
56 return new Object[] { value.toLocalDateTime(), value.getOffset() };
57 }
58
59 @Override
60 public String[] getPropertyNames() {
61 return PROPERTY_NAMES;
62 }
63 }