From faa702d3f499b89dfd9a7dedf8c16af89128c77d Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Wed, 14 Dec 2022 15:27:23 +0100 Subject: [PATCH] RED-5249: Marked utils classes with @UtilityClass --- .../classification/utils/PositionUtils.java | 2 +- .../utils/RulingTextDirAdjustUtil.java | 2 +- .../redaction/utils/EntitySearchUtils.java | 25 ++++++++++++++----- .../v1/server/redaction/utils/IdBuilder.java | 8 +++--- .../redaction/utils/OffsetStringUtils.java | 2 +- .../v1/server/redaction/utils/Patterns.java | 6 ++--- .../redaction/utils/ResourceLoader.java | 6 ++--- .../redaction/utils/SeparatorUtils.java | 15 +++++++---- .../utils/TextNormalizationUtilities.java | 2 +- .../tableextraction/utils/QuickSort.java | 8 +++--- .../server/tableextraction/utils/Utils.java | 9 ++++--- .../redaction/utils/ResourceLoader.java | 2 +- 12 files changed, 53 insertions(+), 34 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/PositionUtils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/PositionUtils.java index 37316f2a..72a6a68e 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/PositionUtils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/PositionUtils.java @@ -7,7 +7,7 @@ import lombok.experimental.UtilityClass; @UtilityClass @SuppressWarnings("all") -public class PositionUtils { +public final class PositionUtils { // TODO This currently uses pdf coord system. In the futher this should use java coord system. // Note: DirAdj (TextDirection Adjusted) can not be user for this. diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/RulingTextDirAdjustUtil.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/RulingTextDirAdjustUtil.java index 3fe5a7f6..e7a6600e 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/RulingTextDirAdjustUtil.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/classification/utils/RulingTextDirAdjustUtil.java @@ -8,7 +8,7 @@ import com.iqser.red.service.redaction.v1.server.tableextraction.model.Ruling; import lombok.experimental.UtilityClass; @UtilityClass -public class RulingTextDirAdjustUtil { +public final class RulingTextDirAdjustUtil { /** * Converts a ruling (line of a table) the same way TextPositions are converted in PDFBox. 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 1446b19f..d7e70cac 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 @@ -1,20 +1,33 @@ package com.iqser.red.service.redaction.v1.server.redaction.utils; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; + import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; import com.iqser.red.service.redaction.v1.server.redaction.model.Dictionary; -import com.iqser.red.service.redaction.v1.server.redaction.model.*; +import com.iqser.red.service.redaction.v1.server.redaction.model.DictionaryModel; +import com.iqser.red.service.redaction.v1.server.redaction.model.Entity; +import com.iqser.red.service.redaction.v1.server.redaction.model.EntityPositionSequence; +import com.iqser.red.service.redaction.v1.server.redaction.model.EntityType; +import com.iqser.red.service.redaction.v1.server.redaction.model.Image; +import com.iqser.red.service.redaction.v1.server.redaction.model.SearchableText; import lombok.experimental.UtilityClass; import lombok.extern.slf4j.Slf4j; -import java.util.*; -import java.util.stream.Collectors; - @Slf4j @UtilityClass @SuppressWarnings("PMD") -public class EntitySearchUtils { +public final class EntitySearchUtils { public boolean sectionContainsAny(String sectionText, SearchImplementation searchImplementation) { @@ -26,7 +39,7 @@ public class EntitySearchUtils { Set falsePositives = find(inputString, type.getFalsePositiveSearch(), details.withEntityType(EntityType.FALSE_POSITIVE)); markFalsePositives(found, falsePositives); - found.removeIf(f -> f.isFalsePositive()); + found.removeIf(Entity::isFalsePositive); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/IdBuilder.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/IdBuilder.java index e13b6fb5..13ed4f39 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/IdBuilder.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/IdBuilder.java @@ -1,5 +1,8 @@ package com.iqser.red.service.redaction.v1.server.redaction.utils; +import java.nio.charset.StandardCharsets; +import java.util.List; + import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; import com.iqser.red.service.redaction.v1.server.parsing.model.TextPositionSequence; @@ -7,11 +10,8 @@ import com.iqser.red.service.redaction.v1.server.redaction.model.RedRectangle2D; import lombok.experimental.UtilityClass; -import java.nio.charset.StandardCharsets; -import java.util.List; - @UtilityClass -public class IdBuilder { +public final class IdBuilder { private final HashFunction hashFunction = Hashing.murmur3_128(); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/OffsetStringUtils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/OffsetStringUtils.java index 3154624b..4d24f31d 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/OffsetStringUtils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/OffsetStringUtils.java @@ -10,7 +10,7 @@ import com.iqser.red.service.redaction.v1.server.redaction.model.OffsetString; import lombok.experimental.UtilityClass; @UtilityClass -public class OffsetStringUtils { +public final class OffsetStringUtils { /** * Same logic as in StringUtils.redactBetween, but returns a list of object with offsets insteadof on the Strings only. diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/Patterns.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/Patterns.java index 0168adec..c967a4ba 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/Patterns.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/Patterns.java @@ -1,13 +1,13 @@ package com.iqser.red.service.redaction.v1.server.redaction.utils; -import lombok.experimental.UtilityClass; - import java.util.HashMap; import java.util.Map; import java.util.regex.Pattern; +import lombok.experimental.UtilityClass; + @UtilityClass -public class Patterns { +public final class Patterns { public static Map patternCache = new HashMap<>(); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java index accd2f30..2f8f4d28 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java @@ -1,7 +1,5 @@ package com.iqser.red.service.redaction.v1.server.redaction.utils; -import lombok.experimental.UtilityClass; - import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; @@ -10,8 +8,10 @@ import java.nio.charset.StandardCharsets; import java.util.Set; import java.util.stream.Collectors; +import lombok.experimental.UtilityClass; + @UtilityClass -public class ResourceLoader { +public final class ResourceLoader { public Set load(String classpathPath) { diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/SeparatorUtils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/SeparatorUtils.java index abde8b05..6cc53971 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/SeparatorUtils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/SeparatorUtils.java @@ -1,24 +1,29 @@ package com.iqser.red.service.redaction.v1.server.redaction.utils; -import lombok.extern.slf4j.Slf4j; - import java.util.Set; import java.util.regex.Pattern; +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; + @Slf4j -public class SeparatorUtils { +@UtilityClass +public final class SeparatorUtils { private final static Pattern punctuationPattern = Pattern.compile("\\p{Punct}"); - private final static Set quotes = Set.of('\'', '\u0022', '\u00AB', '\u00BB', '\u2018', '\u2019', '\u201A', '\u201C', '\u201D', '\u201E' - , '\u2039', '\u203A'); + private final static Set quotes = Set.of('\'', '\u0022', '\u00AB', '\u00BB', '\u2018', '\u2019', '\u201A', '\u201C', '\u201D', '\u201E', '\u2039', '\u203A'); private final static Set japaneseAltPunctuationMarks = Set.of(65288, 65289, 65294, 65339, 65341, 65371, 65373, 65375, 65376, 12443, 12444, 65309, 65306); + public static boolean isSeparator(char c) { + return Character.isWhitespace(c) || punctuationPattern.matcher(String.valueOf(c)).matches() || quotes.contains(c) || isJapaneseSeparator(c); } + public static boolean isJapaneseSeparator(char c) { + var intValue = (int) c; return intValue >= 12288 && intValue <= 12336 || japaneseAltPunctuationMarks.contains(intValue); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/TextNormalizationUtilities.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/TextNormalizationUtilities.java index dba3f273..c1fbc231 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/TextNormalizationUtilities.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/utils/TextNormalizationUtilities.java @@ -3,7 +3,7 @@ package com.iqser.red.service.redaction.v1.server.redaction.utils; import lombok.experimental.UtilityClass; @UtilityClass -public class TextNormalizationUtilities { +public final class TextNormalizationUtilities { /** * Revert hyphenation due to line breaks. diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/QuickSort.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/QuickSort.java index a0fc8e0e..a59c7abd 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/QuickSort.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/QuickSort.java @@ -5,9 +5,12 @@ import java.util.Comparator; import java.util.Deque; import java.util.List; +import lombok.experimental.UtilityClass; + /** * Copied and minimal modified from PDFBox. */ +@UtilityClass public final class QuickSort { private static final Comparator OBJCOMP = new Comparator() { @@ -19,11 +22,6 @@ public final class QuickSort { }; - private QuickSort() { - - } - - /** * Sorts the given list using the given comparator. * diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/Utils.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/Utils.java index 2a95ec3b..6ede2b91 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/Utils.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/tableextraction/utils/Utils.java @@ -1,14 +1,16 @@ package com.iqser.red.service.redaction.v1.server.tableextraction.utils; -import lombok.extern.slf4j.Slf4j; - import java.math.BigDecimal; import java.util.Comparator; import java.util.List; +import lombok.experimental.UtilityClass; +import lombok.extern.slf4j.Slf4j; + @Slf4j +@UtilityClass @SuppressWarnings("all") -public class Utils { +public final class Utils { private final static float EPSILON = 0.1f; @@ -38,3 +40,4 @@ public class Utils { } } + diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java index 7cf3c7bd..db4c30c2 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/redaction/utils/ResourceLoader.java @@ -15,7 +15,7 @@ import org.apache.commons.io.IOUtils; import lombok.experimental.UtilityClass; @UtilityClass -public class ResourceLoader { +public final class ResourceLoader { public Map loadDictionaryFiles() {