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.ZoneId;
20 import java.time.ZonedDateTime;
21
22 import org.jadira.usertype.dateandtime.threeten.columnmapper.StringColumnLocalDateTimeMapper;
23 import org.jadira.usertype.dateandtime.threeten.columnmapper.StringColumnZoneIdMapper;
24 import org.jadira.usertype.spi.shared.AbstractMultiColumnUserType;
25 import org.jadira.usertype.spi.shared.ColumnMapper;
26
27
28
29
30 public class PersistentZonedDateTimeAsStringAndStringZone extends AbstractMultiColumnUserType<ZonedDateTime> {
31
32 private static final long serialVersionUID = -1335371912886315820L;
33
34 private static final ColumnMapper<?, ?>[] COLUMN_MAPPERS = new ColumnMapper<?, ?>[] { new StringColumnLocalDateTimeMapper(), new StringColumnZoneIdMapper() };
35
36 private static final String[] PROPERTY_NAMES = new String[]{ "datetime", "zoneid" };
37
38 @Override
39 protected ZonedDateTime fromConvertedColumns(Object[] convertedColumns) {
40
41 LocalDateTime datePart = (LocalDateTime) convertedColumns[0];
42 ZoneId zoneId = (ZoneId) convertedColumns[1];
43
44 return ZonedDateTime.of(datePart, zoneId);
45 }
46
47 @Override
48 protected ColumnMapper<?, ?>[] getColumnMappers() {
49 return COLUMN_MAPPERS;
50 }
51
52 @Override
53 protected Object[] toConvertedColumns(ZonedDateTime value) {
54
55 return new Object[] { value.toLocalDateTime(), value.getZone() };
56 }
57
58 @Override
59 public String[] getPropertyNames() {
60 return PROPERTY_NAMES;
61 }
62 }