From 9162bb7edcf4e970b8477df8c80ef735f1bc2b2a Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Tue, 23 Jan 2024 16:45:41 +0100 Subject: [PATCH] RED-7252: Not possible anymore to ocr deleted or approved file --- .../impl/controller/ReanalysisController.java | 3 ++ .../internal/AdminInterfaceController.java | 3 ++ .../processor/service/FileStatusService.java | 16 +++++++++- .../processor/service/ReanalysisService.java | 32 +++++++++++-------- 4 files changed, 39 insertions(+), 15 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/ReanalysisController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReanalysisController.java index ef8afeb59..02efcdddf 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReanalysisController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/ReanalysisController.java @@ -299,6 +299,9 @@ public class ReanalysisController implements ReanalysisResource { private void validateOCR(String dossierId, String fileId) { var status = fileStatusManagementService.getFileStatus(fileId); + if(status.isSoftOrHardDeleted()) { + throw new NotFoundException("File does not exist"); + } if (status.getWorkflowStatus() == WorkflowStatus.APPROVED) { throw new BadRequestException("Cannot OCR approved file"); } diff --git a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java index b4c77e297..988dfdb29 100644 --- a/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java +++ b/persistence-service-v1/persistence-service-internal-api-impl-v1/src/main/java/com/iqser/red/service/persistence/v1/internal/api/controller/internal/AdminInterfaceController.java @@ -63,6 +63,8 @@ public class AdminInterfaceController { @PostMapping("/ocr") public void forceOCR(@RequestParam("dossierId") String dossierId, @RequestParam("fileId") String fileId) { + fileStatusService.validateFileIsNotDeletedAndNotApproved(fileId); + fileStatusService.setStatusOcrQueued(dossierId, fileId); } @@ -96,6 +98,7 @@ public class AdminInterfaceController { file.getOcrStartTime()); if (!dryRun) { + fileStatusService.validateFileIsNotDeletedAndNotApproved(file.getId()); fileStatusService.setStatusOcrQueued(file.getDossierId(), file.getId()); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java index e1f1b99de..56c35812e 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/FileStatusService.java @@ -8,6 +8,8 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; +import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import org.apache.commons.lang3.StringUtils; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; @@ -196,7 +198,7 @@ public class FileStatusService { fileModel = reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(fileModel, true); var dossierTemplate = dossier.getDossierTemplate(); - if (dossierTemplate.isOcrByDefault() && fileModel.getOcrEndTime() == null) { + if (dossierTemplate.isOcrByDefault() && fileModel.getOcrEndTime() == null && !fileModel.isSoftOrHardDeleted()) { log.debug("Add file: {} from dossier {} to OCR queue", fileId, dossierId); setStatusOcrQueued(dossierId, fileId); return; @@ -764,4 +766,16 @@ public class FileStatusService { return fileStatusPersistenceService.getFilenameById(fileId); } + public void validateFileIsNotDeletedAndNotApproved(String fileId) { + + var file = fileStatusPersistenceService.getStatus(fileId); + + if (file.isSoftOrHardDeleted()) { + throw new NotFoundException("File does not exist"); + } + + if (file.getWorkflowStatus() == WorkflowStatus.APPROVED) { + throw new BadRequestException("Cannot analyse an approved file"); + } + } } 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 56a125bfc..f901cb329 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 @@ -1,15 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - import com.google.common.collect.Sets; import com.iqser.red.service.pdftron.redaction.v1.api.model.ByteContentDocument; import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.TextHighlightConversionOperation; @@ -17,16 +7,25 @@ import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.TextHighl import com.iqser.red.service.persistence.management.v1.processor.client.pdftronredactionservice.PDFTronClient; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; +import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.DeleteImportedRedactionsRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; 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 lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @Slf4j @Service @@ -140,12 +139,17 @@ public class ReanalysisService { throw new ConflictException("File is not processed"); } + if (dossierFile.isSoftOrHardDeleted()) { + throw new NotFoundException("File does not exist"); + } + + if (dossierFile.getWorkflowStatus().equals(WorkflowStatus.APPROVED)) { + throw new ConflictException("Cannot analyse a approved file"); + } + if (force) { fileStatusService.setStatusOcrQueued(dossierId, fileId); } else { - if (dossierFile.isSoftOrHardDeleted() || dossierFile.getWorkflowStatus().equals(WorkflowStatus.APPROVED)) { - throw new ConflictException("Cannot analyse a deleted/approved file"); - } if (dossierFile.getOcrStartTime() != null) { throw new ConflictException("File already has been OCR processed"); } -- 2.47.2