RED-7708 - Remove duplicate entries in redaction log entry list #153

Closed
andrei.isvoran.ext wants to merge 2 commits from RED-7708 into master

View File

@ -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> legalBasis = legalBasisClient.getLegalBasisMapping(analyzeRequest.getDossierTemplateId());
RedactionLog redactionLog = new RedactionLog(redactionServiceSettings.getAnalysisVersion(),
analyzeRequest.getAnalysisNumber(),
@ -401,6 +408,12 @@ public class AnalyzeService {
return redactionLog;
}
private <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
Set<Object> seen = ConcurrentHashMap.newKeySet();
return t -> seen.add(keyExtractor.apply(t));
}
private static Map<String, List<Comment>> getComments(AnalyzeRequest analyzeRequest) {