Groovy filter criteria on findAll on a list

Try with Closures rather than Strings describing what you want to do:

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;
Closure query1 = { it.age == var && it.isManager == true }
Closure 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

Edit

Do you mean:

println list.findAll{ ( var ? it.age == var : true ) && it.isManager == true }

Or better:

println list.findAll{ ( var != null ? it.age == var : true ) && it.isManager == true }

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)