From b543952c4a3cd0b28cf127db250fa406cd8c5cc0 Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Wed, 20 Sep 2023 10:59:35 +0200 Subject: [PATCH] RED-6807: updated EntityCreationService and RedactionSearchUtility to combine... --- .../document/EntityCreationService.java | 18 ++++++++++++++++++ .../server/utils/RedactionSearchUtility.java | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityCreationService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityCreationService.java index cec16515..cff4eb6d 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityCreationService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityCreationService.java @@ -165,6 +165,24 @@ public class EntityCreationService { } + public Stream shortestBetweenAnyString(List starts, List stops, String type, EntityType entityType, SemanticNode node) { + + List startTextRanges = RedactionSearchUtility.findTextRangesByList(starts, node.getTextBlock()); + List stopTextRanges = RedactionSearchUtility.findTextRangesByList(stops, node.getTextBlock()); + + return betweenTextRanges(startTextRanges, stopTextRanges, type, entityType, node); + } + + + public Stream shortestBetweenAnyStringIgnoreCase(List starts, List stops, String type, EntityType entityType, SemanticNode node) { + + List startTextRanges = RedactionSearchUtility.findTextRangesByListIgnoreCase(starts, node.getTextBlock()); + List stopTextRanges = RedactionSearchUtility.findTextRangesByListIgnoreCase(stops, node.getTextBlock()); + + return betweenTextRanges(startTextRanges, stopTextRanges, type, entityType, node); + } + + public Stream betweenRegexes(String regexStart, String regexStop, String type, EntityType entityType, SemanticNode node) { TextBlock textBlock = node.getTextBlock(); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/utils/RedactionSearchUtility.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/utils/RedactionSearchUtility.java index ba82722e..1de288f8 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/utils/RedactionSearchUtility.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/utils/RedactionSearchUtility.java @@ -179,4 +179,22 @@ public class RedactionSearchUtility { return getTextRangesByPattern(textBlock, 0, pattern); } + public static List findTextRangesByList(List searchList, TextBlock textBlock) { + + List boundaries = new LinkedList<>(); + for (var searchString: searchList) { + boundaries.addAll(findTextRangesByString(searchString, textBlock)); + } + return boundaries; + } + + public static List findTextRangesByListIgnoreCase(List searchList, TextBlock textBlock) { + + List boundaries = new LinkedList<>(); + for (var searchString: searchList) { + boundaries.addAll(findTextRangesByStringIgnoreCase(searchString, textBlock)); + } + return boundaries; + } + }