From ec8d3183dc119e3eddd45a653ca88a2666073f51 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Thu, 9 Jun 2022 09:26:00 +0300 Subject: [PATCH] RED-3791 - redaction log merge of duplicate annotations --- .../service/RedactionLogMergeService.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java index c8b6b4dc..34d6c872 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java @@ -76,10 +76,17 @@ public class RedactionLogMergeService { Set excludedPages, List types, Colors colors) { var skippedImportedRedactions = new HashSet<>(); - + var validSourceIds = new HashSet<>(); log.info("Merging Redaction log with manual redactions"); if (manualRedactions != null) { + // entries that have been added to dictionaries + validSourceIds.addAll(manualRedactions.getEntriesToAdd().stream() + .filter(entry -> entry.getSourceId() != null) + .filter(entry -> entry.isAddToDictionary() || entry.isAddToDossierDictionary()) + .filter(entry -> entry.getStatus() == AnnotationStatus.APPROVED) + .filter(entry -> entry.getProcessedDate() != null) + .map(ManualRedactionEntry::getSourceId).collect(Collectors.toList())); var manualRedactionLogEntries = addManualAddEntries(sectionGrid, manualRedactions.getEntriesToAdd(), manualRedactions.getComments(), colors, types); @@ -112,6 +119,11 @@ public class RedactionLogMergeService { Set processedIds = new HashSet<>(); redactionLog.getRedactionLogEntry().removeIf(entry -> { + + if(validSourceIds.contains(entry.getId())){ + return true; + } + if (entry.getImportedRedactionIntersections() != null) { entry.getImportedRedactionIntersections().removeAll(skippedImportedRedactions); if (!entry.getImportedRedactionIntersections().isEmpty() && (!entry.isImage() || entry.isImage() && !(entry.getType().equals("image") || entry.getType().equals("ocr")))) {