=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessService.java 2012-04-06 20:02:26 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/completeness/DataSetCompletenessService.java 2012-11-21 13:04:45 +0000 @@ -28,6 +28,7 @@ */ import java.util.Collection; +import java.util.Set; import java.util.concurrent.Future; import org.hisp.dhis.dataset.DataSet; @@ -58,7 +59,7 @@ * @param organisationUnitId the identifier of the root OrganisationUnit. * @return a Collection of DataSetCompletenessResults. */ - Collection getDataSetCompleteness( int periodId, int organisationUnitId ); + Collection getDataSetCompleteness( int periodId, int organisationUnitId, Set groupIds ); /** * Returns a Collection of DataSetCompletenessResults. The @@ -76,7 +77,7 @@ * @return a Collection of DataSetCompletenessResults. */ Collection getDataSetCompleteness( int periodId, - Collection organisationUnitIds, int dataSetId ); + Collection organisationUnitIds, int dataSetId, Set groupIds ); /** * Delete all data set completeness registrations. === 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 2012-04-06 20:02:26 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/completeness/impl/AbstractDataSetCompletenessService.java 2012-11-21 13:04:45 +0000 @@ -34,6 +34,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; +import java.util.Set; import java.util.concurrent.Future; import org.amplecode.quick.BatchHandler; @@ -44,12 +45,13 @@ import org.hisp.dhis.completeness.DataSetCompletenessResult; import org.hisp.dhis.completeness.DataSetCompletenessService; import org.hisp.dhis.completeness.DataSetCompletenessStore; -import org.hisp.dhis.dataelement.DataElementService; import org.hisp.dhis.datamart.aggregation.cache.AggregationCache; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; import org.hisp.dhis.jdbc.batchhandler.DataSetCompletenessResultBatchHandler; import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; import org.hisp.dhis.organisationunit.OrganisationUnitHierarchy; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.period.Period; @@ -72,7 +74,7 @@ // Dependencies // ------------------------------------------------------------------------- - protected BatchHandlerFactory batchHandlerFactory; + private BatchHandlerFactory batchHandlerFactory; public void setBatchHandlerFactory( BatchHandlerFactory batchHandlerFactory ) { @@ -86,28 +88,28 @@ this.aggregationCache = aggregationCache; } - protected OrganisationUnitService organisationUnitService; + private OrganisationUnitService organisationUnitService; public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) { this.organisationUnitService = organisationUnitService; } - - protected DataSetService dataSetService; + + private OrganisationUnitGroupService organisationUnitGroupService; + + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) + { + this.organisationUnitGroupService = organisationUnitGroupService; + } + + private DataSetService dataSetService; public void setDataSetService( DataSetService dataSetService ) { this.dataSetService = dataSetService; } - protected DataElementService dataElementService; - - public void setDataElementService( DataElementService dataElementService ) - { - this.dataElementService = dataElementService; - } - - protected PeriodService periodService; + private PeriodService periodService; public void setPeriodService( PeriodService periodService ) { @@ -165,7 +167,7 @@ { Collection sources = hierarchy.getChildren( unit.getId() ); - Collection relevantSources = getRelevantSources( dataSet, sources ); + Collection relevantSources = getRelevantSources( dataSet, sources, null ); for ( final Period period : periods ) { @@ -194,9 +196,9 @@ return null; } - + @Transactional - public Collection getDataSetCompleteness( int periodId, int organisationUnitId ) + public Collection getDataSetCompleteness( int periodId, int organisationUnitId, Set groupIds ) { final Period period = periodService.getPeriod( periodId ); @@ -215,7 +217,7 @@ final Collection periodsBetweenDates = getIdentifiers( Period.class, periodService.getPeriodsBetweenDates( dataSet.getPeriodType(), period.getStartDate(), period.getEndDate() ) ); - final Collection relevantSources = getRelevantSources( dataSet, children ); + final Collection relevantSources = getRelevantSources( dataSet, children, groupIds ); final DataSetCompletenessResult result = new DataSetCompletenessResult(); @@ -240,7 +242,7 @@ @Transactional public Collection getDataSetCompleteness( int periodId, - Collection organisationUnitIds, int dataSetId ) + Collection organisationUnitIds, int dataSetId, Set groupIds ) { final DataSet dataSet = dataSetService.getDataSet( dataSetId ); @@ -260,7 +262,7 @@ final Collection children = organisationUnitService.getOrganisationUnitHierarchy().getChildren( unit.getId() ); - final Collection relevantSources = getRelevantSources( dataSet, children ); + final Collection relevantSources = getRelevantSources( dataSet, children, groupIds ); final DataSetCompletenessResult result = getDataSetCompleteness( period, periodsBetweenDates, days, unit, relevantSources, dataSet ); @@ -322,11 +324,21 @@ } @SuppressWarnings( "unchecked" ) - private Collection getRelevantSources( DataSet dataSet, Collection sources ) + private Collection getRelevantSources( DataSet dataSet, Collection sources, Set groupIds ) { Collection dataSetSources = ConversionUtils.getIdentifiers( OrganisationUnit.class, new HashSet( dataSet.getSources() ) ); + if ( groupIds != null ) + { + for ( Integer groupId : groupIds ) + { + OrganisationUnitGroup group = organisationUnitGroupService.getOrganisationUnitGroup( groupId ); + Collection ids = ConversionUtils.getIdentifiers( OrganisationUnitGroup.class, group.getMembers() ); + dataSetSources.retainAll( ids ); + } + } + return CollectionUtils.intersection( dataSetSources, sources ); } } === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-11-06 07:01:56 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-11-21 13:04:45 +0000 @@ -107,8 +107,8 @@ + - === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/completeness/DataSetCompletenessServiceTest.java' --- dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/completeness/DataSetCompletenessServiceTest.java 2012-11-20 17:04:08 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/completeness/DataSetCompletenessServiceTest.java 2012-11-21 13:04:45 +0000 @@ -34,6 +34,7 @@ import java.util.Collection; import java.util.Date; import java.util.HashSet; +import java.util.Set; import org.hisp.dhis.DhisTest; import org.hisp.dhis.dataelement.DataElement; @@ -48,6 +49,8 @@ import org.hisp.dhis.datavalue.DataValueService; import org.hisp.dhis.external.location.LocationManager; import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitGroup; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.period.MonthlyPeriodType; import org.hisp.dhis.period.Period; @@ -86,6 +89,10 @@ private OrganisationUnit unitF; private OrganisationUnit unitG; private OrganisationUnit unitH; + + private OrganisationUnitGroup groupA; + private OrganisationUnitGroup groupB; + private OrganisationUnitGroup groupC; private int unitIdA; private int unitIdB; @@ -103,12 +110,12 @@ private DataElementCategoryOptionCombo categoryOptionCombo; - private Collection sources = new HashSet(); - private Date onTimeA; private Date tooLateA; private Date onTimeB; private Date tooLateB; + + private Set groupIds = new HashSet(); // ------------------------------------------------------------------------- // Fixture @@ -125,6 +132,8 @@ organisationUnitService = (OrganisationUnitService) getBean( OrganisationUnitService.ID ); + organisationUnitGroupService = (OrganisationUnitGroupService) getBean( OrganisationUnitGroupService.ID ); + dataSetService = (DataSetService) getBean( DataSetService.ID ); dataElementService = (DataElementService) getBean( DataElementService.ID ); @@ -186,9 +195,19 @@ unitIdsA.add( unitIdB ); unitIdsA.add( unitIdC ); - sources.add( unitA ); - sources.add( unitB ); - sources.add( unitC ); + groupA = createOrganisationUnitGroup( 'A' ); + groupB = createOrganisationUnitGroup( 'B' ); + groupC = createOrganisationUnitGroup( 'C' ); + + groupA.addOrganisationUnit( unitA ); + groupB.addOrganisationUnit( unitA ); + groupB.addOrganisationUnit( unitB ); + groupC.addOrganisationUnit( unitE ); + groupC.addOrganisationUnit( unitF ); + + organisationUnitGroupService.addOrganisationUnitGroup( groupA ); + organisationUnitGroupService.addOrganisationUnitGroup( groupB ); + organisationUnitGroupService.addOrganisationUnitGroup( groupC ); dataSetA = createDataSet( 'A', periodType ); dataSetB = createDataSet( 'B', periodType ); @@ -210,6 +229,12 @@ tooLateB = getDate( 2000, 3, 25 ); } + // ------------------------------------------------------------------------- + // A + // B C + // E F G H + // ------------------------------------------------------------------------- + @Override public boolean emptyDatabaseAfterTest() { @@ -265,7 +290,7 @@ registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodA, unitC, tooLateA, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodB, unitA, tooLateB, "" ) ); - Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdA ); + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -273,7 +298,7 @@ assertTrue( results.contains( new DataSetCompletenessResult( dataSetB.getName(), 2, 1, 0 ) ) ); assertTrue( results.contains( new DataSetCompletenessResult( dataSetC.getName(), 2, 0, 0 ) ) ); - results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA ); + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -311,7 +336,7 @@ registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodA, unitA, tooLateA, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodA, unitB, onTimeA, "" ) ); - Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdA ); + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -319,7 +344,7 @@ assertTrue( results.contains( new DataSetCompletenessResult( dataSetB.getName(), 2, 2, 2 ) ) ); assertTrue( results.contains( new DataSetCompletenessResult( dataSetC.getName(), 2, 1, 1 ) ) ); - results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA ); + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -351,13 +376,13 @@ registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitF, onTimeB, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitG, tooLateB, "" ) ); - Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdA ); + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdA, null ); assertNotNull( results ); assertEquals( 1, results.size() ); assertTrue( results.contains( new DataSetCompletenessResult( dataSetA.getName(), 7, 5, 3 ) ) ); - results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA ); + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA, null ); assertNotNull( results ); assertEquals( 1, results.size() ); @@ -365,6 +390,58 @@ } @Test + public void testGetDataSetCompletenessByDataSetD() + { + dataSetA.getSources().add( unitA ); + dataSetA.getSources().add( unitB ); + + dataSetB.getSources().add( unitA ); + dataSetB.getSources().add( unitB ); + + dataSetC.getSources().add( unitA ); + dataSetC.getSources().add( unitB ); + + dataSetService.addDataSet( dataSetA ); + dataSetService.addDataSet( dataSetB ); + dataSetService.addDataSet( dataSetC ); + + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitA, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitB, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitA, tooLateB, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitD, tooLateA, "" ) ); + + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetB, periodA, unitA, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetB, periodA, unitC, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetB, periodB, unitB, onTimeB, "" ) ); + + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodA, unitC, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetC, periodB, unitA, tooLateB, "" ) ); + + groupIds.clear(); + groupIds.add( groupA.getId() ); + + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA, groupIds ); + + assertNotNull( results ); + assertEquals( 3, results.size() ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetA.getName(), 3, 2, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetB.getName(), 3, 1, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetC.getName(), 3, 1, 0 ) ) ); + + groupIds.clear(); + groupIds.add( groupA.getId() ); + groupIds.add( groupB.getId() ); + + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdA, groupIds ); + + assertNotNull( results ); + assertEquals( 3, results.size() ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetA.getName(), 3, 2, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetB.getName(), 3, 1, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( dataSetC.getName(), 3, 1, 0 ) ) ); + } + + @Test public void testGetDataSetCompletenessByOrganisationUnitA() { dataSetA.getSources().add( unitE ); @@ -382,7 +459,7 @@ registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitF, onTimeA, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitG, onTimeA, "" ) ); - Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdsA, dataSetIdA ); + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdsA, dataSetIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -390,7 +467,7 @@ assertTrue( results.contains( new DataSetCompletenessResult( unitC.getName(), 2, 1, 0 ) ) ); assertTrue( results.contains( new DataSetCompletenessResult( unitA.getName(), 4, 3, 0 ) ) ); - results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdsA, dataSetIdA ); + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdsA, dataSetIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -416,7 +493,7 @@ registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitG, onTimeB, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitH, onTimeB, "" ) ); - Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdsA, dataSetIdA ); + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdsA, dataSetIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -424,7 +501,7 @@ assertTrue( results.contains( new DataSetCompletenessResult( unitC.getName(), 1, 1, 0 ) ) ); assertTrue( results.contains( new DataSetCompletenessResult( unitA.getName(), 3, 2, 0 ) ) ); - results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdsA, dataSetIdA ); + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdsA, dataSetIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -453,7 +530,7 @@ registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitG, onTimeB, "" ) ); registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitH, tooLateB, "" ) ); - Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdsA, dataSetIdA ); + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdsA, dataSetIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -461,7 +538,7 @@ assertTrue( results.contains( new DataSetCompletenessResult( unitC.getName(), 2, 2, 1 ) ) ); assertTrue( results.contains( new DataSetCompletenessResult( unitA.getName(), 4, 4, 2 ) ) ); - results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdsA, dataSetIdA ); + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdsA, dataSetIdA, null ); assertNotNull( results ); assertEquals( 3, results.size() ); @@ -469,4 +546,40 @@ assertTrue( results.contains( new DataSetCompletenessResult( unitC.getName(), 6, 4, 2 ) ) ); assertTrue( results.contains( new DataSetCompletenessResult( unitA.getName(), 12, 8, 4 ) ) ); } + + @Test + public void testGetDataSetCompletenessByOrganisationUnitD() + { + dataSetA.getSources().add( unitE ); + dataSetA.getSources().add( unitF ); + dataSetA.getSources().add( unitG ); + dataSetA.getSources().add( unitH ); + + dataSetIdA = dataSetService.addDataSet( dataSetA ); + + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitE, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitF, tooLateA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodA, unitG, tooLateA, "" ) ); + + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitE, onTimeA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitF, onTimeA, "" ) ); + registrationService.saveCompleteDataSetRegistration( new CompleteDataSetRegistration( dataSetA, periodB, unitG, onTimeA, "" ) ); + + groupIds.clear(); + groupIds.add( groupC.getId() ); + + Collection results = registrationCompletenessService.getDataSetCompleteness( periodIdA, unitIdsA, dataSetIdA, groupIds ); + + assertNotNull( results ); + assertEquals( 2, results.size() ); + assertTrue( results.contains( new DataSetCompletenessResult( unitB.getName(), 2, 2, 0 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( unitA.getName(), 2, 2, 0 ) ) ); + + results = registrationCompletenessService.getDataSetCompleteness( periodIdC, unitIdsA, dataSetIdA, groupIds ); + + assertNotNull( results ); + assertEquals( 2, results.size() ); + assertTrue( results.contains( new DataSetCompletenessResult( unitB.getName(), 6, 4, 2 ) ) ); + assertTrue( results.contains( new DataSetCompletenessResult( unitA.getName(), 6, 4, 2 ) ) ); + } } === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/completeness/action/GetDataCompletenessAction.java' --- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/completeness/action/GetDataCompletenessAction.java 2012-11-06 16:12:35 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/completeness/action/GetDataCompletenessAction.java 2012-11-21 13:04:45 +0000 @@ -27,9 +27,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import static org.hisp.dhis.system.util.ConversionUtils.getIdentifiers; + import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.GridHeader; @@ -49,8 +53,6 @@ import com.opensymphony.xwork2.Action; -import static org.hisp.dhis.system.util.ConversionUtils.*; - /** * @author Lars Helge Overland * @version $Id$ @@ -65,7 +67,7 @@ private static final String TITLE_SEP = " - "; private static final String EMPTY = ""; - + // ------------------------------------------------------------------------- // Dependencies // ------------------------------------------------------------------------- @@ -143,6 +145,13 @@ { this.type = type; } + + private Set groupId = new HashSet(); + + public void setGroupId( Set groupId ) + { + this.groupId = groupId; + } // ------------------------------------------------------------------------- // Output @@ -194,18 +203,18 @@ if ( dataSetId != null && dataSetId != 0 ) // One ds for one ou { mainResults = new ArrayList( completenessService.getDataSetCompleteness( - _periodId, getIdentifiers( OrganisationUnit.class, selectedUnit.getChildren() ), dataSetId ) ); + _periodId, getIdentifiers( OrganisationUnit.class, selectedUnit.getChildren() ), dataSetId, groupId ) ); footerResults = new ArrayList( completenessService.getDataSetCompleteness( _periodId, Arrays.asList( selectedUnit.getId() ), - dataSetId ) ); + dataSetId, groupId ) ); dataSet = dataSetService.getDataSet( dataSetId ); } else // All ds for children of one ou { mainResults = new ArrayList( completenessService.getDataSetCompleteness( - _periodId, selectedUnit.getId() ) ); + _periodId, selectedUnit.getId(), groupId ) ); } grid = getGrid( mainResults, footerResults, selectedUnit, dataSet, period ); === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/completeness/action/GetDataCompletenessOptionsAction.java' --- dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/completeness/action/GetDataCompletenessOptionsAction.java 2012-01-25 17:11:43 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/java/org/hisp/dhis/reporting/completeness/action/GetDataCompletenessOptionsAction.java 2012-11-21 13:04:45 +0000 @@ -34,6 +34,8 @@ import org.hisp.dhis.common.comparator.IdentifiableObjectNameComparator; import org.hisp.dhis.dataset.DataSet; import org.hisp.dhis.dataset.DataSetService; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupService; +import org.hisp.dhis.organisationunit.OrganisationUnitGroupSet; import org.hisp.dhis.period.PeriodType; import com.opensymphony.xwork2.Action; @@ -56,6 +58,13 @@ this.dataSetService = dataSetService; } + private OrganisationUnitGroupService organisationUnitGroupService; + + public void setOrganisationUnitGroupService( OrganisationUnitGroupService organisationUnitGroupService ) + { + this.organisationUnitGroupService = organisationUnitGroupService; + } + // ------------------------------------------------------------------------- // Output // ------------------------------------------------------------------------- @@ -66,14 +75,21 @@ { return dataSets; } - + + private List groupSets = new ArrayList(); + + public List getGroupSets() + { + return groupSets; + } + private List periodTypes; public List getPeriodTypes() { return periodTypes; } - + // ------------------------------------------------------------------------- // Action implementation // ------------------------------------------------------------------------- @@ -81,8 +97,10 @@ public String execute() { dataSets = new ArrayList( dataSetService.getAllDataSets() ); + groupSets = new ArrayList( organisationUnitGroupService.getCompulsoryOrganisationUnitGroupSets() ); Collections.sort( dataSets, IdentifiableObjectNameComparator.INSTANCE ); + Collections.sort( groupSets, IdentifiableObjectNameComparator.INSTANCE ); periodTypes = PeriodType.getAvailablePeriodTypes(); === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-09-24 05:42:39 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml 2012-11-21 13:04:45 +0000 @@ -211,6 +211,7 @@ + $i18n.getString( "reporting_rate_summary" ) #openHelp( "reporting_reporting_rate_summary" ) -
- - - - - - - - - - - -
- -
- -

- - - -

- - - - - - -
- - - -

- -

- - - - -
- -
+
+
+ +
+
+
+ +
+ +

+ + + +

+ + + + + + +
+ + + +

+ + + + + + + +   + $i18n.getString( "more_options" )

+ + + + +
+ +
#parse( "dhis-web-commons/loader/loader.vm" )