diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java index 6abf510e..7d88cfa5 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/AnalyzeService.java @@ -5,6 +5,9 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; import org.springframework.stereotype.Service; @@ -229,6 +232,8 @@ public class AnalyzeService { notFoundManualRedactionEntries, getComments(analyzeRequest)); + newRedactionLogEntries = newRedactionLogEntries.stream().filter(distinctByKey(RedactionLogEntry::getId)).collect(Collectors.toList()); + var importedRedactionFilteredEntries = importedRedactionService.processImportedRedactions(analyzeRequest.getDossierTemplateId(), analyzeRequest.getDossierId(), analyzeRequest.getFileId(), @@ -382,6 +387,8 @@ public class AnalyzeService { notFoundManualRedactionEntries, getComments(analyzeRequest)); + redactionLogEntries = redactionLogEntries.stream().filter(distinctByKey(RedactionLogEntry::getId)).collect(Collectors.toList()); + List legalBasis = legalBasisClient.getLegalBasisMapping(analyzeRequest.getDossierTemplateId()); RedactionLog redactionLog = new RedactionLog(redactionServiceSettings.getAnalysisVersion(), analyzeRequest.getAnalysisNumber(), @@ -401,6 +408,12 @@ public class AnalyzeService { return redactionLog; } + private Predicate distinctByKey(Function keyExtractor) { + + Set seen = ConcurrentHashMap.newKeySet(); + return t -> seen.add(keyExtractor.apply(t)); + } + private static Map> getComments(AnalyzeRequest analyzeRequest) {