mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Add processing of subFilters to interpretValues
This commit is contained in:
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
**
|
||||
***************************************************************************/
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
|
Reference in New Issue
Block a user