From cdb51f691c65751a3a7c18860491d47cadfb3166 Mon Sep 17 00:00:00 2001 From: Daniel Jeller Date: Mon, 25 Oct 2021 17:49:43 +0200 Subject: [PATCH] Move date range validation to event repository It is not used for filtering so it was wrong there --- pom.xml | 2 +- .../backend/converter/StringToDateRangeConverter.java | 4 ---- .../eu/nampi/backend/repository/EventRepository.java | 10 ++++++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 2484c06..0fbcb5c 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ eu.nampi backend - 0.4.0 + 0.4.1 nampi-backend The NAMPI backend diff --git a/src/main/java/eu/nampi/backend/converter/StringToDateRangeConverter.java b/src/main/java/eu/nampi/backend/converter/StringToDateRangeConverter.java index 5e3e286..4de1c81 100644 --- a/src/main/java/eu/nampi/backend/converter/StringToDateRangeConverter.java +++ b/src/main/java/eu/nampi/backend/converter/StringToDateRangeConverter.java @@ -53,10 +53,6 @@ public DateRange convert(String string) { if (start.isPresent() && end.isPresent()) { var startVal = start.get(); var endVal = end.get(); - if (startVal.isAfter(endVal)) { - throw new IllegalArgumentException( - String.format("Start date '%s' is not allowed to be after '%s'", startVal, endVal)); - } if (startVal.equals(endVal)) { end = Optional.empty(); isRange = false; diff --git a/src/main/java/eu/nampi/backend/repository/EventRepository.java b/src/main/java/eu/nampi/backend/repository/EventRepository.java index acb20a1..7ad3109 100644 --- a/src/main/java/eu/nampi/backend/repository/EventRepository.java +++ b/src/main/java/eu/nampi/backend/repository/EventRepository.java @@ -661,6 +661,16 @@ private void validatePayload(Lang lang, List types, HydraInsertBuilder builder = hydraBuilderFactory.insertBuilder(lang, ENDPOINT_NAME, types, labels, comments, texts, new ArrayList<>()); builder.validateSubresources(Core.event, types); + // Date + optionalDate + .ifPresent(date -> date.getStart().ifPresent(start -> date.getEnd().ifPresent(end -> { + if (start.isAfter(end)) { + throw new IllegalArgumentException( + String.format("Start date '%s' is not allowed to be after '%s'", + start.format(DateTimeFormatter.ISO_DATE), + end.format(DateTimeFormatter.ISO_DATE))); + } + }))); // Event main participant builder.validateType(Core.person, mainParticipant.getObject()); mainParticipant.getPredicate().ifPresent(predicate -> {