Groovige Filterkriterien bei findAll in einer Liste
Ich versuche, dynamische Filter mit findAll auf einer Liste zu erstellen. Ich habe eine Variable, die nur dann in den Filter aufgenommen werden muss, wenn sie nicht null ist.
@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
}
Beide geben alle Aufzeichnungen ab. Gibt es überhaupt eine Möglichkeit, dies unter einer Bedingung zu erreichen, ohne mehrere Abfragen schreiben zu müssen?
Sieht wie folgt aus (funktioniert aber nicht)
println list.findAll{
if(var) it.age == var &&
it.isManager == true
}