From 164fc0ac8053cecb558468db5b76994cb956e9da Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Thu, 19 Apr 2018 12:21:48 +0200 Subject: [PATCH] [New] Added array as AND searching in contains*() --- .../li/strolch/search/StrolchSearchTest.java | 2 ++ .../java/li/strolch/utils/ObjectHelper.java | 36 +++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/li.strolch.agent/src/test/java/li/strolch/search/StrolchSearchTest.java b/li.strolch.agent/src/test/java/li/strolch/search/StrolchSearchTest.java index 9c0fc3ba9..e6d72d18b 100644 --- a/li.strolch.agent/src/test/java/li/strolch/search/StrolchSearchTest.java +++ b/li.strolch.agent/src/test/java/li/strolch/search/StrolchSearchTest.java @@ -365,7 +365,9 @@ public class StrolchSearchTest { .and(param(BAG_ID, PARAM_STRING_ID, isNotEqualTo("dfgdfg"))) .and(param(BAG_ID, PARAM_STRING_ID, isNotEqualToIgnoreCase("dfgdfg"))) .and(param(BAG_ID, PARAM_STRING_ID, contains("rol"))) + .and(param(BAG_ID, PARAM_STRING_ID, contains(new String[] { "Str", "rol" }))) .and(param(BAG_ID, PARAM_STRING_ID, containsIgnoreCase("ROL"))) + .and(param(BAG_ID, PARAM_STRING_ID, containsIgnoreCase(new String[] { "STR", "ROL" }))) .and(param(BAG_ID, PARAM_STRING_ID, startsWith("Str"))) .and(param(BAG_ID, PARAM_STRING_ID, startsWithIgnoreCase("str"))) .and(param(BAG_ID, PARAM_STRING_ID, endsWith("lch"))) diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/ObjectHelper.java b/li.strolch.utils/src/main/java/li/strolch/utils/ObjectHelper.java index 2acdfca2c..e98d4c62b 100644 --- a/li.strolch.utils/src/main/java/li/strolch/utils/ObjectHelper.java +++ b/li.strolch.utils/src/main/java/li/strolch/utils/ObjectHelper.java @@ -60,14 +60,38 @@ public class ObjectHelper { return collection.contains(right); } - if (left instanceof String && right instanceof String) { + if (left instanceof String) { String str = (String) left; - String subStr = (String) right; - if (ignoreCase) - return str.toLowerCase().contains(subStr.toLowerCase()); - else - return str.contains(subStr); + if (right instanceof String[]) { + String[] arr = (String[]) right; + + if (ignoreCase) { + str = str.toLowerCase(); + for (String s : arr) { + if (!str.contains(s.toLowerCase())) + return false; + } + + return true; + + } else { + for (String s : arr) { + if (!str.contains(s)) + return false; + } + + return true; + } + + } else if (right instanceof String) { + String subStr = (String) right; + + if (ignoreCase) + return str.toLowerCase().contains(subStr.toLowerCase()); + else + return str.contains(subStr); + } } throw new IllegalArgumentException("Unhandled type combination " + left.getClass() + " / " + right.getClass());