=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericIdentifiableObjectStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericIdentifiableObjectStore.java 2015-10-08 14:12:50 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/GenericIdentifiableObjectStore.java 2015-10-12 09:16:42 +0000 @@ -185,6 +185,14 @@ int getCountLikeName( String name ); /** + * Retrieves a list of objects referenced by the given collection of ids. + * + * @param uids a collection of ids. + * @return a list of objects. + */ + List getById( Collection ids ); + + /** * Retrieves a list of objects referenced by the given collection of uids. * * @param uids a collection of uids. === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateIdentifiableObjectStore.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateIdentifiableObjectStore.java 2015-10-08 14:12:50 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/common/hibernate/HibernateIdentifiableObjectStore.java 2015-10-12 09:16:42 +0000 @@ -425,6 +425,18 @@ @Override @SuppressWarnings( "unchecked" ) + public List getById( Collection ids ) + { + if ( ids == null ||ids.isEmpty() ) + { + return new ArrayList<>(); + } + + return getSharingCriteria().add( Restrictions.in( "id", ids ) ).list(); + } + + @Override + @SuppressWarnings( "unchecked" ) public List getByUid( Collection uids ) { if ( uids == null || uids.isEmpty() ) === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java 2015-10-08 14:29:41 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/organisationunit/DefaultOrganisationUnitService.java 2015-10-12 09:16:42 +0000 @@ -197,18 +197,9 @@ } @Override - public List getOrganisationUnits( final Collection identifiers ) + public List getOrganisationUnits( Collection identifiers ) { - List objects = getAllOrganisationUnits(); - - return identifiers == null ? objects : FilterUtils.filter( objects, new Filter() - { - @Override - public boolean retain( OrganisationUnit object ) - { - return identifiers.contains( object.getId() ); - } - } ); + return i18n( i18nService, organisationUnitStore.getById( identifiers ) ); } @Override === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java 2015-10-03 11:09:07 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java 2015-10-12 09:16:42 +0000 @@ -34,6 +34,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import org.hisp.dhis.completeness.DataSetCompletenessResult; @@ -49,6 +50,7 @@ import org.hisp.dhis.period.PeriodService; import org.springframework.transaction.annotation.Transactional; +import com.google.common.collect.Maps; import com.google.common.collect.Sets; /** @@ -168,10 +170,12 @@ periodService.getPeriodsBetweenDates( dataSet.getPeriodType(), period.getStartDate(), period.getEndDate() ) ); final List results = new ArrayList<>(); - + + final Map orgUnits = Maps.uniqueIndex( organisationUnitService.getOrganisationUnits( organisationUnitIds ), OrganisationUnit::getId ); + for ( final Integer unitId : organisationUnitIds ) { - final OrganisationUnit unit = organisationUnitService.getOrganisationUnit( unitId ); + final OrganisationUnit unit = orgUnits.get( unitId ); final Set children = organisationUnitService.getOrganisationUnitHierarchy().getChildren( unit.getId() );