diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java index a79ecdbe9..d23600b64 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/FileStatusService.java @@ -82,7 +82,10 @@ public class FileStatusService { var fileEntities = fileStatusPersistenceService.getAllRelevantStatusesForReanalysisScheduler(fileManagementServiceSettings.getMaxErrorRetries()); var convertedList = convert(fileEntities, FileModel.class, new FileModelMapper()); - return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList).stream().filter(FileModel::isAnalysisRequired).collect(Collectors.toList()); + return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList) + .stream() + .filter(FileModel::isAnalysisRequired) + .collect(Collectors.toList()); } @@ -121,7 +124,8 @@ public class FileStatusService { } - public void updateProcessingStatusPreprocessed(String dossierId, String fileId, boolean hasHighlights, long fileSize) { + public void updateProcessingStatusPreprocessed(String dossierId, String fileId, boolean hasHighlights, + long fileSize) { fileStatusPersistenceService.updateProcessingStatusPreprocessed(fileId, hasHighlights, fileSize); addToAnalysisQueue(dossierId, fileId, false, Set.of()); @@ -176,7 +180,8 @@ public class FileStatusService { @Transactional - public void setStatusReprocess(String dossierId, String fileId, boolean priority, Set sectionsToReanalyse, boolean triggeredManually) { + public void setStatusReprocess(String dossierId, String fileId, boolean priority, Set sectionsToReanalyse, + boolean triggeredManually) { log.info("Reprocessing file: {} from dossier {}", fileId, dossierId); @@ -210,7 +215,8 @@ public class FileStatusService { @Transactional - public void setStatusFullReprocess(String dossierId, String fileId, boolean priority, boolean requiresStructureAnalysis) { + public void setStatusFullReprocess(String dossierId, String fileId, boolean priority, + boolean requiresStructureAnalysis) { FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId); @@ -232,7 +238,11 @@ public class FileStatusService { @SneakyThrows public void addToPreprocessingQueue(String dossierId, String fileId, String filename) { - var processUntouchedDocumentRequest = ProcessUntouchedDocumentRequest.builder().dossierId(dossierId).fileId(fileId).fileName(filename).build(); + var processUntouchedDocumentRequest = ProcessUntouchedDocumentRequest.builder() + .dossierId(dossierId) + .fileId(fileId) + .fileName(filename) + .build(); setStatusPreProcessing(fileId); @@ -421,7 +431,8 @@ public class FileStatusService { @Transactional - public void overwriteFile(String dossierId, String fileId, String uploader, String filename, boolean keepManualRedactions) { + public void overwriteFile(String dossierId, String fileId, String uploader, String filename, + boolean keepManualRedactions) { fileManagementStorageService.deleteObject(dossierId, fileId, FileType.ORIGIN); fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG); @@ -458,7 +469,8 @@ public class FileStatusService { // wipe force redactions var forceRedactions = forceRedactionPersistenceService.findForceRedactions(fileId, false); - forceRedactions.forEach(f -> forceRedactionPersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now)); + forceRedactions.forEach(f -> forceRedactionPersistenceService.softDelete(fileId, f.getId() + .getAnnotationId(), now)); // wipe add manual redactions var addRedactions = addRedactionPersistenceService.findAddRedactions(fileId, false); @@ -466,19 +478,23 @@ public class FileStatusService { // wipe removeRedactions var removeRedactions = removeRedactionPersistenceService.findRemoveRedactions(fileId, false); - removeRedactions.forEach(f -> removeRedactionPersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now)); + removeRedactions.forEach(f -> removeRedactionPersistenceService.softDelete(fileId, f.getId() + .getAnnotationId(), now)); // wipe image recat var imageRecategorizations = imageRecategorizationPersistenceService.findRecategorizations(fileId, false); - imageRecategorizations.forEach(f -> imageRecategorizationPersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now));// wipe image recat + imageRecategorizations.forEach(f -> imageRecategorizationPersistenceService.softDelete(fileId, f.getId() + .getAnnotationId(), now));// wipe image recat // wipe resize redactions var resizeRedactions = resizeRedactionPersistenceService.findResizeRedactions(fileId, false); - resizeRedactions.forEach(f -> resizeRedactionPersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now)); + resizeRedactions.forEach(f -> resizeRedactionPersistenceService.softDelete(fileId, f.getId() + .getAnnotationId(), now)); // wipe legal basis changes var legalBasisChanges = legalBasisChangePersistenceService.findLegalBasisChanges(fileId, false); - legalBasisChanges.forEach(f -> legalBasisChangePersistenceService.softDelete(fileId, f.getId().getAnnotationId(), now)); + legalBasisChanges.forEach(f -> legalBasisChangePersistenceService.softDelete(fileId, f.getId() + .getAnnotationId(), now)); fileStatusPersistenceService.updateHasComments(fileId, false); } @@ -512,7 +528,8 @@ public class FileStatusService { @Transactional - protected void addToAnalysisQueue(String dossierId, String fileId, boolean priority, Set sectionsToReanalyse) { + protected void addToAnalysisQueue(String dossierId, String fileId, boolean priority, + Set sectionsToReanalyse) { var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); var fileEntity = fileStatusPersistenceService.getStatus(fileId); @@ -598,7 +615,8 @@ public class FileStatusService { } - private MessageType calculateMessageType(String dossierId, String fileId, boolean reanalyse, ProcessingStatus processingStatus, FileModel fileModel) { + private MessageType calculateMessageType(String dossierId, String fileId, boolean reanalyse, + ProcessingStatus processingStatus, FileModel fileModel) { if (!fileManagementStorageService.objectExists(dossierId, fileId, FileType.TEXT)) { return MessageType.STRUCTURE_ANALYSE; @@ -607,20 +625,35 @@ public class FileStatusService { return MessageType.ANALYSE; } if (reanalyse) { - if (fileModel.getLastFileAttributeChange() != null && fileModel.getLastProcessed().isBefore(fileModel.getLastFileAttributeChange())) { + if (fileModel.getLastFileAttributeChange() != null && fileModel.getLastProcessed() + .isBefore(fileModel.getLastFileAttributeChange())) { return MessageType.ANALYSE; } return MessageType.REANALYSE; - } else if (fileModel.getLastProcessed() != null && manualRedactionProviderService.getManualRedactions(fileId) - .getResizeRedactions() - .stream() - .anyMatch(resize -> resize.getRequestDate().isAfter(fileModel.getLastProcessed()))) { + } else if (hasUnprocessedManualRedactions(fileModel)) { return MessageType.REANALYSE; } return MessageType.ANALYSE; } + private boolean hasUnprocessedManualRedactions(FileModel fileModel) { + + return fileModel.getLastProcessed() != null && (manualRedactionProviderService.getManualRedactions(fileModel.getId()) + .getResizeRedactions() + .stream() + .anyMatch(manual -> manual.getRequestDate() + .isAfter(fileModel.getLastProcessed())) || manualRedactionProviderService.getManualRedactions(fileModel.getId()) + .getForceRedactions() + .stream() + .anyMatch(manual -> manual.getRequestDate() + .isAfter(fileModel.getLastProcessed())) || manualRedactionProviderService.getManualRedactions(fileModel.getId()) + .getIdsToRemove() + .stream() + .anyMatch(manual -> manual.getRequestDate().isAfter(fileModel.getLastProcessed()))); + } + + private void addToOcrQueue(String dossierId, String fileId, int priority) { try { @@ -634,7 +667,8 @@ public class FileStatusService { } - private List convertAttributes(List fileAttributes, String dossierTemplateId) { + private List convertAttributes( + List fileAttributes, String dossierTemplateId) { List fileAttributeList = new ArrayList<>();