From a49f67aa7dbea80838dbe1459d1f531160ac65fa Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 7 Jul 2022 16:02:38 +0200 Subject: [PATCH] RED-4497: Delete update dictionary resize redaction on remove --- .../ResizeRedactionPersistenceService.java | 5 +++++ .../repository/ResizeRedactionRepository.java | 2 ++ .../v1/server/service/ManualRedactionService.java | 12 ++++++++++++ 3 files changed, 19 insertions(+) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java index 6a2051592..b5f80c3a9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/ResizeRedactionPersistenceService.java @@ -91,4 +91,9 @@ public class ResizeRedactionPersistenceService { return resizeRedactionRepository.findByFileIdIncludeDeletions(fileId, includeDeletions); } + + public List findByAnnotationStatusAndValue(AnnotationStatus status, String value){ + return resizeRedactionRepository.findByStatusAndValue(status, value); + } + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ResizeRedactionRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ResizeRedactionRepository.java index 203a5a679..8d6fb4918 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ResizeRedactionRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ResizeRedactionRepository.java @@ -36,4 +36,6 @@ public interface ResizeRedactionRepository extends JpaRepository findByStatusAndValue(AnnotationStatus status, String value); + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java index c66ee90b2..0a02ecff5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java @@ -60,6 +60,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.annotations.Remove import com.iqser.red.service.persistence.service.v1.api.model.annotations.ResizeRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.ManualRedactionEntry; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.redaction.v1.model.AnalyzeRequest; import com.iqser.red.service.redaction.v1.model.MessageType; @@ -813,6 +814,17 @@ public class ManualRedactionService { addToDictionary(buildTypeId(redactionLogEntry, dossier), redactionLogEntry.getValue(), dossier.getId(), fileId, DictionaryEntryType.ENTRY); } else { removeFromDictionary(buildTypeId(redactionLogEntry, dossier), redactionLogEntry.getValue(), dossier.getId(), fileId, DictionaryEntryType.ENTRY); + + // This is needed to remove resizeRedactions with addToDictionary. + var resizeRedactionsWithSameValue = resizeRedactionPersistenceService.findByAnnotationStatusAndValue(AnnotationStatus.APPROVED, redactionLogEntry.getValue()); + resizeRedactionsWithSameValue.forEach(resizeRedaction -> { + var file = fileStatusPersistenceService.getStatus(resizeRedaction.getId().getFileId()); + var dossierForResizeRedaction = dossierPersistenceService.findByDossierId(file.getDossierId()); + if(!file.getWorkflowStatus().equals(WorkflowStatus.APPROVED) && dossier.getDossierTemplateId().equals(dossierForResizeRedaction.getDossierTemplateId())) { + resizeRedactionPersistenceService.hardDelete(resizeRedaction.getId() + .getFileId(), resizeRedaction.getId().getAnnotationId()); + } + }); } return true; }