You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/08/10 14:33:03 UTC
[5/9] cayenne git commit: Changed to LocalDateTimeConverter uses
LocalDate and LocalTime separately.
Changed to LocalDateTimeConverter uses LocalDate and LocalTime separately.
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/b919e3ea
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/b919e3ea
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/b919e3ea
Branch: refs/heads/master
Commit: b919e3ea691b9378079873285dc88887e8c02a57
Parents: abe62d3
Author: kkomyak <co...@gmail.com>
Authored: Wed Aug 8 11:30:51 2018 +0000
Committer: kkomyak <co...@gmail.com>
Committed: Wed Aug 8 11:30:51 2018 +0000
----------------------------------------------------------------------
.../value/LocalDateTimeConverter.java | 27 ++++++++++++++++----
.../value/LocalDateTimeConverterTest.java | 4 +--
2 files changed, 24 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b919e3ea/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverter.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverter.java b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverter.java
index 71ad63f..6d3e081 100644
--- a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverter.java
+++ b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverter.java
@@ -1,8 +1,9 @@
package org.apache.cayenne.crypto.transformer.value;
-import java.time.Instant;
+import java.lang.reflect.Array;
+import java.time.LocalDate;
import java.time.LocalDateTime;
-import java.time.ZoneOffset;
+import java.time.LocalTime;
import java.util.Objects;
/**
@@ -20,14 +21,30 @@ public class LocalDateTimeConverter implements BytesConverter<LocalDateTime> {
@Override
public LocalDateTime fromBytes(byte[] bytes) {
+ int dateLength = 2;
+ int timeLength = 8;
- return LocalDateTime.ofInstant(Instant.ofEpochMilli(longConverter.fromBytes(bytes)),
- ZoneOffset.ofHours(0));
+ byte[] date = new byte[dateLength];
+ byte[] time = new byte[timeLength];
+
+ System.arraycopy(bytes, 0, date, 0, dateLength);
+ System.arraycopy(bytes, dateLength, time, 0, timeLength);
+
+ LocalDate localDate = LocalDate.ofEpochDay(longConverter.fromBytes(date));
+ LocalTime localTime = LocalTime.ofNanoOfDay(longConverter.fromBytes(time));
+ return LocalDateTime.of(localDate, localTime);
}
@Override
public byte[] toBytes(LocalDateTime value) {
- return longConverter.toBytes(value.toInstant(ZoneOffset.ofHours(0)).toEpochMilli());
+ byte[] date = longConverter.toBytes(value.toLocalDate().toEpochDay());
+ byte[] time = longConverter.toBytes(value.toLocalTime().toNanoOfDay());
+
+ byte [] datetime = (byte[]) Array.newInstance(byte.class, date.length + time.length);
+ System.arraycopy(date,0, datetime, 0, date.length);
+ System.arraycopy(time,0, datetime, date.length, time.length);
+
+ return datetime;
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/b919e3ea/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverterTest.java
----------------------------------------------------------------------
diff --git a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverterTest.java b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverterTest.java
index fc13e9e..1cc9425 100644
--- a/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverterTest.java
+++ b/cayenne-crypto/src/test/java/org/apache/cayenne/crypto/transformer/value/LocalDateTimeConverterTest.java
@@ -18,12 +18,12 @@ public class LocalDateTimeConverterTest {
@Test
public void testFromBytes() throws ParseException {
- assertEquals(localDate("2015-01-07 11:00:02"), LocalDateTimeConverter.INSTANCE.fromBytes(new byte[]{0, 0, 1, 74, -60, 13, 31, 80}));
+ assertEquals(localDate("2015-01-07 11:00:02"), LocalDateTimeConverter.INSTANCE.fromBytes(new byte[]{64, 58, 0, 0, 36, 4, -113, 36, 116, 0}));
}
@Test
public void testToBytes() throws ParseException {
- assertArrayEquals(new byte[]{0, 0, 1, 74, -60, 13, 31, 80},
+ assertArrayEquals(new byte[]{64, 58, 0, 0, 36, 4, -113, 36, 116, 0},
LocalDateTimeConverter.INSTANCE.toBytes(localDate("2015-01-07 11:00:02")));
}
}