From e23ed69e04aa0507eee022cd590a51422a1b09d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Thu, 7 Jan 2021 16:20:51 +0100 Subject: [PATCH] Avoid IndexOutOfBoundsException if dictionary entry has blank at end --- .../v1/server/redaction/utils/EntitySearchUtils.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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 5206eecc..a493231d 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 @@ -29,15 +29,17 @@ public class EntitySearchUtils { for (String value : values) { - if (value.trim().length() <= 2) { + String cleanValue = value.trim(); + + if (cleanValue.length() <= 2) { continue; } int startIndex; int stopIndex = 0; do { - startIndex = inputString.indexOf(value, stopIndex); - stopIndex = startIndex + value.length(); + startIndex = inputString.indexOf(cleanValue, stopIndex); + stopIndex = startIndex + cleanValue.length(); if (startIndex > -1 && (startIndex == 0 || Character.isWhitespace(inputString.charAt(startIndex - 1)) || isSeparator(inputString .charAt(startIndex - 1))) && (stopIndex == inputString.length() || isSeparator(inputString.charAt(stopIndex)))) { @@ -70,7 +72,7 @@ public class EntitySearchUtils { .sorted(Comparator.comparing(Entity::getStart)) .collect(Collectors.toList()); Entity firstEntity = orderedEntities.get(0); - List positionSequences = text.getSequences(firstEntity.getWord(), dictionary.isCaseInsensitiveDictionary(firstEntity + List positionSequences = text.getSequences(firstEntity.getWord().trim(), dictionary.isCaseInsensitiveDictionary(firstEntity .getType()), firstEntity.getTargetSequences()); for (int i = 0; i <= orderedEntities.size() - 1; i++) {