From 55153d0a096e8779cc4630e17452dae3df2a85d2 Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Thu, 21 Sep 2023 14:55:21 +0200 Subject: [PATCH] RED-6835: clean incoming strings --- .../ManualRedactionMapper.java | 4 +- .../StringCleaningUtility.java | 40 ++++++++++++++ .../tests/StringCleaningUtilityTest.java | 53 +++++++++++++++++++ 3 files changed, 95 insertions(+), 2 deletions(-) create mode 100644 persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/StringCleaningUtility.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java index 38e65e111..a92b200f6 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/ManualRedactionMapper.java @@ -53,7 +53,7 @@ public class ManualRedactionMapper { public AddRedactionRequest toAddRedactionRequest(String dossierId, String dossierTemplateId, AddRedactionRequestModel addRedactionRequest) { return AddRedactionRequest.builder() - .value(addRedactionRequest.getValue()) + .value(StringCleaningUtility.cleanString(addRedactionRequest.getValue())) .legalBasis(addRedactionRequest.getLegalBasis()) .user(KeycloakSecurity.getUserId()) .dossierTemplateTypeId(toTypeId(addRedactionRequest.getType(), dossierTemplateId)) @@ -172,7 +172,7 @@ public class ManualRedactionMapper { .user(KeycloakSecurity.getUserId()) .status(AnnotationStatus.APPROVED) .positions(resizeRedactionRequest.getPositions()) - .value(resizeRedactionRequest.getValue()) + .value(StringCleaningUtility.cleanString(resizeRedactionRequest.getValue())) .comment(resizeRedactionRequest.getComment()) .updateDictionary(resizeRedactionRequest.getUpdateDictionary()) .addToAllDossiers(resizeRedactionRequest.isAddToAllDossiers()) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/StringCleaningUtility.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/StringCleaningUtility.java new file mode 100644 index 000000000..f87b1b647 --- /dev/null +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/manualredactions/StringCleaningUtility.java @@ -0,0 +1,40 @@ +package com.iqser.red.service.persistence.management.v1.processor.service.manualredactions; + +import java.util.regex.Pattern; + +import lombok.experimental.UtilityClass; + +@UtilityClass +public class StringCleaningUtility { + + public static final Pattern hyphenLineBreaks = Pattern.compile("[-~‐‒⁻−﹣゠⁓‑\\u00AD][\\r\\n]+"); + public static final Pattern linebreaks = Pattern.compile("[\\r\\n]+"); + public static final Pattern doubleWhitespaces = Pattern.compile("\\s{2,}"); + + + public String cleanString(String value) { + + String noHyphenLinebreaks = removeHyphenLinebreaks(value); + String noLinebreaks = removeLinebreaks(noHyphenLinebreaks); + return removeMultipleWhitespaces(noLinebreaks); + } + + + private String removeHyphenLinebreaks(String value) { + + return hyphenLineBreaks.matcher(value).replaceAll(""); + } + + + private String removeMultipleWhitespaces(String value) { + + return doubleWhitespaces.matcher(value).replaceAll(" "); + } + + + private String removeLinebreaks(String value) { + + return linebreaks.matcher(value).replaceAll(" "); + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java new file mode 100644 index 000000000..1d4f13fd2 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/StringCleaningUtilityTest.java @@ -0,0 +1,53 @@ +package com.iqser.red.service.peristence.v1.server.integration.tests; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import com.iqser.red.service.persistence.management.v1.processor.service.manualredactions.StringCleaningUtility; + +public class StringCleaningUtilityTest { + + @Test + public void testRemoveLinebreaks() { + + String originalValue = "abc\ndef"; + assertEquals("abc def", StringCleaningUtility.cleanString(originalValue)); + + } + + + @Test + public void testRemoveHyphenLinebreaks() { + + String originalValue = "abc-\ndef"; + assertEquals("abcdef", StringCleaningUtility.cleanString(originalValue)); + + } + + + @Test + public void testDontRemoveHyphens() { + + String originalValue = "abc-def"; + assertEquals("abc-def", StringCleaningUtility.cleanString(originalValue)); + + } + + + @Test + public void testRemoveDoubleWhiteSpace() { + + String originalValue = "abc def"; + assertEquals("abc def", StringCleaningUtility.cleanString(originalValue)); + } + + + @Test + public void testAllAboveInOne() { + + String originalValue = "abc\n def, ghi-jkl\n\nmno-\npqr"; + assertEquals("abc def, ghi-jkl mnopqr", StringCleaningUtility.cleanString(originalValue)); + } + +} -- 2.47.2