From 01569b6a0deb0aea51f02309031bbb1cfdaf73ed Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Fri, 11 Feb 2022 12:57:15 +0200 Subject: [PATCH] reanalyse cleanup, imported flag for redaction-log --- .../v1/api/resources/ReanalysisResource.java | 7 +-- .../controller/ReanalysisController.java | 47 +++++++++++-------- .../integration/tests/ReanalysisTest.java | 10 ++-- persistence-service-v1/pom.xml | 2 +- 4 files changed, 34 insertions(+), 32 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java index 82230b33b..e304a92c4 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/ReanalysisResource.java @@ -21,30 +21,25 @@ public interface ReanalysisResource { @PostMapping(value = REANALYZE_PATH + DOSSIER_ID_PATH_PARAM) void reanalyzeDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force); @PostMapping(value = REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + BULK_REST_PATH) void reanalyzeFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody Set fileIds, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force); @PostMapping(value = OCR_REANALYZE_PATH + DOSSIER_ID_PATH_PARAM) - void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser); + void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId); @PostMapping(value = OCR_REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_PARAM) void ocrFile(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID_PARAM) String fileId, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force); @PostMapping(value = OCR_REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + BULK_REST_PATH) void ocrFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestBody Set fileIds); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java index 291a7fb86..0930e4c33 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/ReanalysisController.java @@ -41,35 +41,33 @@ public class ReanalysisController implements ReanalysisResource { @Override public void reanalyzeDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) { - var relevantFiles = getRelevantFiles(dossierId, triggeredByUser); + var relevantFiles = getAllFilesForDossier(dossierId, true); reanalyseFiles(dossierId, force, relevantFiles); } @Override public void reanalyzeFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody Set fileIds, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) { - var relevantFiles = getRelevantFiles(dossierId, fileIds, triggeredByUser); + var relevantFiles = getRelevantFiles(dossierId, fileIds); reanalyseFiles(dossierId, force, relevantFiles); } - public void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser) { + public void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId) { - var relevantFiles = getRelevantFiles(dossierId, triggeredByUser); + var relevantFiles = getAllFilesForDossier(dossierId, true); relevantFiles.stream().filter(fileStatus -> fileStatus.getLastOCRTime() == null).forEach(fileStatus -> fileStatusService.setStatusOcrProcessing(dossierId, fileStatus.getId())); } - public void ocrFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestBody Set fileIds) { + public void ocrFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody Set fileIds) { - var relevantFiles = getRelevantFiles(dossierId, fileIds, triggeredByUser); + var relevantFiles = getRelevantFiles(dossierId, fileIds); relevantFiles.stream().filter(fileStatus -> fileStatus.getLastOCRTime() == null).forEach(fileStatus -> fileStatusService.setStatusOcrProcessing(dossierId, fileStatus.getId())); } @@ -81,7 +79,6 @@ public class ReanalysisController implements ReanalysisResource { public void ocrFile(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID_PARAM) String fileId, - @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) { dossierPersistenceService.getAndValidateDossier(dossierId); @@ -96,36 +93,46 @@ public class ReanalysisController implements ReanalysisResource { if (dossierFile.getLastOCRTime() != null) { throw new ConflictException("File already has been OCR processed"); } - ocrFiles(dossierId,triggeredByUser, Sets.newHashSet(fileId)); + ocrFiles(dossierId, Sets.newHashSet(fileId)); } } - private List getRelevantFiles(String dossierId, boolean triggeredByUser) { + private List getAllFilesForDossier(String dossierId, boolean filterOnlyValidFiles) { var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); - return fileStatusService.getDossierStatus(dossier.getId()) - .stream() - .filter(fileStatus -> !fileStatus.getProcessingStatus().equals(ProcessingStatus.DELETED)) - .filter(fileStatus -> !fileStatus.getWorkflowStatus().equals(WorkflowStatus.APPROVED)) - .filter(fileStatus -> triggeredByUser || !fileStatus.isExcludedFromAutomaticAnalysis()) - .collect(Collectors.toList()); + + if (filterOnlyValidFiles) { + return fileStatusService.getDossierStatus(dossier.getId()) + .stream() + .filter(fileStatus -> !fileStatus.getProcessingStatus().equals(ProcessingStatus.DELETED)) + .filter(fileStatus -> !fileStatus.getWorkflowStatus().equals(WorkflowStatus.APPROVED)) + .collect(Collectors.toList()); + } else { + return fileStatusService.getDossierStatus(dossier.getId()); + } } - private List getRelevantFiles(String dossierId, Collection fileIds, boolean triggeredByUser) { + private List getRelevantFiles(String dossierId, Collection fileIds) { - var relevantDossierFiles = getRelevantFiles(dossierId, triggeredByUser); + var dossierFiles = getAllFilesForDossier(dossierId, false); var relevantFiles = new ArrayList(); for (var fileId : fileIds) { - var dossierFileOptional = relevantDossierFiles.stream().filter(f -> f.getId().equals(fileId)).findAny(); + var dossierFileOptional = dossierFiles.stream().filter(f -> f.getId().equals(fileId)).findAny(); if (dossierFileOptional.isEmpty()) { throw new BadRequestException("Cannot reanalyse file from different dossier!"); } var dossierFile = dossierFileOptional.get(); + if (dossierFile.isSoftOrHardDeleted()) { + throw new BadRequestException("Cannot reanalyse deleted file!"); + } + if (dossierFile.getWorkflowStatus() == WorkflowStatus.APPROVED) { + throw new BadRequestException("Cannot reanalyse approved file!"); + } relevantFiles.add(dossierFile); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java index 6d891e324..09afcc9ca 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ReanalysisTest.java @@ -42,28 +42,28 @@ public class ReanalysisTest extends AbstractPersistenceServerServiceTest { var file = fileTesterAndProvider.testAndProvideFile(dossier); - reanalysisClient.ocrDossier(dossier.getId(),true); + reanalysisClient.ocrDossier(dossier.getId()); var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.OCR_PROCESSING); resetProcessingStatus(file); - reanalysisClient.ocrFile(dossier.getId(), file.getId(),true, true); + reanalysisClient.ocrFile(dossier.getId(), file.getId(),true); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.OCR_PROCESSING); resetProcessingStatus(file); - reanalysisClient.ocrFiles(dossier.getId(),true, Set.of(file.getId())); + reanalysisClient.ocrFiles(dossier.getId(), Set.of(file.getId())); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.OCR_PROCESSING); resetProcessingStatus(file); - reanalysisClient.reanalyzeFiles(dossier.getId(), Set.of(file.getId()), true,true); + reanalysisClient.reanalyzeFiles(dossier.getId(), Set.of(file.getId()), true); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.PROCESSING); resetProcessingStatus(file); - reanalysisClient.reanalyzeDossier(dossier.getId(), true,true); + reanalysisClient.reanalyzeDossier(dossier.getId(), true); loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.PROCESSING); resetProcessingStatus(file); diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index c73d35926..bd9b397a0 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -25,7 +25,7 @@ - 3.74.0 + 3.76.0 2.18.0 3.31.0 3.19.0