for(Column column : columns) {
Property property = engine.getConfiguration().getProperties().get(column.getPosition());
if(column.getSearch() instanceof TextSearch) {
TextSearch search = (TextSearch)column.getSearch();
if(search.getValue() != null) {
String critValue = search.getPattern().replace('*', '%').replaceAll("\\{search\\}", search.getValue());
if(log.isDebugEnabled())
log.debug("add text criterion for "+property.getName()+": "+critValue);
if(property.getAltName() == null) {
dynamicRestrictions.add(new Restriction("lower("+property.getName()+") like lower({0})", property.isGroup(), critValue));
} else {
dynamicRestrictions.add(new Restriction("(lower("+property.getName()+") like lower({0}) or ("+property.getName()+" is null and lower("+property.getAltName()+") like lower({0})))", property.isGroup(), critValue));
}
}
} else if(column.getSearch() instanceof EnumSearch) {
EnumSearch search = (EnumSearch)column.getSearch();
if(search.getValue() != null) {
dynamicRestrictions.add(new Restriction(property.getName()+" = {0}", property.isGroup(), search.getValue()));
}
} else if(column.getSearch() instanceof TextSelectSearch) {
TextSelectSearch search = (TextSelectSearch)column.getSearch();
if(search.isHql()) {
TextSelectSearch.Bean bean = search.getBeans().get(search.getValue());
if(bean.getHql() != null)
dynamicRestrictions.add(new Restriction(bean.getHql(), property.isGroup()));
} else {
if(search.getValue() != null) {
dynamicRestrictions.add(new Restriction(property.getName()+" = {0}", property.isGroup(), search.getValue()));
}
}
} else if(column.getSearch() instanceof ListSelectSearch) {
ListSelectSearch search = (ListSelectSearch)column.getSearch();
if(search.getValue() != null)
dynamicRestrictions.add(new Restriction(search.getSearchProperty()+" = {0}", property.isGroup(), search.getValue()));
} else if(column.getSearch() instanceof DateSearch) {
DateSearch search = (DateSearch)column.getSearch();
Date start = search.getValueStart();
Date end = search.getValueEnd();
if(end != null) {
Calendar cal = GregorianCalendar.getInstance();
cal.setTime(end);
cal.add(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.SECOND, -1);