From 817f1b7ae194191d227444f7a58f45d11691500b Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Thu, 21 Apr 2022 11:41:31 +0200 Subject: [PATCH] RED-3839: Bugfix with adding/removing manual redactions --- .../service/RedactionLogMergeService.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) 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 34e055ac..0d557362 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 @@ -54,8 +54,25 @@ public class RedactionLogMergeService { log.info("Merging Redaction log with manual redactions"); if (manualRedactions != null) { - Set idsToRemove = manualRedactions.getIdsToRemove().stream().map(BaseAnnotation::getAnnotationId).collect(Collectors.toSet()); - manualRedactions.getEntriesToAdd().removeIf(m -> idsToRemove.contains(m.getAnnotationId())); + Map idsToRemove = manualRedactions.getIdsToRemove() + .stream() + .collect(Collectors.toMap(BaseAnnotation::getAnnotationId, BaseAnnotation::getRequestDate)); + + List entriesToRemove = new ArrayList<>(); + Set removesToRemove = new HashSet<>(); + + manualRedactions.getEntriesToAdd().forEach(m -> { + if (idsToRemove.containsKey(m.getAnnotationId()) && idsToRemove.get(m.getAnnotationId()).isAfter(m.getRequestDate())) { + entriesToRemove.add(m); + } else if (idsToRemove.containsKey(m.getAnnotationId()) && idsToRemove.get(m.getAnnotationId()).isBefore(m.getRequestDate())) { + removesToRemove.add(m.getAnnotationId()); + } + }); + + log.debug("Will remove these manual redactions {}", entriesToRemove); + log.debug("Will remove these id removals {}", removesToRemove); + manualRedactions.getIdsToRemove().removeIf(r -> removesToRemove.contains(r.getAnnotationId())); + manualRedactions.getEntriesToAdd().removeAll(entriesToRemove); var manualRedactionLogEntries = addManualAddEntries(sectionGrid, manualRedactions.getEntriesToAdd(), manualRedactions.getComments(), colors, types);