From a12bf08616d942850065b6160e51ada2b8327047 Mon Sep 17 00:00:00 2001 From: jpinasma Date: Wed, 29 Jan 2025 13:52:20 +0100 Subject: [PATCH] fix(Dialect): Converting to the correct TIMESTAMP format when using MariaDB, MySQL and Postgres --- .../homihq/db2rest/jdbc/config/dialect/MariaDBDialect.java | 5 +++++ .../homihq/db2rest/jdbc/config/dialect/MySQLDialect.java | 5 +++++ .../db2rest/jdbc/config/dialect/PostGreSQLDialect.java | 5 +++++ .../com/homihq/db2rest/jdbc/config/dialect/Dialect.java | 6 +++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/dialects/mariadb-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MariaDBDialect.java b/dialects/mariadb-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MariaDBDialect.java index 95e389c1..c6c58d43 100644 --- a/dialects/mariadb-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MariaDBDialect.java +++ b/dialects/mariadb-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MariaDBDialect.java @@ -85,4 +85,9 @@ private LocalDateTime convertToLocalDateTime(String value) { throw new GenericDataAccessException("Error converting to LocalDateTime type - " + e.getLocalizedMessage()); } } + + @Override + public LocalDateTime convertTimestamp (String value){ + return convertToLocalDateTime(value); + } } diff --git a/dialects/mysql-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MySQLDialect.java b/dialects/mysql-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MySQLDialect.java index 74aead3d..a73df471 100644 --- a/dialects/mysql-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MySQLDialect.java +++ b/dialects/mysql-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/MySQLDialect.java @@ -70,4 +70,9 @@ private LocalDateTime convertToLocalDateTime(String value) { throw new GenericDataAccessException("Error converting to LocalDateTime type - " + e.getLocalizedMessage()); } } + + @Override + public LocalDateTime convertTimestamp (String value){ + return convertToLocalDateTime(value); + } } diff --git a/dialects/pg-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/PostGreSQLDialect.java b/dialects/pg-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/PostGreSQLDialect.java index 13ccc334..29db4a0b 100644 --- a/dialects/pg-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/PostGreSQLDialect.java +++ b/dialects/pg-dialect/src/main/java/com/homihq/db2rest/jdbc/config/dialect/PostGreSQLDialect.java @@ -164,4 +164,9 @@ public List convertToStringArray(Object object) { return convertToStringArray(object); } + + @Override + public LocalDateTime convertTimestamp (String value){ + return convertToLocalDateTime(value); + } } diff --git a/rdbms-common/src/main/java/com/homihq/db2rest/jdbc/config/dialect/Dialect.java b/rdbms-common/src/main/java/com/homihq/db2rest/jdbc/config/dialect/Dialect.java index 6091a895..3424d1d0 100644 --- a/rdbms-common/src/main/java/com/homihq/db2rest/jdbc/config/dialect/Dialect.java +++ b/rdbms-common/src/main/java/com/homihq/db2rest/jdbc/config/dialect/Dialect.java @@ -82,7 +82,7 @@ public Object processValue(String value, Class type, String format) { } else if (java.sql.Date.class == type) { return LocalDate.parse(value, DateTimeFormatter.ISO_DATE); } else if (java.sql.Timestamp.class == type) { - return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME); + return convertTimestamp(value); } else { return value; } @@ -124,4 +124,8 @@ public String getReadSqlTemplate() { public String getUpdateSqlTemplate() { return "update"; } + + public Object convertTimestamp(String value){ + return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } }