=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramStageController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramStageController.java 2015-02-20 09:14:02 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/event/ProgramStageController.java 2015-07-03 04:08:33 +0000 @@ -34,6 +34,7 @@ import org.hisp.dhis.program.ProgramService; import org.hisp.dhis.program.ProgramStage; import org.hisp.dhis.query.Order; +import org.hisp.dhis.query.Query; import org.hisp.dhis.schema.descriptors.ProgramStageSchemaDescriptor; import org.hisp.dhis.webapi.controller.AbstractCrudController; import org.hisp.dhis.webapi.webdomain.WebMetaData; @@ -62,23 +63,18 @@ } @Override + @SuppressWarnings( "unchecked" ) protected List getEntityList( WebMetaData metaData, WebOptions options, List filters, List orders ) { List entityList = new ArrayList<>(); + 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() ) - { - int count = manager.getCount( getEntityClass() ); - - Pager pager = new Pager( options.getPage(), count, options.getPageSize() ); - metaData.setPager( pager ); - - entityList = new ArrayList<>( manager.getBetweenSorted( getEntityClass(), pager.getOffset(), pager.getPageSize() ) ); - } else if ( options.getOptions().containsKey( "program" ) ) { String programId = options.getOptions().get( "program" ); @@ -89,9 +85,20 @@ entityList = new ArrayList<>( program.getProgramStages() ); } } + else if ( options.hasPaging() && !haveFilters ) + { + int count = queryService.count( query ); + + Pager pager = new Pager( options.getPage(), count, options.getPageSize() ); + metaData.setPager( pager ); + + 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(); } return entityList;