Skip to content

Commit ef077e8

Browse files
committed
repair LocalDateTime conversion functions
1 parent 31bf4a1 commit ef077e8

File tree

4 files changed

+43
-6
lines changed

4 files changed

+43
-6
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010

1111
<modelVersion>4.0.0</modelVersion>
1212
<artifactId>rdb-utils</artifactId>
13-
<version>0.1.2</version>
13+
<version>0.1.3</version>
1414
<name>RdbUtils</name>
1515
<packaging>jar</packaging>
1616

1717
<dependencies>
1818
<dependency>
1919
<groupId>info.unterrainer.commons</groupId>
2020
<artifactId>jre-utils</artifactId>
21-
<version>0.1.2</version>
21+
<version>0.1.4</version>
2222
</dependency>
2323
<dependency>
2424
<groupId>javax.persistence</groupId>

src/main/java/info/unterrainer/commons/parentpom/Information.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22

33
public class Information {
44
public static final String name = "Parent-POM";
5-
public static final String buildTime = "2020-12-10T07:24:25Z";
6-
public static final String pomVersion = "0.1.2";
5+
public static final String buildTime = "2021-03-05T08:10:04Z";
6+
public static final String pomVersion = "0.1.3";
77
}

src/main/java/info/unterrainer/commons/rdbutils/converters/LocalDateTimeConverter.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,21 @@
77
import javax.persistence.AttributeConverter;
88
import javax.persistence.Converter;
99

10+
import info.unterrainer.commons.jreutils.DateUtils;
11+
1012
@Converter()
1113
public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
1214

15+
DateUtils u;
16+
1317
@Override
1418
public Timestamp convertToDatabaseColumn(final LocalDateTime attribute) {
15-
return attribute == null ? null : Timestamp.valueOf(attribute.truncatedTo(ChronoUnit.MICROS));
19+
return attribute == null ? null
20+
: new Timestamp(DateUtils.utcLocalDateTimeToEpoch(attribute.truncatedTo(ChronoUnit.MICROS)));
1621
}
1722

1823
@Override
1924
public LocalDateTime convertToEntityAttribute(final Timestamp dbData) {
20-
return dbData == null ? null : dbData.toLocalDateTime();
25+
return dbData == null ? null : DateUtils.epochToUtcLocalDateTime(dbData.getTime());
2126
}
2227
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package info.unterrainer.commons.rdbutils;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.sql.Timestamp;
6+
import java.time.LocalDateTime;
7+
8+
import org.junit.jupiter.api.Test;
9+
10+
import info.unterrainer.commons.jreutils.DateUtils;
11+
import info.unterrainer.commons.rdbutils.converters.LocalDateTimeConverter;
12+
13+
public class LocalDateTimeConverterTests {
14+
15+
LocalDateTimeConverter converter = new LocalDateTimeConverter();
16+
17+
@Test
18+
public void conversionFromLocalDateTimeToTimestamp() {
19+
LocalDateTime d = DateUtils.nowUtc();
20+
Timestamp ts = converter.convertToDatabaseColumn(d);
21+
22+
assertThat(DateUtils.utcLocalDateTimeToEpoch(d)).isEqualTo(ts.getTime());
23+
}
24+
25+
@Test
26+
public void conversionFromTimestampToLocalDateTime() {
27+
Timestamp ts = new Timestamp(DateUtils.utcLocalDateTimeToEpoch(DateUtils.nowUtc()));
28+
LocalDateTime d = converter.convertToEntityAttribute(ts);
29+
30+
assertThat(ts.getTime()).isEqualTo(DateUtils.utcLocalDateTimeToEpoch(d));
31+
}
32+
}

0 commit comments

Comments
 (0)