I can do something cheap like
private Condition searchfilter(TreeSet<String> querytags) {
String[] thetags = querytags.toArray(new String[] {});
Condition condition = null;
for (int i = 0; i < thetags.length; i++) {
String query = thetags[i].trim();
Integer querynum = null;
try {
querynum = Integer.valueOf(query);
} catch (NumberFormatException e) {
}
if (i == 0) {
condition =
Ordermain.ORDERMAIN.HIDDENKEY.equal(Ordermain.ORDERMAIN.HIDDENKEY).and(Ordermain.ORDERMAIN.HIDDENKEY.contains(querynum).or(Ordermain.ORDERMAIN.ORDERTYPE.contains(query)).or(Ordermain.ORDERMAIN.CONTACTNAME.contains(query)).or(Ordermain.ORDERMAIN.ECLIPSEACCOUNTNUMBER.contains(querynum)).or(Ordermain.ORDERMAIN.PHONE.contains(query)).or(Ordermain.ORDERMAIN.COMPANY.contains(query)).or(Ordermain.ORDERMAIN.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.FAX.contains(query)).or(Ordermain.ORDERMAIN.EMPLOYEEID.contains(query)).or(Employees.EMPLOYEES.FIRSTNAME.contains(query)).or(Employees.EMPLOYEES.LASTNAME.contains(query)).or(Employees.EMPLOYEES.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.ORDERNUMBER.contains(query)).or(Ordermain.ORDERMAIN.CUSTOMERPO.contains(query)).or(Ordermain.ORDERMAIN.NEXTACTION.contains(query)).or(Ordermain.ORDERMAIN.SEARCHTAGS.contains(query)).or(Ordermain.ORDERMAIN.ORDERSTATUS.contains(query)));
} else {
condition =
condition.and(Ordermain.ORDERMAIN.HIDDENKEY.contains(querynum).or(Ordermain.ORDERMAIN.ORDERTYPE.contains(query)).or(Ordermain.ORDERMAIN.CONTACTNAME.contains(query)).or(Ordermain.ORDERMAIN.ECLIPSEACCOUNTNUMBER.contains(querynum)).or(Ordermain.ORDERMAIN.PHONE.contains(query)).or(Ordermain.ORDERMAIN.COMPANY.contains(query)).or(Ordermain.ORDERMAIN.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.FAX.contains(query)).or(Ordermain.ORDERMAIN.EMPLOYEEID.contains(query)).or(Employees.EMPLOYEES.FIRSTNAME.contains(query)).or(Employees.EMPLOYEES.LASTNAME.contains(query)).or(Employees.EMPLOYEES.EMAIL.contains(query)).or(Ordermain.ORDERMAIN.ORDERNUMBER.contains(query)).or(Ordermain.ORDERMAIN.CUSTOMERPO.contains(query)).or(Ordermain.ORDERMAIN.NEXTACTION.contains(query)).or(Ordermain.ORDERMAIN.SEARCHTAGS.contains(query)).or(Ordermain.ORDERMAIN.ORDERSTATUS.contains(query)));
}
}
return condition;
}
i got a extra
Ordermain.ORDERMAIN.HIDDENKEY.equal(Ordermain.ORDERMAIN.HIDDENKEY).and
but that is the only way i can group the rest into one clause