From 0d353f99cd26fc82132957b67bac3c270c81dca6 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Fri, 25 Nov 2022 14:09:02 +0100 Subject: [PATCH] RSS-266: Allow duplicated entries with different types for scm --- .../redaction/v1/server/redaction/model/Entity.java | 2 ++ .../redaction/service/RedactionLogCreatorService.java | 8 ++++---- .../redaction/service/RedactionLogMergeService.java | 8 ++++---- .../v1/server/redaction/utils/EntitySearchUtils.java | 2 +- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java index e83694a2..04d35f11 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Entity.java @@ -18,6 +18,8 @@ import java.util.Set; public class Entity implements ReasonHolder { private String word; + + @EqualsAndHashCode.Include private String type; private boolean redaction; private boolean falsePositive; diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java index 2e64f2ff..482d2e66 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogCreatorService.java @@ -7,6 +7,7 @@ import java.util.Map; import java.util.Set; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.tuple.Pair; import org.springframework.stereotype.Service; import com.iqser.red.service.redaction.v1.model.Point; @@ -92,7 +93,7 @@ public class RedactionLogCreatorService { List redactionLogEntities = new ArrayList<>(); // Duplicates can exist due table extraction columns over multiple rows. - Set processedIds = new HashSet<>(); + Set> processedIds = new HashSet<>(); entityLoop: for (Entity entity : entities.get(page)) { @@ -100,12 +101,11 @@ public class RedactionLogCreatorService { for (EntityPositionSequence entityPositionSequence : entity.getPositionSequences()) { RedactionLogEntry redactionLogEntry = createRedactionLogEntry(entity, dossierTemplateId); - if (processedIds.contains(entityPositionSequence.getId())) { + if (processedIds.contains(Pair.of(entityPositionSequence.getId(), entity.getType()))) { - // TODO refactor this outer loop jump as soon as we have the time. continue entityLoop; } else { - processedIds.add(entityPositionSequence.getId()); + processedIds.add(Pair.of(entityPositionSequence.getId(), entity.getType())); } redactionLogEntry.setId(entityPositionSequence.getId()); 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 f1b1dabe..a254b18c 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 @@ -152,10 +152,10 @@ public class RedactionLogMergeService { return true; } } - if (processedIds.contains(entry.getId())) { - log.info("Duplicate annotation found with id {}", entry.getId()); - return true; - } +// if (processedIds.contains(entry.getId())) { +// log.info("Duplicate annotation found with id {}", entry.getId()); +// return true; +// } processedIds.add(entry.getId()); return false; }); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java index 364ce9a4..1d9b13c5 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/EntitySearchUtils.java @@ -286,7 +286,7 @@ public class EntitySearchUtils { existing.setRedaction(true); } } - } else if (dictionary.getDictionaryRank(existing.getType()) <= dictionary.getDictionaryRank(found.getType())) { + } else if (dictionary.getDictionaryRank(existing.getType()) < dictionary.getDictionaryRank(found.getType())) { entities.remove(found); entities.add(found); }