Add processing of subFilters to interpretValues

This commit is contained in:
2025-07-07 09:44:41 -05:00
parent 4788faae7d
commit eb0c57e9a6
2 changed files with 38 additions and 0 deletions

View File

@ -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()) if(!caughtExceptions.isEmpty())
{ {
String message = "Error interpreting filter values: " + StringUtils.joinWithCommasAndAnd(caughtExceptions.stream().map(e -> e.getMessage()).toList()); 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 ** Getter for subFilterSetOperator
*******************************************************************************/ *******************************************************************************/
@ -854,6 +870,7 @@ public class QQueryFilter implements Serializable, Cloneable, QMetaDataObject
} }
/*************************************************************************** /***************************************************************************
** **
***************************************************************************/ ***************************************************************************/

View File

@ -73,6 +73,27 @@ class QQueryFilterTest extends BaseTest
/*******************************************************************************
**
*******************************************************************************/
@Test
void testInterpretValuesSubFilter() throws QException
{
Map<String, Serializable> inputValues = new HashMap<>();
inputValues.put("clientIdEquals1", "value");
AbstractFilterExpression<Serializable> 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));
}
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/