From f9090cfa3f6e6a3662139c1386ee3312af520fb1 Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Thu, 6 Jun 2024 10:21:26 +0200 Subject: [PATCH] RED-9254: Support Controller (Part 1) --- .../impl/controller/SupportController.java | 35 +++------- .../external/resource/SupportResource.java | 34 +++------- .../service/FileStatusManagementService.java | 13 ++-- .../processor/service/ReanalysisService.java | 32 ++++------ .../FileStatusPersistenceService.java | 7 +- .../repository/FileRepository.java | 4 ++ .../tests/SupportControllerTest.java | 64 +++++++++++++++++-- .../v1/api/shared/model/FileStatusFilter.java | 11 ++++ 8 files changed, 105 insertions(+), 95 deletions(-) diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java index 02c884c32..51948e334 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java @@ -15,7 +15,6 @@ 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.service.persistence.management.v1.processor.service.FileStatusManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusMapper; import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService; @@ -38,39 +37,21 @@ public class SupportController implements SupportResource { @Override - public void reanalyzeAllErrorFiles(@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) { + public void reanalyzeAllErrorFiles(@RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis) { - reanalysisService.reanalyzeAllErrorFiles(fullAnalysis); - } - - - @Override - public void reanalyzeErrorFilesForDossier(@PathVariable(DOSSIER_ID) String dossierId, - @RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) { - - reanalysisService.reanalyzeErrorFilesInDossier(dossierId, fullAnalysis); + reanalysisService.reanalyzeAllErrorFiles(fullReanalysis); } @Override public void reanalyzeErrorFilesBulkForDossier(@PathVariable(DOSSIER_ID) String dossierId, @RequestBody List fileIds, - @RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) { + @RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis) { - reanalysisService.reanalyzeGivenErrorFilesInDossier(dossierId, new HashSet<>(fileIds), fullAnalysis); + reanalysisService.reanalyzeGivenErrorFilesInDossier(dossierId, new HashSet<>(fileIds), fullReanalysis); } - - @Override - public void reanalyzeErrorFile(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) { - - reanalysisService.reanalyzeGivenErrorFilesInDossier(dossierId, Sets.newHashSet(fileId), fullAnalysis); - } - - private static Predicate matchesStatusFilters(FileStatusFilter fileStatusFilter) { FileStatusFilter filter = Optional.ofNullable(fileStatusFilter).orElseGet(FileStatusFilter::new); @@ -85,7 +66,9 @@ public class SupportController implements SupportResource { return fileStatus -> (filter.getProcessingStatusList().isEmpty() || filter.getProcessingStatusList().contains(fileStatus.getProcessingStatus())) && - (filter.getWorkflowStatusList().isEmpty() || filter.getWorkflowStatusList().contains(fileStatus.getWorkflowStatus())); + (filter.getWorkflowStatusList().isEmpty() || filter.getWorkflowStatusList().contains(fileStatus.getWorkflowStatus())) && + (filter.isIncludeSoftDeletedFiles() || fileStatus.getDeleted() == null) && + (filter.isIncludeHardDeletedFiles() || fileStatus.getHardDeletedTime() == null); } @@ -104,7 +87,7 @@ public class SupportController implements SupportResource { @Override public List getFileStatusForDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileStatusFilter fileStatusFilter) { - return fileStatusManagementService.getDossierTemplateStatus(dossierTemplateId) + return fileStatusManagementService.getAllDossierTemplateStatus(dossierTemplateId) .stream() .filter(matchesStatusFilters(fileStatusFilter)) .map(FileStatusMapper::toFileStatus) @@ -115,7 +98,7 @@ public class SupportController implements SupportResource { @Override public List getFileStatusForDossier(@PathVariable(DOSSIER_ID) String dossierId, @RequestBody FileStatusFilter fileStatusFilter) { - return fileStatusManagementService.getDossierStatus(dossierId) + return fileStatusManagementService.getAllDossierStatus(dossierId) .stream() .filter(matchesStatusFilters(fileStatusFilter)) .map(FileStatusMapper::toFileStatus) diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java index 7b44a3db0..3d6dfd8cb 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java @@ -4,7 +4,6 @@ import java.util.List; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -34,51 +33,34 @@ public interface SupportResource { String DOSSIER_ID_PATH_VARIABLE = "/{" + DOSSIER_ID + "}"; String FILE_ID_PATH_VARIABLE = "/{" + FILE_ID + "}"; - String DOSSIER_TEMPLATE_DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/dossierTemplate/{" + DOSSIER_TEMPLATE_ID + "}"; - String DOSSIER_DOSSIER_ID_PATH_VARIABLE = "/dossier/{" + DOSSIER_ID + "}"; + String DOSSIER_TEMPLATE_DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/dossierTemplateId/{" + DOSSIER_TEMPLATE_ID + "}"; + String DOSSIER_DOSSIER_ID_PATH_VARIABLE = "/dossierId/{" + DOSSIER_ID + "}"; String FALSE = "false"; - String FULL_ANALYSIS_PARAM = "fullAnalysis"; + String FULL_REANALYSIS_PARAM = "fullReanalysis"; @PostMapping(value = ERROR_REANALYSIS_REST_PATH) - @Operation(summary = "Reanalyze all files in error state", description = "None") + @Operation(summary = "Reanalyze all files in error state.", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "403", description = "Forbidden")}) - void reanalyzeAllErrorFiles(@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis); - - - @PostMapping(value = ERROR_REANALYSIS_REST_PATH + DOSSIER_ID_PATH_VARIABLE) - @Operation(summary = "Reanalyze all files in error state in a dossier", description = "None") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) - void reanalyzeErrorFilesForDossier(@PathVariable(DOSSIER_ID) String dossierId, - @RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis); + void reanalyzeAllErrorFiles(@RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis); @PostMapping(value = ERROR_REANALYSIS_REST_PATH + DOSSIER_ID_PATH_VARIABLE + BULK_REST_PATH) - @Operation(summary = "Reanalyze multiple files in error state for a dossier", description = "None") + @Operation(summary = "Reanalyze multiple files in error state for a dossier.", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) void reanalyzeErrorFilesBulkForDossier(@PathVariable(DOSSIER_ID) String dossierId, @RequestBody List fileIds, - @RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis); - - - @PostMapping(value = ERROR_REANALYSIS_REST_PATH - + DOSSIER_ID_PATH_VARIABLE - + FILE_ID_PATH_VARIABLE) - @Operation(summary = "Reanalyze a file in error state", description = "None") - @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) - void reanalyzeErrorFile(@PathVariable(DOSSIER_ID) String dossierId, - @PathVariable(FILE_ID) String fileId, - @RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis); + @RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis); @ResponseStatus(value = HttpStatus.OK) @ResponseBody @PostMapping(value = STATUS_REST_PATH, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) - @Operation(summary = "Get the filtered status for all files in a dossier.", description = "None") + @Operation(summary = "Get the filtered status for all files in the workspace.", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")}) List getFileStatus(@RequestBody FileStatusFilter fileStatusFilter); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java index 49d6728e4..626a13c98 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusManagementService.java @@ -35,18 +35,12 @@ public class FileStatusManagementService { public List getAllFileStatuses() { - return fileStatusService.getAllFiles() - .stream() - .filter(f -> !f.isSoftOrHardDeleted()) - .collect(Collectors.toList()); + return fileStatusService.getAllFiles(); } - public List getDossierTemplateStatus(String dossierTemplateId) { + public List getAllDossierTemplateStatus(String dossierTemplateId) { - return fileStatusService.getDossierTemplateStatus(dossierTemplateId) - .stream() - .filter(f -> !f.isSoftOrHardDeleted()) - .collect(Collectors.toList()); + return fileStatusService.getDossierTemplateStatus(dossierTemplateId); } public List getDossierStatus(String dossierId) { @@ -58,6 +52,7 @@ public class FileStatusManagementService { } + public List getAllDossierStatus(String dossierId) { return fileStatusService.getDossierStatus(dossierId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java index 47134587d..32d49c086 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java @@ -45,12 +45,13 @@ public class ReanalysisService { private final Predicate errorFilesFilter = fileStatus -> fileStatus.getProcessingStatus().equals(ProcessingStatus.ERROR); - public void reanalyzeAllErrorFiles(boolean fullAnalysis) { + public void reanalyzeAllErrorFiles(boolean repeatStructureAnalysis) { var errorFiles = fileStatusService.getAllErrorFiles(); - analyseFiles(fullAnalysis, errorFiles); + analyseFiles(repeatStructureAnalysis, errorFiles); } + public void reanalyzeDossier(String dossierId, boolean force) { var relevantFiles = getAllFilesForDossier(dossierId, validFilesFilter); @@ -58,13 +59,6 @@ public class ReanalysisService { } - public void reanalyzeErrorFilesInDossier(String dossierId, boolean fullAnalysis) { - - var errorFiles = getAllFilesForDossier(dossierId, errorFilesFilter); - analyseFiles(fullAnalysis, errorFiles); - } - - private List getAllFilesForDossier(String dossierId, Predicate filter) { var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); @@ -76,6 +70,7 @@ public class ReanalysisService { } + private List getAllFilesForDossier(String dossierId) { var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); @@ -109,13 +104,9 @@ public class ReanalysisService { } - private void analyseFiles(boolean fullAnalysis, List filesToReanalyse) { + private void analyseFiles(boolean repeatStructureAnalysis, List filesToReanalyse) { - if (fullAnalysis) { - filesToReanalyse.forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), filesToReanalyse.size() == 1, false)); - } else { - filesToReanalyse.forEach(file -> fileStatusService.setStatusReprocess(file.getDossierId(), file.getId(), filesToReanalyse.size() == 1, true)); - } + filesToReanalyse.forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), filesToReanalyse.size() == 1, repeatStructureAnalysis)); } @@ -125,10 +116,10 @@ public class ReanalysisService { reanalyseFiles(force, relevantFiles); } - public void reanalyzeGivenErrorFilesInDossier(String dossierId, Set fileIds, boolean fullAnalysis) { - var errorFiles = getRelevantErrorFiles(dossierId, fileIds); - analyseFiles(fullAnalysis, errorFiles); + public void reanalyzeGivenErrorFilesInDossier(String dossierId, Set fileIds, boolean repeatStructureAnalysis) { + + analyseFiles(repeatStructureAnalysis, fileIds.isEmpty() ? getAllFilesForDossier(dossierId, errorFilesFilter) : getRelevantErrorFiles(dossierId, fileIds)); } @@ -160,13 +151,12 @@ public class ReanalysisService { } - private List getRelevantErrorFiles(String dossierId, Collection fileIds) { List relevantFiles = getRelevantFiles(dossierId, fileIds); relevantFiles.forEach(fileModel -> { - if(!fileModel.getProcessingStatus().equals(ProcessingStatus.ERROR)) { - throw new BadRequestException("Only files in error state are allowed to be analyzed here!"); + if (!fileModel.getProcessingStatus().equals(ProcessingStatus.ERROR)) { + throw new ConflictException("Only files in error state are allowed to be analyzed here!"); } }); return relevantFiles; 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 584db73de..fdc42b63f 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 @@ -7,10 +7,8 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.Stream; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -426,10 +424,7 @@ public class FileStatusPersistenceService { public List getAllErrorFiles() { - return fileRepository.findAll() - .stream() - .filter(f -> f.getProcessingStatus().equals(ProcessingStatus.ERROR)) - .collect(Collectors.toList()); + return fileRepository.getAllErrorFilesExcludeDeleted(); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java index 6379bbce2..16d4538b8 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/FileRepository.java @@ -304,6 +304,10 @@ public interface FileRepository extends JpaRepository { List getSoftDeletedFiles(@Param("dossierIds") List dossierIds); + @Query("select f from FileEntity f where f.processingStatus = 'ERROR' and f.deleted is null and f.hardDeletedTime is null ") + List getAllErrorFilesExcludeDeleted(); + + @Query("select f.processingStatus as processingStatus, count(f) as count from FileEntity f " + "inner join DossierEntity d on d.id = f.dossierId " + "where f.deleted is null and f.hardDeletedTime is null " diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SupportControllerTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SupportControllerTest.java index 31f7f3a5d..377b00d5e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SupportControllerTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/SupportControllerTest.java @@ -1,7 +1,11 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneId; import java.util.ArrayList; import java.util.List; @@ -21,6 +25,8 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; +import feign.FeignException; + public class SupportControllerTest extends AbstractPersistenceServerServiceTest { @Autowired @@ -45,6 +51,9 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest var dossier = dossierTesterAndProvider.provideTestDossier(); var file = fileTesterAndProvider.testAndProvideFile(dossier); + var e = assertThrows(FeignException.class, () -> supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(file.getFileId()), true)); + assertThat(e.status()).isEqualTo(409); + setProcessingStatusToError(dossier, file); supportClient.reanalyzeAllErrorFiles(true); @@ -53,13 +62,7 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest setProcessingStatusToError(dossier, file); - supportClient.reanalyzeErrorFilesForDossier(dossier.getId(), true); - loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); - assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING); - - setProcessingStatusToError(dossier, file); - - supportClient.reanalyzeErrorFile(dossier.getId(), file.getFileId(), true); + supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(), true); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING); @@ -70,6 +73,15 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING); setProcessingStatusToError(dossier, file); + + setFileToStatusDeleted(file); + e = assertThrows(FeignException.class, () -> supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(file.getFileId()), true)); + assertThat(e.status()).isEqualTo(400); + + setFiletoStatusHardDeleted(file); + e = assertThrows(FeignException.class, () -> supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(file.getFileId()), true)); + assertThat(e.status()).isEqualTo(400); + } @@ -118,6 +130,44 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null)); assertThat(fileStatuses.size()).isEqualTo(1); + setFileToStatusDeleted(file); + + fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, false, true)); + assertThat(fileStatuses.size()).isEqualTo(0); + + fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, true, false)); + assertThat(fileStatuses.size()).isEqualTo(1); + + setFiletoStatusHardDeleted(file); + + fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, true, false)); + assertThat(fileStatuses.size()).isEqualTo(0); + + fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, false, true)); + assertThat(fileStatuses.size()).isEqualTo(1); + + } + + + private void setFiletoStatusHardDeleted(FileStatus file) { + + fileRepository.findById(file.getId()) + .ifPresent((f) -> { + f.setDeleted(null); + f.setHardDeletedTime(OffsetDateTime.ofInstant(Instant.now(), ZoneId.of("Z"))); + fileRepository.saveAndFlush(f); + }); + } + + + private void setFileToStatusDeleted(FileStatus file) { + + fileRepository.findById(file.getId()) + .ifPresent((f) -> { + f.setDeleted(OffsetDateTime.ofInstant(Instant.now(), ZoneId.of("Z"))); + f.setHardDeletedTime(null); + fileRepository.saveAndFlush(f); + }); } diff --git a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java index 700f2e756..60768e994 100644 --- a/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java +++ b/persistence-service-v1/persistence-service-shared-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/shared/model/FileStatusFilter.java @@ -17,5 +17,16 @@ public class FileStatusFilter { private List processingStatusList = new ArrayList<>(); private List workflowStatusList = new ArrayList<>(); + private boolean includeSoftDeletedFiles; + private boolean includeHardDeletedFiles; + + + public FileStatusFilter(List processingStatusList, List workflowStatusList) { + + this.processingStatusList = processingStatusList; + this.workflowStatusList = workflowStatusList; + this.includeSoftDeletedFiles = false; + this.includeHardDeletedFiles = false; + } }