[New] added listContains predicate
This commit is contained in:
parent
7677d27442
commit
1f780374b9
|
@ -51,6 +51,10 @@ public interface ExpressionBuilder<T extends StrolchRootElement> {
|
|||
default SearchExpression<T> contains(Object right) {
|
||||
return element -> PredicatesSupport.contains(right).matches(extract(element));
|
||||
}
|
||||
|
||||
default SearchExpression<T> listContains(Object right) {
|
||||
return element -> PredicatesSupport.listContains(right).matches(extract(element));
|
||||
}
|
||||
|
||||
default SearchExpression<T> containsIgnoreCase(Object right) {
|
||||
return element -> PredicatesSupport.containsIgnoreCase(right).matches(extract(element));
|
||||
|
|
|
@ -43,6 +43,10 @@ public class PredicatesSupport {
|
|||
public static SearchPredicate contains(Object right) {
|
||||
return new ContainsPredicate(right, false);
|
||||
}
|
||||
|
||||
public static SearchPredicate listContains(Object right) {
|
||||
return new ListContainsPredicate(right, false);
|
||||
}
|
||||
|
||||
public static SearchPredicate containsIgnoreCase(Object right) {
|
||||
return new ContainsPredicate(right, true);
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package li.strolch.search.predicates;
|
||||
|
||||
import li.strolch.utils.ObjectHelper;
|
||||
|
||||
/**
|
||||
* Implements the contains predicate, delegating to {@link ObjectHelper#isIn(Object, Object, boolean)}
|
||||
*/
|
||||
public class ListContainsPredicate extends AbstractSearchPredicate {
|
||||
private boolean ignoreCase;
|
||||
|
||||
public ListContainsPredicate(Object right, boolean ignoreCase) {
|
||||
super(right);
|
||||
this.ignoreCase = ignoreCase;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matches(Object left) {
|
||||
return ObjectHelper.isIn(this.right, left, this.ignoreCase);
|
||||
}
|
||||
}
|
|
@ -407,6 +407,10 @@ public class StrolchSearchTest {
|
|||
.and(param(BAG_ID, PARAM_LIST_STRING_ID, isIn(asList("Hello", "World"))))
|
||||
.and(param(BAG_ID, PARAM_LIST_STRING_ID, isIn(asList("Hello", "World", "Extra"))))
|
||||
.and(param(BAG_ID, PARAM_LIST_STRING_ID, isIn(asList("Extra", "Sauce")).not()))
|
||||
.and(param(BAG_ID, PARAM_LIST_STRING_ID, listContains("Hello")))
|
||||
.and(param(BAG_ID, PARAM_LIST_STRING_ID, listContains("Hello1")).not())
|
||||
.and(param(BAG_ID, PARAM_LIST_STRING_ID, listContains("World")))
|
||||
.and(param(BAG_ID, PARAM_LIST_STRING_ID, listContains("World1")).not())
|
||||
|
||||
.and(paramNull(BAG_ID, "non-existant"))
|
||||
//
|
||||
|
|
Loading…
Reference in New Issue