=== modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java' --- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java 2014-03-18 16:11:21 +0000 +++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/DefaultTrackedEntityInstanceService.java 2014-03-19 11:22:26 +0000 @@ -140,6 +140,10 @@ // Implementation methods // ------------------------------------------------------------------------- + //TODO queries with multiple words + //TODO case sensitivity + //TODO lower index on attribute value? + @Override public Grid getTrackedEntityInstances( TrackedEntityInstanceQueryParams params ) { === modified file 'dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java' --- dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2014-03-18 16:11:21 +0000 +++ dhis-2/dhis-services/dhis-service-tracker/src/main/java/org/hisp/dhis/trackedentity/hibernate/HibernateTrackedEntityInstanceStore.java 2014-03-19 11:22:26 +0000 @@ -51,6 +51,7 @@ import java.util.List; import java.util.Map; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.Criteria; @@ -169,7 +170,9 @@ if ( !params.isOrQuery() && item.hasFilter() ) { - sql += "and " + col + ".value " + item.getSqlOperator() + " " + item.getSqlFilter( filter ) + " "; + String queryCol = item.isNumeric() ? ( col + ".value" ) : "lower(" + col + ".value)"; + + sql += "and " + queryCol + item.getSqlOperator() + " " + StringUtils.lowerCase( item.getSqlFilter( filter ) ) + " "; } } @@ -216,7 +219,7 @@ String col = statementBuilder.columnQuote( item.getItemId() ); String query = statementBuilder.encode( params.getQuery(), false ); - sql += col + ".value = '" + query + "' or "; + sql += "lower(" + col + ".value) = '" + StringUtils.lowerCase( query ) + "' or "; } sql = sql.substring( 0, sql.length() - 3 ) + ") "; // Remove last or