You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ro...@apache.org on 2019/08/01 07:22:23 UTC
[james-project] 01/09: JAMES-2813 Move fromUDT and toUDT to
CassandraZonedDateTimeModule
This is an automated email from the ASF dual-hosted git repository.
rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 200983de1396a599eb052ea587e44911913d9218
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Mon Jul 29 15:33:15 2019 +0200
JAMES-2813 Move fromUDT and toUDT to CassandraZonedDateTimeModule
---
.../init/CassandraZonedDateTimeModule.java | 23 ++++++++++++++++++++++
.../cassandra/vacation/CassandraVacationDAO.java | 17 ++--------------
2 files changed, 25 insertions(+), 15 deletions(-)
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java
index 63c43c7..dfc0654 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraZonedDateTimeModule.java
@@ -22,7 +22,14 @@ package org.apache.james.backends.cassandra.init;
import static com.datastax.driver.core.DataType.text;
import static com.datastax.driver.core.DataType.timestamp;
+import java.time.ZonedDateTime;
+import java.util.Optional;
+
import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.backends.cassandra.utils.ZonedDateTimeRepresentation;
+
+import com.datastax.driver.core.UDTValue;
+import com.datastax.driver.core.UserType;
public interface CassandraZonedDateTimeModule {
String ZONED_DATE_TIME = "zonedDateTime";
@@ -34,4 +41,20 @@ public interface CassandraZonedDateTimeModule {
.addColumn(DATE, timestamp())
.addColumn(TIME_ZONE, text()))
.build();
+
+ static Optional<UDTValue> toUDT(UserType zonedDateTimeUserType, Optional<ZonedDateTime> zonedDateTimeOptional) {
+ return zonedDateTimeOptional.map(ZonedDateTimeRepresentation::fromZonedDateTime)
+ .map(representation -> zonedDateTimeUserType.newValue()
+ .setTimestamp(CassandraZonedDateTimeModule.DATE, representation.getDate())
+ .setString(CassandraZonedDateTimeModule.TIME_ZONE, representation.getSerializedZoneId()));
+ }
+
+ static Optional<ZonedDateTime> fromUDT(UDTValue value) {
+ return Optional.ofNullable(value)
+ .map(udtValue -> ZonedDateTimeRepresentation.fromDate(
+ udtValue.getTimestamp(CassandraZonedDateTimeModule.DATE),
+ udtValue.getString(CassandraZonedDateTimeModule.TIME_ZONE))
+ .getZonedDateTime());
+ }
+
}
diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationDAO.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationDAO.java
index aacdf8e..6ef717d 100644
--- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationDAO.java
+++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationDAO.java
@@ -34,7 +34,6 @@ import javax.inject.Inject;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
-import org.apache.james.backends.cassandra.utils.ZonedDateTimeRepresentation;
import org.apache.james.jmap.api.vacation.AccountId;
import org.apache.james.jmap.api.vacation.Vacation;
import org.apache.james.jmap.api.vacation.VacationPatch;
@@ -44,7 +43,6 @@ import org.apache.james.util.ValuePatch;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
-import com.datastax.driver.core.UDTValue;
import com.datastax.driver.core.UserType;
import com.datastax.driver.core.querybuilder.Insert;
import com.google.common.collect.ImmutableList;
@@ -100,11 +98,7 @@ public class CassandraVacationDAO {
}
private Optional<ZonedDateTime> retrieveDate(Row row, String dateField) {
- return Optional.ofNullable(row.getUDTValue(dateField))
- .map(udtValue -> ZonedDateTimeRepresentation.fromDate(
- udtValue.getTimestamp(CassandraZonedDateTimeModule.DATE),
- udtValue.getString(CassandraZonedDateTimeModule.TIME_ZONE))
- .getZonedDateTime());
+ return CassandraZonedDateTimeModule.fromUDT(row.getUDTValue(dateField));
}
private Insert createSpecificUpdate(VacationPatch vacationPatch, Insert baseInsert) {
@@ -121,18 +115,11 @@ public class CassandraVacationDAO {
public BiFunction<VacationPatch, Insert, Insert> applyPatchForFieldZonedDateTime(String field, Function<VacationPatch, ValuePatch<ZonedDateTime>> getter) {
return (vacation, insert) ->
getter.apply(vacation)
- .mapNotKeptToOptional(optionalValue -> applyPatchForField(field, convertToUDTOptional(optionalValue), insert))
+ .mapNotKeptToOptional(optionalValue -> applyPatchForField(field, CassandraZonedDateTimeModule.toUDT(zonedDateTimeUserType, optionalValue), insert))
.orElse(insert);
}
private <T> Insert applyPatchForField(String field, Optional<T> value, Insert insert) {
return insert.value(field, value.orElse(null));
}
-
- private Optional<UDTValue> convertToUDTOptional(Optional<ZonedDateTime> zonedDateTimeOptional) {
- return zonedDateTimeOptional.map(ZonedDateTimeRepresentation::fromZonedDateTime)
- .map(representation -> zonedDateTimeUserType.newValue()
- .setTimestamp(CassandraZonedDateTimeModule.DATE, representation.getDate())
- .setString(CassandraZonedDateTimeModule.TIME_ZONE, representation.getSerializedZoneId()));
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org