From 2272681a02432b620215865d06cd634cb3a11a45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Thu, 6 Jun 2024 12:53:07 +0200 Subject: [PATCH 1/2] RED-9270: Fixed download of report template, RED-9225: Minor fixes for new customer api --- .../api/impl/controller/DownloadControllerV2.java | 2 +- .../v2/api/external/resource/DownloadResource.java | 2 +- .../service/export/DossierTemplateExportService.java | 3 ++- .../persistence/DossierStatusPersistenceService.java | 11 +++++++++++ .../persistence/DownloadStatusPersistenceService.java | 1 + 5 files changed, 16 insertions(+), 3 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/DownloadControllerV2.java b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DownloadControllerV2.java index 85d08c24b..5a89c5332 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DownloadControllerV2.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v2/src/main/java/com/iqser/red/persistence/service/v2/external/api/impl/controller/DownloadControllerV2.java @@ -44,7 +44,7 @@ public class DownloadControllerV2 implements DownloadResource { .creationDate(status.getCreationDate()) .lastDownload(status.getLastDownload()) .fileSize(status.getFileSize()) - .dossierId(status.getDossier().getId()) + .dossierId(status.getDossier() != null ? status.getDossier().getId() : null) .fileIds(status.getFiles() .stream() .map(FileEntity::getId) 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 8a0ecc499..9aa190949 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 @@ -50,7 +50,7 @@ public interface DownloadResource { @ResponseStatus(value = HttpStatus.OK) @Operation(summary = "Download the download package.") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Successfully downloaded the requested file."), @ApiResponse(responseCode = "404", description = "Download not found. This happens if the requested download does not exist for the current user.")}) - @GetMapping(value = PATH + DOWNLOAD_ID_PATH_PARAM + DOWNLOAD_PATH) + @GetMapping(value = PATH + DOWNLOAD_ID_PATH_PARAM + DOWNLOAD_PATH, produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_OCTET_STREAM_VALUE}) void download(@Parameter(name = DOWNLOAD_ID_PARAM, description = "The identifier for the file to download.", required = true) @PathVariable(DOWNLOAD_ID_PARAM) String downloadId); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java index 9370c946a..4d053eee3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/export/DossierTemplateExportService.java @@ -118,6 +118,7 @@ public class DossierTemplateExportService { objectMapper.registerModule(new JavaTimeModule()); DownloadStatusEntity downloadStatus = downloadStatusPersistenceService.getStatus(downloadJob.getStorageId()); + downloadStatusPersistenceService.updateStatus(downloadJob.getStorageId(), DownloadStatusValue.GENERATING); String dossierTemplateId = extractDossierTemplateId(downloadStatus.getFilename()); var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(dossierTemplateId); @@ -141,7 +142,7 @@ public class DossierTemplateExportService { objectMapper.writeValueAsBytes(convert(colors, Colors.class)))); // add dossier statuses - var dossierStatusList = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId); + var dossierStatusList = dossierStatusPersistenceService.getAllDossierStatusForTemplateWithoutSecurity(dossierTemplateId); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, getFilename(ExportFilename.DOSSIER_STATUS, JSON_EXT), objectMapper.writeValueAsBytes(convert(dossierStatusList, DossierStatusInfo.class)))); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java index 294312a53..ddd6c1eaf 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierStatusPersistenceService.java @@ -104,6 +104,17 @@ public class DossierStatusPersistenceService { } + @Transactional + public List getAllDossierStatusForTemplateWithoutSecurity(String dossierTemplateId) { + + return dossierStatusRepository.findByDossierTemplateIdIn(Collections.singletonList(dossierTemplateId)) + .stream() + .map(d -> MagicConverter.convert(d, DossierStatusInfo.class)) + .collect(Collectors.toList()); + } + + + @Transactional public List getAllDossierStatuses(List dossierTemplateIds) { diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java index 36a8136f0..6838f347a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DownloadStatusPersistenceService.java @@ -60,6 +60,7 @@ public class DownloadStatusPersistenceService { downloadStatus.setDownloadFileTypes(downloadFileTypes != null ? new HashSet<>(downloadFileTypes) : new HashSet<>()); downloadStatus.setReports(reportTemplateIds != null ? reportTemplateRepository.findAllById(reportTemplateIds) : new ArrayList<>()); downloadStatus.setRedactionPreviewColor(redactionPreviewColor); + downloadStatus.setStatus(DownloadStatusValue.QUEUED); downloadStatusRepository.save(downloadStatus); } From 502480aea3cd31f1dc6795959510227fd0a963d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Thu, 6 Jun 2024 14:12:07 +0200 Subject: [PATCH 2/2] RED-9225: Added endpoint to get report templates in new customer api, fixed some bugs --- .../impl/controller/DossierControllerV2.java | 21 +++++++++++++----- .../DossierTemplateControllerV2.java | 22 +++++++++++++++++++ .../model/DocuMineDossierRequest.java | 4 ++++ .../v2/api/external/model/ReportTemplate.java | 22 +++++++++++++++++++ .../external/model/ReportTemplateList.java | 20 +++++++++++++++++ .../external/resource/DossierResource.java | 5 ++++- .../resource/DossierTemplateResource.java | 8 +++++++ .../FileStatusPersistenceService.java | 5 +---- 8 files changed, 97 insertions(+), 10 deletions(-) create mode 100644 persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplate.java create mode 100644 persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplateList.java 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 ad2ed1a38..aeeb7a068 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 @@ -3,8 +3,10 @@ package com.iqser.red.persistence.service.v2.external.api.impl.controller; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.WRITE_DOSSIER_ATTRIBUTES; import static com.iqser.red.service.persistence.service.v2.api.external.resource.DossierTemplateResource.DOSSIER_TEMPLATE_ID_PARAM; +import java.util.HashSet; import java.util.Set; +import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PathVariable; @@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import com.google.common.collect.Sets; import com.iqser.red.persistence.service.v1.external.api.impl.controller.DossierController; import com.iqser.red.persistence.service.v1.external.api.impl.controller.DossierTemplateController; import com.iqser.red.persistence.service.v1.external.api.impl.controller.DownloadController; @@ -29,8 +32,8 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.audit.Audit import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttribute; -import com.iqser.red.service.persistence.service.v2.api.external.model.DocuMineDossierRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttributes; +import com.iqser.red.service.persistence.service.v2.api.external.model.DocuMineDossierRequest; import com.iqser.red.service.persistence.service.v2.api.external.model.DossierList; import com.iqser.red.service.persistence.service.v2.api.external.model.DownloadRequest; import com.iqser.red.service.persistence.service.v2.api.external.model.DownloadStatus; @@ -55,6 +58,9 @@ public class DossierControllerV2 implements DossierResource { private final StatusController statusController; private final DownloadStatusPersistenceService downloadStatusPersistenceService; + @Value("${application.type}") + private String applicationType; + public DossierList getDossiers(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, @RequestParam(name = INCLUDE_ACTIVE_PARAM, defaultValue = "true", required = false) boolean includeActive, @@ -95,11 +101,16 @@ public class DossierControllerV2 implements DossierResource { public void deleteDossier(@Parameter(name = DOSSIER_TEMPLATE_ID_PARAM, description = "The identifier of the dossier template that is used for the dossier.", required = true) @PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, - @Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of the dossier to retrieve.", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId) { + @Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of the dossier to retrieve.", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId, + @RequestParam(name = DELETE_PERMANENTLY_PARAM, defaultValue = "false", required = false) boolean deletePermanently) { dossierTemplateController.getDossierTemplate(dossierTemplateId); - dossierController.deleteDossier(dossierId); + if (deletePermanently) { + dossierController.hardDeleteDossiers(Sets.newHashSet(dossierId)); + } else { + dossierController.deleteDossier(dossierId); + } } @@ -169,7 +180,7 @@ public class DossierControllerV2 implements DossierResource { } - private static DossierRequest mapToDossierRequest(String dossierTemplateId, DocuMineDossierRequest dossier) { + private DossierRequest mapToDossierRequest(String dossierTemplateId, DocuMineDossierRequest dossier) { return DossierRequest.builder() .dossierId(dossier.getId()) @@ -178,7 +189,7 @@ public class DossierControllerV2 implements DossierResource { .description(dossier.getDescription()) .ownerId(dossier.getOwnerId()) .memberIds(dossier.getMemberIds()) - .approverIds(dossier.getMemberIds()) // for DocuMine, the members are always set as approvers + .approverIds(applicationType.equals("DocuMine") ? dossier.getMemberIds() : dossier.getApproverIds()) // for DocuMine, the members are always set as approvers .downloadFileTypes(Set.of(DownloadFileType.ORIGINAL)) .reportTemplateIds(dossier.getReportTemplateIds()) .watermarkId(null) 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 a8fe8ac5f..45b8ab37c 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 @@ -1,6 +1,7 @@ package com.iqser.red.persistence.service.v2.external.api.impl.controller; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.EXPERIMENTAL; +import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.GET_REPORT_TEMPLATES; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOSSIER_ATTRIBUTES_CONFIG; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_DOSSIER_STATUS; import static com.iqser.red.service.persistence.management.v1.processor.roles.ActionRoles.READ_FILE_ATTRIBUTES_CONFIG; @@ -32,6 +33,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.RulesVa import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.utils.StringEncodingUtils; import com.iqser.red.service.persistence.service.v1.api.shared.model.AuditCategory; @@ -45,6 +47,8 @@ import com.iqser.red.service.persistence.service.v2.api.external.model.DossierSt import com.iqser.red.service.persistence.service.v2.api.external.model.DossierStatusDefinitionList; import com.iqser.red.service.persistence.service.v2.api.external.model.FileAttributeDefinition; import com.iqser.red.service.persistence.service.v2.api.external.model.FileAttributeDefinitionList; +import com.iqser.red.service.persistence.service.v2.api.external.model.ReportTemplate; +import com.iqser.red.service.persistence.service.v2.api.external.model.ReportTemplateList; import com.iqser.red.service.persistence.service.v2.api.external.model.RulesValidationMessage; import com.iqser.red.service.persistence.service.v2.api.external.model.RulesValidationResponse; import com.iqser.red.service.persistence.service.v2.api.external.resource.DossierTemplateResource; @@ -72,6 +76,7 @@ public class DossierTemplateControllerV2 implements DossierTemplateResource { private final FileAttributesController fileAttributesController; private final DossierStatusPersistenceService dossierStatusPersistenceService; private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; + private final ReportTemplatePersistenceService reportTemplatePersistenceService; public List getAllDossierTemplates() { @@ -202,6 +207,23 @@ public class DossierTemplateControllerV2 implements DossierTemplateResource { } + @PreAuthorize("hasAuthority('" + GET_REPORT_TEMPLATES + "')") + public ReportTemplateList getReportTemplates(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId) { + + getDossierTemplate(dossierTemplateId); + var templates = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplateId); + return new ReportTemplateList(templates.stream() + .map(t -> ReportTemplate.builder() + .id(t.getTemplateId()) + .name(t.getFileName()) + .createdOn(t.getUploadDate()) + .multiFile(t.isMultiFileReport()) + .preSelect(t.isActiveByDefault()) + .build()) + .toList()); + } + + @SneakyThrows private ResponseEntity uploadRules(String dossierTemplateId, RuleFileType ruleFileType, MultipartFile file, boolean dryRun) { diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DocuMineDossierRequest.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DocuMineDossierRequest.java index 5ac1081d5..d5792905e 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DocuMineDossierRequest.java +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/DocuMineDossierRequest.java @@ -41,6 +41,10 @@ public class DocuMineDossierRequest { @Schema(description = "The id(s) of members associated to this dossier.") private Set memberIds = new HashSet<>(); + @Builder.Default + @Schema(description = "The id(s) of approvers associated to this dossier.") + private Set approverIds = new HashSet<>(); + @Builder.Default @Schema(description = "Id(s) of the word report templates used to generate downloads") private Set reportTemplateIds = new HashSet<>(); diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplate.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplate.java new file mode 100644 index 000000000..0ac283345 --- /dev/null +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplate.java @@ -0,0 +1,22 @@ +package com.iqser.red.service.persistence.service.v2.api.external.model; + +import java.time.OffsetDateTime; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ReportTemplate { + + private String id; + private String name; + private OffsetDateTime createdOn; + private boolean multiFile; + private boolean preSelect; + +} diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplateList.java b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplateList.java new file mode 100644 index 000000000..0af75a7a7 --- /dev/null +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/java/com/iqser/red/service/persistence/service/v2/api/external/model/ReportTemplateList.java @@ -0,0 +1,20 @@ +package com.iqser.red.service.persistence.service.v2.api.external.model; + +import java.util.ArrayList; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ReportTemplateList { + + @Builder.Default + private List reportTemplates = new ArrayList<>(); + +} 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 7160bb1ba..2d244e182 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 @@ -42,6 +42,8 @@ public interface DossierResource { String INCLUDE_ARCHIVED_PARAM = "includeArchived"; String INCLUDE_SOFT_DELETED_PARAM = "includeSoftDeleted"; + String DELETE_PERMANENTLY_PARAM = "deletePermanently"; + @ResponseStatus(value = HttpStatus.OK) @ResponseBody @@ -77,7 +79,8 @@ public interface DossierResource { @Operation(summary = "Deletes an existing dossier.", description = "Dossiers get soft-deleted unless specified other. A soft-deleted dossier can be restored during a retention period that is configured in the application settings. The default retention period is 96h.") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Successfully deleted the dossier."), @ApiResponse(responseCode = "404", description = "Not found")}) void deleteDossier(@Parameter(name = DOSSIER_TEMPLATE_ID_PARAM, description = "The identifier of the dossier template that is used for the dossier.", required = true) @PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, - @Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of the dossier to retrieve.", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId); + @Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of the dossier to retrieve.", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId, + @Parameter(name = DELETE_PERMANENTLY_PARAM, description = "A toggle to determine the deletion mode for a dossier: `true`: The dossier will be permanently deleted and can't be restored. `false` (default): Soft-delete, allowing restoration within the application-configured retention period.") @RequestParam(name = DELETE_PERMANENTLY_PARAM, defaultValue = "false", required = false) boolean deletePermanently); @ResponseStatus(value = 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 b7ae42a91..5b976b704 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 @@ -5,6 +5,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileTyp import com.iqser.red.service.persistence.service.v2.api.external.model.DossierAttributeDefinitionList; import com.iqser.red.service.persistence.service.v2.api.external.model.DossierStatusDefinitionList; import com.iqser.red.service.persistence.service.v2.api.external.model.FileAttributeDefinitionList; +import com.iqser.red.service.persistence.service.v2.api.external.model.ReportTemplateList; import com.iqser.red.service.persistence.service.v2.api.external.model.RulesValidationResponse; import io.swagger.v3.oas.annotations.Operation; @@ -44,6 +45,7 @@ public interface DossierTemplateResource { String FILE_ATTRIBUTE_DEFINITIONS_PATH = "/file-attribute-definitions"; String DOSSIER_TEMPLATE_ID_PARAM = "dossierTemplateId"; String DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_ID_PARAM + "}"; + String REPORT_TEMPLATES_PATH = "/report-templates"; String DRY_RUN_PARAM = "dryRun"; @@ -113,4 +115,10 @@ public interface DossierTemplateResource { @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Successfully returned the dossier attribute definitions for the specified dossier template."), @ApiResponse(responseCode = "404", description = "The DossierTemplate is not found.")}) DossierAttributeDefinitionList getDossierAttributeDefinitions(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId); + + @GetMapping(value = PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + REPORT_TEMPLATES_PATH, produces = MediaType.APPLICATION_JSON_VALUE) + @Operation(summary = "Returns the list of all available report templates", description = "None") + @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "Successfully returned the report templates for the specified dossier template."), @ApiResponse(responseCode = "404", description = "The DossierTemplate is not found.")}) + ReportTemplateList getReportTemplates(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId); + } 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 06a3cc9fc..bffb3680b 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 @@ -386,10 +386,7 @@ public class FileStatusPersistenceService { var now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); - int countUpdate = fileRepository.setHardDelete(fileId, ProcessingStatus.PROCESSED, now, now, now); - if (countUpdate == 0) { - throw new NotFoundException(String.format("File with ID \"%s\" not found!", fileId)); - } + fileRepository.setHardDelete(fileId, ProcessingStatus.PROCESSED, now, now, now); fileAttributesRepository.deleteByFileId(fileId); }