From 7b3c07331f7d8fcc995f07e2aa0647c38ae48245 Mon Sep 17 00:00:00 2001 From: Dirk Reske Date: Tue, 17 Jan 2023 15:29:31 +0100 Subject: [PATCH] Date parsing --- .../adapter/http/JobsController.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tsystems/mms/cwa/registration/cancellation/adapter/http/JobsController.java b/src/main/java/com/tsystems/mms/cwa/registration/cancellation/adapter/http/JobsController.java index d74763c..4e186aa 100644 --- a/src/main/java/com/tsystems/mms/cwa/registration/cancellation/adapter/http/JobsController.java +++ b/src/main/java/com/tsystems/mms/cwa/registration/cancellation/adapter/http/JobsController.java @@ -36,6 +36,10 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; import java.util.stream.Collectors; @Controller @@ -50,6 +54,18 @@ public class JobsController { private final AutowireCapableBeanFactory beanFactory; + private interface DateParser { + LocalDateTime parse(String value); + } + + private final List DATA_PARSERS = Arrays.asList( + value -> LocalDateTime.parse(value, DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss", Locale.GERMANY)), + value -> LocalDateTime.parse(value, DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm", Locale.GERMANY)).withSecond(59), + value -> LocalDateTime.parse(value, DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss", Locale.GERMANY)), + value -> LocalDateTime.parse(value, DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm", Locale.GERMANY)).withSecond(59), + value -> LocalDate.parse(value, DateTimeFormatter.ofPattern("dd.MM.yyyy", Locale.GERMANY)).atTime(23, 59, 59) + ); + public JobsController(CancellationsService cancellationsService, JobRepository jobRepository, JobEntryRepository jobEntryRepository, JobSummaryRepository jobSummaryRepository, AutowireCapableBeanFactory beanFactory) { this.cancellationsService = cancellationsService; this.jobRepository = jobRepository; @@ -166,15 +182,19 @@ public String uploadJob(@RequestParam("file") MultipartFile file, entry.setPartnerId(tokens[0]); entry.setReceiver(tokens[8]); entry.setAttachmentFilename(tokens[0] + ".pdf"); - try { - entry.setFinalDeletionRequest(LocalDate.parse(tokens[11], DateTimeFormatter.ofPattern("dd.MM.yyyy")).atTime(23, 59, 59)); - } catch (DateTimeParseException e1) { + + for (Iterator iterator = DATA_PARSERS.iterator(); iterator.hasNext(); ) { + DateParser dateParser = iterator.next(); try { - entry.setFinalDeletionRequest(LocalDateTime.parse(tokens[11], DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm")).withSecond(59)); - } catch (Exception e2) { - entry.setFinalDeletionRequest(LocalDateTime.parse(tokens[11], DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss"))); + entry.setFinalDeletionRequest(dateParser.parse(tokens[11])); + break; + } catch (DateTimeParseException e) { + if (!iterator.hasNext()) { + throw e; + } } } + jobEntryRepository.save(entry); } } catch (Exception e) { @@ -183,3 +203,4 @@ public String uploadJob(@RequestParam("file") MultipartFile file, return "redirect:/cancellations"; } } +