From ad95f2434c0433f5553b5d4c8fd05112831e0ac1 Mon Sep 17 00:00:00 2001 From: Francesco Date: Fri, 27 Oct 2023 12:15:17 +0200 Subject: [PATCH] Fixed handling of java.sql.Date field type --- .../controller/DefaultDbAdminController.java | 1 + .../external/dbmapping/DbObjectSchema.java | 5 ++++- .../dbmapping/fields/DateFieldType.java | 17 +++++++++-------- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java b/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java index cc6bbc7..94337f9 100644 --- a/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java +++ b/src/main/java/tech/ailef/dbadmin/external/controller/DefaultDbAdminController.java @@ -496,6 +496,7 @@ public class DefaultDbAdminController { attr.addFlashAttribute("validationErrors", new ValidationErrorsContainer(e)); attr.addFlashAttribute("params", params); } catch (DbAdminException e) { + e.getCause().printStackTrace(); attr.addFlashAttribute("errorTitle", "Error"); attr.addFlashAttribute("error", e.getMessage()); attr.addFlashAttribute("params", params); diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java index 04b278d..19fdb1a 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/DbObjectSchema.java @@ -386,7 +386,10 @@ public class DbObjectSchema { Object parsedFieldValue = getFieldByName(param).getType().parseValue(params.get(param)); - + System.out.println(param); + System.out.println(parsedFieldValue); + if (parsedFieldValue != null) + System.out.println(parsedFieldValue.getClass()); if (parsedFieldValue != null && getFieldByName(param).isSettable()) { setter.invoke(instance, parsedFieldValue); } diff --git a/src/main/java/tech/ailef/dbadmin/external/dbmapping/fields/DateFieldType.java b/src/main/java/tech/ailef/dbadmin/external/dbmapping/fields/DateFieldType.java index bf74161..8970f0b 100644 --- a/src/main/java/tech/ailef/dbadmin/external/dbmapping/fields/DateFieldType.java +++ b/src/main/java/tech/ailef/dbadmin/external/dbmapping/fields/DateFieldType.java @@ -18,13 +18,13 @@ package tech.ailef.dbadmin.external.dbmapping.fields; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; +import java.sql.Date; +import java.time.LocalDate; +import java.time.format.DateTimeParseException; import java.util.List; -import java.util.Locale; import tech.ailef.dbadmin.external.dto.CompareOperator; +import tech.ailef.dbadmin.external.exceptions.DbAdminException; public class DateFieldType extends DbFieldType { @Override @@ -35,11 +35,12 @@ public class DateFieldType extends DbFieldType { @Override public Object parseValue(Object value) { if (value == null || value.toString().isBlank()) return null; - SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH); +// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH); try { - return format.parse(value.toString()); - } catch (ParseException e) { - throw new RuntimeException(e); + LocalDate localDate = LocalDate.parse(value.toString()); + return Date.valueOf(localDate); + } catch (DateTimeParseException e) { + throw new DbAdminException("Invalid date " + value, e); } }