From 48875174196f04bf02f5cbab5e46db5e841811b1 Mon Sep 17 00:00:00 2001 From: dashevchenko Date: Wed, 14 Feb 2024 11:33:13 +0200 Subject: [PATCH] refactoring: renamed StringUtils method --- .../server/common/data/StringUtils.java | 7 ++++- .../dao/sql/query/EntityKeyMapping.java | 4 +-- .../dao/sql/query/EntityKeyMappingTest.java | 26 +++++++++---------- .../rule/engine/profile/AlarmRuleState.java | 6 ++--- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/StringUtils.java b/common/data/src/main/java/org/thingsboard/server/common/data/StringUtils.java index 5e7566ea5f..232473348e 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/StringUtils.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/StringUtils.java @@ -20,6 +20,7 @@ import org.apache.commons.lang3.RandomStringUtils; import java.security.SecureRandom; import java.util.ArrayList; +import java.util.Arrays; import java.util.Base64; import java.util.List; import java.util.function.Function; @@ -158,6 +159,10 @@ public class StringUtils { } public static boolean equalsAny(String string, String... otherStrings) { + return equalsAny(string, Arrays.asList(otherStrings)); + } + + public static boolean equalsAny(String string, List otherStrings) { for (String otherString : otherStrings) { if (equals(string, otherString)) { return true; @@ -247,7 +252,7 @@ public class StringUtils { return string.substring(0, maxLength) + truncationMarkerFunc.apply(truncatedSymbols); } - public static List getListValuesWithoutQuote(String value) { + public static List splitByCommaWithoutQuotes(String value) { List splitValues = List.of(value.trim().split("\\s*,\\s*")); List result = new ArrayList<>(); char lastWayInputValue = '#'; diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java b/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java index 595f8ae3e8..b928e8790e 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityKeyMapping.java @@ -47,7 +47,7 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; -import static org.thingsboard.server.common.data.StringUtils.getListValuesWithoutQuote; +import static org.thingsboard.server.common.data.StringUtils.splitByCommaWithoutQuotes; @Data public class EntityKeyMapping { @@ -576,7 +576,7 @@ public class EntityKeyMapping { switch (stringFilterPredicate.getOperation()) { case IN: case NOT_IN: - ctx.addStringListParameter(paramName, getListValuesWithoutQuote(value)); + ctx.addStringListParameter(paramName, splitByCommaWithoutQuotes(value)); break; default: ctx.addStringParameter(paramName, value); diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityKeyMappingTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityKeyMappingTest.java index 7d6d23f248..2ccab3cf29 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityKeyMappingTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityKeyMappingTest.java @@ -24,7 +24,7 @@ import org.springframework.test.context.junit4.SpringRunner; import java.util.List; -import static org.thingsboard.server.common.data.StringUtils.getListValuesWithoutQuote; +import static org.thingsboard.server.common.data.StringUtils.splitByCommaWithoutQuotes; @RunWith(SpringRunner.class ) @SpringBootTest(classes = EntityKeyMapping.class) @@ -38,39 +38,39 @@ public class EntityKeyMappingTest { @Test public void testSplitToList() { String value = "device1, device2, device3"; - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); } @Test public void testReplaceSingleQuote() { String value = "'device1', 'device2', 'device3'"; - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); } @Test public void testReplaceDoubleQuote() { String value = "\"device1\", \"device2\", \"device3\""; - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); } @Test public void testSplitWithoutSpace() { String value = "\"device1\" , \"device2\" , \"device3\""; - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); } @Test public void testSaveSpacesBetweenString() { String value = "device 1 , device 2 , device 3"; List result = List.of("device 1", "device 2", "device 3"); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); } @Test public void testSaveQuoteInString() { String value = "device ''1 , device \"\"2 , device \"'3"; List result = List.of("device ''1", "device \"\"2", "device \"'3"); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); } @Test @@ -78,28 +78,28 @@ public class EntityKeyMappingTest { String value = "\"device1\", 'device2', \"device3\""; List result = List.of("\"device1\"", "'device2'", "\"device3\""); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); value = "'device1', \"device2\", \"device3\""; result = List.of("'device1'", "\"device2\"", "\"device3\""); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); value = "device1, 'device2', \"device3\""; result = List.of("device1", "'device2'", "\"device3\""); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); value = "'device1', device2, \"device3\""; result = List.of("'device1'", "device2", "\"device3\""); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); value = "device1, \"device2\", \"device3\""; result = List.of("device1", "\"device2\"", "\"device3\""); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); value = "\"device1\", device2, \"device3\""; result = List.of("\"device1\"", "device2", "\"device3\""); - Assert.assertEquals(getListValuesWithoutQuote(value), result); + Assert.assertEquals(splitByCommaWithoutQuotes(value), result); } } \ No newline at end of file diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/profile/AlarmRuleState.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/profile/AlarmRuleState.java index 028afa25ce..ada54ad26e 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/profile/AlarmRuleState.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/profile/AlarmRuleState.java @@ -51,7 +51,7 @@ import java.util.concurrent.TimeUnit; import java.util.function.Function; import static org.thingsboard.server.common.data.StringUtils.equalsAny; -import static org.thingsboard.server.common.data.StringUtils.getListValuesWithoutQuote; +import static org.thingsboard.server.common.data.StringUtils.splitByCommaWithoutQuotes; @Data @Slf4j @@ -471,9 +471,9 @@ class AlarmRuleState { case NOT_CONTAINS: return !val.contains(predicateValue); case IN: - return equalsAny(val, getListValuesWithoutQuote(predicateValue).toArray(new String[0])); + return equalsAny(val, splitByCommaWithoutQuotes(predicateValue)); case NOT_IN: - return !equalsAny(val, getListValuesWithoutQuote(predicateValue).toArray(new String[0])); + return !equalsAny(val, splitByCommaWithoutQuotes(predicateValue)); default: throw new RuntimeException("Operation not supported: " + predicate.getOperation()); }