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);