RED-7252: Not possible anymore to ocr deleted or approved file #319

Merged
ali.oezyetimoglu1 merged 1 commits from RED-7252 into master 2024-01-23 17:25:26 +01:00
4 changed files with 39 additions and 15 deletions

View File

@ -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");
}

View File

@ -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());
}

View File

@ -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");
}
}
}

View File

@ -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");
}