RED-7252: Not possible anymore to ocr deleted or approved file
This commit is contained in:
parent
f9ab3a2607
commit
9162bb7edc
@ -299,6 +299,9 @@ public class ReanalysisController implements ReanalysisResource {
|
|||||||
private void validateOCR(String dossierId, String fileId) {
|
private void validateOCR(String dossierId, String fileId) {
|
||||||
|
|
||||||
var status = fileStatusManagementService.getFileStatus(fileId);
|
var status = fileStatusManagementService.getFileStatus(fileId);
|
||||||
|
if(status.isSoftOrHardDeleted()) {
|
||||||
|
throw new NotFoundException("File does not exist");
|
||||||
|
}
|
||||||
if (status.getWorkflowStatus() == WorkflowStatus.APPROVED) {
|
if (status.getWorkflowStatus() == WorkflowStatus.APPROVED) {
|
||||||
throw new BadRequestException("Cannot OCR approved file");
|
throw new BadRequestException("Cannot OCR approved file");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -63,6 +63,8 @@ public class AdminInterfaceController {
|
|||||||
@PostMapping("/ocr")
|
@PostMapping("/ocr")
|
||||||
public void forceOCR(@RequestParam("dossierId") String dossierId, @RequestParam("fileId") String fileId) {
|
public void forceOCR(@RequestParam("dossierId") String dossierId, @RequestParam("fileId") String fileId) {
|
||||||
|
|
||||||
|
fileStatusService.validateFileIsNotDeletedAndNotApproved(fileId);
|
||||||
|
|
||||||
fileStatusService.setStatusOcrQueued(dossierId, fileId);
|
fileStatusService.setStatusOcrQueued(dossierId, fileId);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -96,6 +98,7 @@ public class AdminInterfaceController {
|
|||||||
file.getOcrStartTime());
|
file.getOcrStartTime());
|
||||||
|
|
||||||
if (!dryRun) {
|
if (!dryRun) {
|
||||||
|
fileStatusService.validateFileIsNotDeletedAndNotApproved(file.getId());
|
||||||
fileStatusService.setStatusOcrQueued(file.getDossierId(), file.getId());
|
fileStatusService.setStatusOcrQueued(file.getDossierId(), file.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
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.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -196,7 +198,7 @@ public class FileStatusService {
|
|||||||
fileModel = reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(fileModel, true);
|
fileModel = reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(fileModel, true);
|
||||||
|
|
||||||
var dossierTemplate = dossier.getDossierTemplate();
|
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);
|
log.debug("Add file: {} from dossier {} to OCR queue", fileId, dossierId);
|
||||||
setStatusOcrQueued(dossierId, fileId);
|
setStatusOcrQueued(dossierId, fileId);
|
||||||
return;
|
return;
|
||||||
@ -764,4 +766,16 @@ public class FileStatusService {
|
|||||||
return fileStatusPersistenceService.getFilenameById(fileId);
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,15 +1,5 @@
|
|||||||
package com.iqser.red.service.persistence.management.v1.processor.service;
|
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.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.ByteContentDocument;
|
||||||
import com.iqser.red.service.pdftron.redaction.v1.api.model.highlights.TextHighlightConversionOperation;
|
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.client.pdftronredactionservice.PDFTronClient;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
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.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.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.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.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.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.ProcessingStatus;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.SneakyThrows;
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
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
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@ -140,12 +139,17 @@ public class ReanalysisService {
|
|||||||
throw new ConflictException("File is not processed");
|
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) {
|
if (force) {
|
||||||
fileStatusService.setStatusOcrQueued(dossierId, fileId);
|
fileStatusService.setStatusOcrQueued(dossierId, fileId);
|
||||||
} else {
|
} else {
|
||||||
if (dossierFile.isSoftOrHardDeleted() || dossierFile.getWorkflowStatus().equals(WorkflowStatus.APPROVED)) {
|
|
||||||
throw new ConflictException("Cannot analyse a deleted/approved file");
|
|
||||||
}
|
|
||||||
if (dossierFile.getOcrStartTime() != null) {
|
if (dossierFile.getOcrStartTime() != null) {
|
||||||
throw new ConflictException("File already has been OCR processed");
|
throw new ConflictException("File already has been OCR processed");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user