=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramController.java 2015-07-02 07:05:55 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramController.java 2015-07-13 08:35:30 +0000 @@ -30,12 +30,12 @@ import com.google.common.collect.Lists; import org.hisp.dhis.common.Pager; -import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.program.Program; import org.hisp.dhis.program.ProgramInstance; import org.hisp.dhis.program.ProgramInstanceService; import org.hisp.dhis.program.ProgramService; import org.hisp.dhis.query.Order; +import org.hisp.dhis.query.Query; import org.hisp.dhis.schema.descriptors.ProgramSchemaDescriptor; import org.hisp.dhis.webapi.controller.AbstractCrudController; import org.hisp.dhis.webapi.webdomain.WebMetaData; @@ -43,11 +43,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import org.hisp.dhis.program.ProgramType; -import java.util.ArrayList; import java.util.Date; -import java.util.Iterator; import java.util.List; /** @@ -80,84 +77,41 @@ } @Override + @SuppressWarnings( "unchecked" ) protected List getEntityList( WebMetaData metaData, WebOptions options, List filters, List orders ) { - String type = options.getOptions().get( "type" ); - String orgUnit = options.getOptions().get( "orgUnit" ); Boolean userFilter = Boolean.parseBoolean( options.getOptions().get( "userFilter" ) ); List entityList; - - if ( type != null || orgUnit != null || userFilter ) - { - options.getOptions().put( "paging", "false" ); - } + boolean haveFilters = !filters.isEmpty(); + Query query = queryService.getQueryFromUrl( getEntityClass(), filters, orders ); + query.setDefaultOrder(); if ( options.getOptions().containsKey( "query" ) ) { entityList = Lists.newArrayList( manager.filter( getEntityClass(), options.getOptions().get( "query" ) ) ); } - else if ( options.hasPaging() ) + else if ( options.hasPaging() && !haveFilters ) { - int count = manager.getCount( getEntityClass() ); + int count = queryService.count( query ); Pager pager = new Pager( options.getPage(), count, options.getPageSize() ); metaData.setPager( pager ); - entityList = new ArrayList<>( manager.getBetweenSorted( getEntityClass(), pager.getOffset(), pager.getPageSize() ) ); + query.setFirstResult( pager.getOffset() ); + query.setMaxResults( pager.getPageSize() ); + entityList = (List) queryService.query( query ).getItems(); } else { - entityList = new ArrayList<>( manager.getAllSorted( getEntityClass() ) ); + entityList = (List) queryService.query( query ).getItems(); } if ( userFilter ) { List programs = Lists.newArrayList( programService.getProgramsByCurrentUser() ); entityList.retainAll( programs ); - } - - if ( type != null ) - { - try - { - ProgramType programType = ProgramType.fromValue( type ); - - Iterator iterator = entityList.iterator(); - - while ( iterator.hasNext() ) - { - Program program = iterator.next(); - - if ( program.getProgramType() != programType ) - { - iterator.remove(); - } - } - } - catch ( NumberFormatException ignored ) - { - } - } - - if ( orgUnit != null ) - { - OrganisationUnit organisationUnit = manager.get( OrganisationUnit.class, orgUnit ); - - if ( organisationUnit != null ) - { - Iterator iterator = entityList.iterator(); - - while ( iterator.hasNext() ) - { - Program program = iterator.next(); - - if ( !program.getOrganisationUnits().contains( organisationUnit ) ) - { - iterator.remove(); - } - } - } + metaData.setPager( null ); } return entityList;