Add criteria operator NOT_EQUALS_OR_IS_NULL

This commit is contained in:
2023-05-12 14:50:00 -05:00
parent 815bd8b0ce
commit 14fc7b0ba8
5 changed files with 48 additions and 0 deletions

View File

@ -30,6 +30,7 @@ public enum QCriteriaOperator
{
EQUALS,
NOT_EQUALS,
NOT_EQUALS_OR_IS_NULL,
IN,
NOT_IN,
IS_NULL_OR_IN,

View File

@ -131,6 +131,7 @@ public class BackendQueryFilterUtils
{
case EQUALS -> testEquals(criterion, value);
case NOT_EQUALS -> !testEquals(criterion, value);
case NOT_EQUALS_OR_IS_NULL -> !testEquals(criterion, value) || testBlank(criterion, value);
case IN -> testIn(criterion, value);
case NOT_IN -> !testIn(criterion, value);
case IS_BLANK -> testBlank(criterion, value);

View File

@ -113,6 +113,13 @@ class BackendQueryFilterUtilsTest
assertFalse(BackendQueryFilterUtils.doesCriteriaMatch(new QFilterCriteria("f", QCriteriaOperator.NOT_IN, "A", "B"), "f", "B"));
assertTrue(BackendQueryFilterUtils.doesCriteriaMatch(new QFilterCriteria("f", QCriteriaOperator.NOT_IN, List.of()), "f", "A"));
assertTrue(BackendQueryFilterUtils.doesCriteriaMatch(new QFilterCriteria("f", QCriteriaOperator.NOT_IN, ListBuilder.of(null)), "f", "A"));
///////////////////////////
// NOT_EQUALS_OR_IS_NULL //
///////////////////////////
assertFalse(BackendQueryFilterUtils.doesCriteriaMatch(new QFilterCriteria("f", QCriteriaOperator.NOT_EQUALS_OR_IS_NULL, "A"), "f", "A"));
assertTrue(BackendQueryFilterUtils.doesCriteriaMatch(new QFilterCriteria("f", QCriteriaOperator.NOT_EQUALS_OR_IS_NULL, "A"), "f", "B"));
assertTrue(BackendQueryFilterUtils.doesCriteriaMatch(new QFilterCriteria("f", QCriteriaOperator.NOT_EQUALS_OR_IS_NULL, "A"), "f", null));
}