From e213127b25864858e119d577e8ce47fb34aed9c1 Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Mon, 30 Sep 2024 11:33:05 +0200 Subject: [PATCH] RED-9933: DocuMine DateFormat config in dossier templates --- .../controller/DossierTemplateControllerV2.java | 14 ++++++++++---- .../external/resource/DossierTemplateResource.java | 6 +++--- .../src/main/resources/files/dateFormats.txt | 3 +++ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DossierTemplateControllerV2.java b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DossierTemplateControllerV2.java index 83aefb09a..5eedb8026 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DossierTemplateControllerV2.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DossierTemplateControllerV2.java @@ -169,16 +169,23 @@ public class DossierTemplateControllerV2 implements DossierTemplateResource { @SneakyThrows @PreAuthorize("hasAuthority('" + WRITE_DATA_FORMATS + "')") - public ResponseEntity> uploadDateFormats(String dossierTemplateId, MultipartFile file) { + public ResponseEntity uploadDateFormats(String dossierTemplateId, MultipartFile file) { dossierTemplatePersistenceService.checkDossierTemplateExistsOrElseThrow404(dossierTemplateId); + String originalFilename = file.getOriginalFilename(); + if (originalFilename == null || !originalFilename.endsWith(".txt")) { + throw new BadRequestException("Only .txt files can be parsed."); + } + String dateFormats = new String(file.getBytes(), StandardCharsets.UTF_8); List dateFormatPatternErrorMessages = dateFormatsValidationService.validateDateFormats(dateFormats); + if (!dateFormatPatternErrorMessages.isEmpty()) { + return new ResponseEntity<>(dateFormatPatternErrorMessages, HttpStatus.UNPROCESSABLE_ENTITY); + } dateFormatsPersistenceService.setDateFormats(dateFormats, dossierTemplateId); - auditPersistenceService.audit(AuditRequest.builder() .userId(KeycloakSecurity.getUserId()) .objectId(dossierTemplateId) @@ -186,8 +193,7 @@ public class DossierTemplateControllerV2 implements DossierTemplateResource { .message("date formats have been updated") .build()); - return new ResponseEntity<>(dateFormatPatternErrorMessages, HttpStatus.OK); - + return new ResponseEntity<>(HttpStatus.NO_CONTENT); } diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierTemplateResource.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierTemplateResource.java index 1983b2326..a6ca69429 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierTemplateResource.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierTemplateResource.java @@ -125,13 +125,13 @@ public interface DossierTemplateResource { @ResponseStatus(value = HttpStatus.NO_CONTENT) @PostMapping(value = PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + DATE_FORMATS_PATH, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Upload a date formats file for a specific DossierTemplate.") - @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Date formats upload successful."), @ApiResponse(responseCode = "404", description = "The DossierTemplate is not found."), @ApiResponse(responseCode = "400", description = "Uploaded rules could not be verified."), @ApiResponse(responseCode = "422", description = "Uploaded rules could not be compiled.")}) - ResponseEntity> uploadDateFormats(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, + @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Date formats upload successful."), @ApiResponse(responseCode = "404", description = "The DossierTemplate is not found."), @ApiResponse(responseCode = "400", description = "Uploaded date formats could not be verified."), @ApiResponse(responseCode = "422", description = "Uploaded date formats file could not be parsed.")}) + ResponseEntity uploadDateFormats(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, @Schema(type = "string", format = "binary", name = "file") @RequestPart(name = "file") MultipartFile file); @ResponseBody - @ResponseStatus(value = HttpStatus.OK) + @ResponseStatus(value = HttpStatus.NO_CONTENT) @Operation(summary = "Returns file containing the currently used date formats.") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "The DossierTemplate is not found.")}) @GetMapping(value = PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + DATE_FORMATS_PATH) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/files/dateFormats.txt b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/files/dateFormats.txt index 8695a7edb..db9c38a0b 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/resources/files/dateFormats.txt +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/resources/files/dateFormats.txt @@ -14,6 +14,8 @@ dd MMMM yyyy d MMMM yyyy MMMM dd, yyyy MMMM d, yyyy +MMMM, d yyyy +MMMM d,yyyy dd.MM.yyyy d.MM.yyyy yyyy/MM/dd @@ -28,6 +30,7 @@ dd['.'] MMM yyyy d['.'] MMM yyyy dd['th']['st']['nd']['rd'] 'of' MMMM, yyyy d['th']['st']['nd']['rd'] 'of' MMMM, yyyy +d['st']['nd']['rd']['th'] MMMM yyyy MMMM dd['th']['st']['nd']['rd'], yyyy MMMM d['th']['st']['nd']['rd'], yyyy yyyy, MMMM dd