Criterios de filtro Groovy en findAll en una lista
Intento construir filtros dinámicos usando findAll en una lista. Tengo una variable que debe incluirse en el filtro solo si no es nula.
@Test
void testSample(){
def list = [ new Employee(age:22, isManager:false),
new Employee(age:23, isManager:true),
new Employee(age:22, isManager:true) ] as Set
def var = 22;
String query1 = "it.age == var && it.isManager == true "
String query2 = "it.isManager == true"
println list
println list.findAll { var ? query1 : query2 } // Should give 1 record age = 22 and manager
var = null;
println list.findAll { var ? query1 : query2 } // should give 2 records-only manager
}
Ambos dando todos los récords. ¿Hay alguna forma de lograr esto en una condición sin necesidad de escribir múltiples consultas?
Buscando algunos como a continuación (esto no funciona aunque)
println list.findAll{
if(var) it.age == var &&
it.isManager == true
}