From eb0c57e9a6b84dd2ce16348f5958ce5cd3a1d326 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 7 Jul 2025 09:44:41 -0500 Subject: [PATCH] Add processing of subFilters to interpretValues --- .../actions/tables/query/QQueryFilter.java | 17 +++++++++++++++ .../core/actions/tables/QQueryFilterTest.java | 21 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java index 95137359..f652e799 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/tables/query/QQueryFilter.java @@ -659,6 +659,21 @@ public class QQueryFilter implements Serializable, Cloneable, QMetaDataObject } } + ////////////////////////////////////// + // recursively process sub filters! // + ////////////////////////////////////// + for(QQueryFilter subFilter : CollectionUtils.nonNullList(getSubFilters())) + { + try + { + subFilter.interpretValues(inputValues, useCase); + } + catch(Exception e) + { + caughtExceptions.add(e); + } + } + if(!caughtExceptions.isEmpty()) { String message = "Error interpreting filter values: " + StringUtils.joinWithCommasAndAnd(caughtExceptions.stream().map(e -> e.getMessage()).toList()); @@ -824,6 +839,7 @@ public class QQueryFilter implements Serializable, Cloneable, QMetaDataObject } + /******************************************************************************* ** Getter for subFilterSetOperator *******************************************************************************/ @@ -854,6 +870,7 @@ public class QQueryFilter implements Serializable, Cloneable, QMetaDataObject } + /*************************************************************************** ** ***************************************************************************/ diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QQueryFilterTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QQueryFilterTest.java index 2e64a870..14eb112e 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QQueryFilterTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/tables/QQueryFilterTest.java @@ -73,6 +73,27 @@ class QQueryFilterTest extends BaseTest + /******************************************************************************* + ** + *******************************************************************************/ + @Test + void testInterpretValuesSubFilter() throws QException + { + Map inputValues = new HashMap<>(); + inputValues.put("clientIdEquals1", "value"); + + AbstractFilterExpression expression = new FilterVariableExpression() + .withVariableName("clientIdEquals1"); + + QQueryFilter qQueryFilter = new QQueryFilter() + .withSubFilter(new QQueryFilter(new QFilterCriteria("id", EQUALS, expression))); + qQueryFilter.interpretValues(inputValues); + + assertEquals("value", qQueryFilter.getSubFilters().get(0).getCriteria().get(0).getValues().get(0)); + } + + + /******************************************************************************* ** *******************************************************************************/