dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #35937
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 18405: enable criteria optimized queries for OUController
------------------------------------------------------------
revno: 18405
committer: Morten Olav Hansen <mortenoh@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2015-02-25 14:31:03 +0700
message:
enable criteria optimized queries for OUController
modified:
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/AbstractCrudController.java
dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/organisationunit/OrganisationUnitController.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/AbstractCrudController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/AbstractCrudController.java 2015-02-25 06:53:42 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/AbstractCrudController.java 2015-02-25 07:31:03 +0000
@@ -759,7 +759,6 @@
protected List<T> getEntityList( WebMetaData metaData, WebOptions options, List<String> filters, List<Order> orders )
{
List<T> entityList;
-
Query query = queryService.getQueryFromUrl( getEntityClass(), filters, orders );
query.setDefaultOrder();
=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/organisationunit/OrganisationUnitController.java'
--- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/organisationunit/OrganisationUnitController.java 2015-02-20 09:14:02 +0000
+++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/webapi/controller/organisationunit/OrganisationUnitController.java 2015-02-25 07:31:03 +0000
@@ -31,13 +31,13 @@
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.google.common.collect.Lists;
-
import org.hisp.dhis.common.Pager;
import org.hisp.dhis.dxf2.common.TranslateOptions;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.organisationunit.OrganisationUnitService;
import org.hisp.dhis.organisationunit.comparator.OrganisationUnitByLevelComparator;
import org.hisp.dhis.query.Order;
+import org.hisp.dhis.query.Query;
import org.hisp.dhis.schema.descriptors.OrganisationUnitSchemaDescriptor;
import org.hisp.dhis.user.CurrentUserService;
import org.hisp.dhis.user.User;
@@ -55,7 +55,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -81,9 +80,12 @@
private CurrentUserService currentUserService;
@Override
+ @SuppressWarnings( "unchecked" )
protected List<OrganisationUnit> getEntityList( WebMetaData metaData, WebOptions options, List<String> filters, List<Order> orders )
{
List<OrganisationUnit> entityList;
+ Query query = queryService.getQueryFromUrl( getEntityClass(), filters, orders );
+ query.setDefaultOrder();
Integer level = options.getInt( "level" );
Integer maxLevel = options.getInt( "maxLevel" );
@@ -155,18 +157,20 @@
entityList = new ArrayList<>( manager.getAll( getEntityClass() ) );
Collections.sort( entityList, OrganisationUnitByLevelComparator.INSTANCE );
}
- else if ( options.hasPaging() )
+ else if ( options.hasPaging() && filters.isEmpty() )
{
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() ) );
+ query.setFirstResult( pager.getOffset() );
+ query.setMaxResults( pager.getPageSize() );
+ entityList = (List<OrganisationUnit>) queryService.query( query ).getItems();
}
else
{
- entityList = new ArrayList<>( manager.getAllSorted( getEntityClass() ) );
+ entityList = (List<OrganisationUnit>) queryService.query( query ).getItems();
}
return entityList;
@@ -318,7 +322,7 @@
if ( includeProperties )
{
Set<OrganisationUnit> roots = currentUserService.getCurrentUser().getDataViewOrganisationUnitsWithFallback();
-
+
generator.writeStringField( "code", organisationUnit.getCode() );
generator.writeStringField( "name", organisationUnit.getName() );
generator.writeStringField( "level", String.valueOf( organisationUnit.getLevel() ) );