------------------------------------------------------------ revno: 11027 committer: Lars Helge Ă˜verland <larshe...@gmail.com> branch nick: dhis2 timestamp: Mon 2013-05-27 21:21:48 +0200 message: Analytics, fixed bug with reporting rates calculation modified: dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/ListUtils.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-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-05-26 14:06:51 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-05-27 19:21:48 +0000 @@ -274,7 +274,11 @@ // --------------------------------------------------------------------- if ( params.getDataSets() != null ) - { + { + // ----------------------------------------------------------------- + // Get complete data set registrations + // ----------------------------------------------------------------- + DataQueryParams dataSourceParams = new DataQueryParams( params ); dataSourceParams.removeDimension( INDICATOR_DIM_ID ); dataSourceParams.removeDimension( DATAELEMENT_DIM_ID ); @@ -282,40 +286,49 @@ Map<String, Double> aggregatedDataMap = getAggregatedCompletenessValueMap( dataSourceParams ); - DataQueryParams dataTargetParams = new DataQueryParams( params ); - dataTargetParams.setDimensions( ListUtils.getAll( dataTargetParams.getDimensions(), dataTargetParams.getCompletenessDimensionIndexes() ) ); - dataTargetParams.setFilters( ListUtils.getAll( dataTargetParams.getFilters(), dataTargetParams.getCompletenessFilterIndexes() ) ); - dataTargetParams.setAggregationType( AggregationType.COUNT ); - dataTargetParams.setSkipPartitioning( true ); - - Map<String, Double> targetMap = getAggregatedCompletenessTargetMap( dataTargetParams ); - - Map<String, PeriodType> dsPtMap = dataSourceParams.getDataSetPeriodTypeMap(); - + // ----------------------------------------------------------------- + // Get completeness targets + // ----------------------------------------------------------------- + + List<Integer> completenessDimIndexes = dataSourceParams.getCompletenessDimensionIndexes(); + List<Integer> completenessFilterIndexes = dataSourceParams.getCompletenessFilterIndexes(); + + DataQueryParams targetParams = new DataQueryParams( dataSourceParams ); + + targetParams.setDimensions( ListUtils.getAtIndexes( targetParams.getDimensions(), completenessDimIndexes ) ); + targetParams.setFilters( ListUtils.getAtIndexes( targetParams.getFilters(), completenessFilterIndexes ) ); + targetParams.setSkipPartitioning( true ); + + Map<String, Double> targetMap = getAggregatedCompletenessTargetMap( targetParams ); + Integer periodIndex = dataSourceParams.getPeriodDimensionIndex(); Integer dataSetIndex = dataSourceParams.getDataSetDimensionIndex(); - - List<Integer> completenessDimIndexes = dataTargetParams.getCompletenessDimensionIndexes(); - + + Map<String, PeriodType> dsPtMap = dataSourceParams.getDataSetPeriodTypeMap(); + + // ----------------------------------------------------------------- + // Join data maps, calculate completeness and add to grid + // ----------------------------------------------------------------- + for ( Map.Entry<String, Double> entry : aggregatedDataMap.entrySet() ) { - List<String> row = new ArrayList<String>( Arrays.asList( entry.getKey().split( DIMENSION_SEP ) ) ); + List<String> dataRow = new ArrayList<String>( Arrays.asList( entry.getKey().split( DIMENSION_SEP ) ) ); - List<String> targetRow = ListUtils.getAll( row, completenessDimIndexes ); + List<String> targetRow = ListUtils.getAtIndexes( dataRow, completenessDimIndexes ); String targetKey = StringUtils.join( targetRow, DIMENSION_SEP ); Double target = targetMap.get( targetKey ); if ( target != null && entry.getValue() != null ) { - PeriodType queryPt = PeriodType.getPeriodTypeFromIsoString( row.get( periodIndex ) ); - PeriodType dataPt = dsPtMap.get( row.get( dataSetIndex ) ); + PeriodType queryPt = PeriodType.getPeriodTypeFromIsoString( dataRow.get( periodIndex ) ); + PeriodType dataPt = dsPtMap.get( dataRow.get( dataSetIndex ) ); target = target * queryPt.getPeriodSpan( dataPt ); double value = entry.getValue() * PERCENT / target; grid.addRow(); - grid.addValues( row.toArray() ); + grid.addValues( dataRow.toArray() ); grid.addValue( MathUtils.getRounded( value, 1 ) ); } } === modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/ListUtils.java' --- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/ListUtils.java 2013-02-22 17:24:41 +0000 +++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/ListUtils.java 2013-05-27 19:21:48 +0000 @@ -81,7 +81,7 @@ * @param list the list to select from. * @param indexes the indexes of the elements in the list to select. */ - public static <T> List<T> getAll( List<T> list, List<Integer> indexes ) + public static <T> List<T> getAtIndexes( List<T> list, List<Integer> indexes ) { List<T> elements = new ArrayList<T>();
_______________________________________________ Mailing list: https://launchpad.net/~dhis2-devs Post to : dhis2-devs@lists.launchpad.net Unsubscribe : https://launchpad.net/~dhis2-devs More help : https://help.launchpad.net/ListHelp