From 088a4ac21bf0401c94022a2eb0068a2043c2fbc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Tue, 4 Jun 2024 13:12:26 +0200 Subject: [PATCH] RED-9225: Fixed findings in new customer api --- .../api/impl/controller/DossierControllerV2.java | 2 ++ .../external/api/impl/controller/FileControllerV2.java | 7 ++++++- .../v2/api/external/resource/DossierResource.java | 2 +- .../v2/api/external/resource/DownloadResource.java | 5 +++-- .../src/main/resources/api/documine.yaml | 2 +- .../src/main/resources/api/redactmanager.yaml | 2 +- .../service/DossierAttributesManagementService.java | 2 +- .../persistence/FileStatusPersistenceService.java | 10 ++-------- 8 files changed, 17 insertions(+), 15 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/DossierControllerV2.java b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DossierControllerV2.java index 0b3de8bda..ad2ed1a38 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DossierControllerV2.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DossierControllerV2.java @@ -108,6 +108,8 @@ public class DossierControllerV2 implements DossierResource { @PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody DossierAttributes dossierAttributes) { + dossierTemplateController.getDossierTemplate(dossierTemplateId); + accessControlService.checkDossierExistenceAndAccessPermissionsToDossier(dossierId); accessControlService.verifyUserIsDossierOwner(dossierId); 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/FileControllerV2.java b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/FileControllerV2.java index eae54a546..4c6ee8f3a 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/FileControllerV2.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/FileControllerV2.java @@ -75,10 +75,11 @@ public class FileControllerV2 implements FileResource { @RequestParam(name = INCLUDE_SOFT_DELETED_PARAM, defaultValue = "false", required = false) boolean includeSoftDeleted) { dossierTemplateController.getDossierTemplate(dossierTemplateId); + dossierController.getDossier(dossierId, includeArchived, includeSoftDeleted); List fileStatusList = new ArrayList<>(); - if (!includeArchived && dossierController.getDossier(dossierId, includeArchived, includeSoftDeleted).getArchivedTime() != null) { + if (!includeArchived && dossierController.getDossier(dossierId, false, includeSoftDeleted).getArchivedTime() != null) { return new FileStatusList(fileStatusList); } @@ -154,6 +155,8 @@ public class FileControllerV2 implements FileResource { @PathVariable(FILE_ID_PARAM) String fileId, @RequestBody DownloadRequest downloadRequest) { + fileStatusManagementService.getFileStatus(fileId, false); + return prepareBulkDownload(dossierTemplateId, dossierId, BulkDownloadRequest.builder() @@ -169,6 +172,8 @@ public class FileControllerV2 implements FileResource { @PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody BulkDownloadRequest bulkDownloadRequest) { + dossierTemplateController.getDossierTemplate(dossierTemplateId); + var storageId = downloadController.prepareDownload(PrepareDownloadWithOptionRequest.builder() .dossierId(dossierId) .fileIds(statusController.getDossierStatus(dossierId) diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java index 106b4dc3d..7160bb1ba 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DossierResource.java @@ -92,7 +92,7 @@ public interface DossierResource { @ResponseBody @ResponseStatus(value = HttpStatus.OK) - @PostMapping(value = PATH + CREATE_DOWNLOAD_PATH + DOSSIER_ID_PATH_PARAM, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PostMapping(value = PATH + DOSSIER_ID_PATH_PARAM + CREATE_DOWNLOAD_PATH, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @Operation(summary = "Initiate the creation of a download package for all files of a dossier.") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Successfully started the creation of the download package for all files of the requested dossier."), @ApiResponse(responseCode = "404", description = "Not found")}) DownloadStatus prepareDossierDownload(@Parameter(name = DOSSIER_TEMPLATE_ID_PARAM, description = "The identifier of a dossier template", required = true) @PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DownloadResource.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DownloadResource.java index 28da06059..8a0ecc499 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DownloadResource.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/resource/DownloadResource.java @@ -20,10 +20,11 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; @ResponseStatus(HttpStatus.OK) public interface DownloadResource { - String DOWNLOAD_PATH = "/download"; - String PATH = ExternalApiConstants.BASE_PATH + DOWNLOAD_PATH; + String DOWNLOADS_PATH = "/downloads"; + String PATH = ExternalApiConstants.BASE_PATH + DOWNLOADS_PATH; String DOWNLOAD_ID_PARAM = "downloadId"; String DOWNLOAD_ID_PATH_PARAM = "/{" + DOWNLOAD_ID_PARAM + "}"; + String DOWNLOAD_PATH = "/download"; @GetMapping(value = PATH, produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml index 184937f44..ae26de2cf 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml @@ -1510,7 +1510,7 @@ paths: $ref: '#/components/responses/429' "500": $ref: '#/components/responses/500' - /api/download: + /api/downloads: get: operationId: getDownloadStatusList tags: diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml index 276a053d6..77cf14b2c 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/redactmanager.yaml @@ -805,7 +805,7 @@ paths: $ref: '#/components/responses/429' "500": $ref: '#/components/responses/500' - /api/download: + /api/downloads: get: operationId: getDownloadStatusList tags: diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java index eb7ce6d48..5f18bc2c4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierAttributesManagementService.java @@ -55,7 +55,7 @@ public class DossierAttributesManagementService { private void validateDossierAttribute(Map typeById, DossierAttribute dossierAttribute) { if (!typeById.containsKey(dossierAttribute.getDossierAttributeConfigId())) { - throw new ConflictException("Dossier attribute configuration does not exist."); + throw new BadRequestException("Dossier attribute configuration does not exist."); } DossierAttributeType type = typeById.get(dossierAttribute.getDossierAttributeConfigId()); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java index 10a979939..584db73de 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/FileStatusPersistenceService.java @@ -450,10 +450,7 @@ public class FileStatusPersistenceService { var now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); - int countUpdate = fileRepository.hardDeleteFiles(List.of(fileId), ProcessingStatus.PROCESSED, now); - if (countUpdate == 0) { - throw new NotFoundException(String.format("File with ID \"%s\" not found!", fileId)); - } + fileRepository.hardDeleteFiles(List.of(fileId), ProcessingStatus.PROCESSED, now); fileAttributesRepository.deleteByFileId(fileId); } @@ -461,10 +458,7 @@ public class FileStatusPersistenceService { @Transactional public void softDelete(String fileId, OffsetDateTime softDeletedTime) { - int countUpdate = fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime); - if (countUpdate == 0) { - throw new NotFoundException(String.format("File with ID \"%s\" not found!", fileId)); - } + fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime); } -- 2.47.2