=== modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsUtils.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsUtils.java 2015-09-28 09:07:56 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/AnalyticsUtils.java 2015-10-20 14:07:43 +0000 @@ -45,6 +45,7 @@ import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.period.Period; +import org.hisp.dhis.system.util.MathUtils; import org.hisp.dhis.system.util.ReflectionUtils; /** @@ -135,4 +136,30 @@ return list; } + /** + * Returns a value. If the given parameters has skip rounding, the value is + * returned unchanged. If the given number of decimals is specified, the + * value is rounded to the given decimals. Otherwise, default rounding is + * used. + * + * @param params the query parameters. + * @param decimals the number of decimals. + * @param value the value. + * @return a double. + */ + public static Double getRoundedValue( DataQueryParams params, Integer decimals, Double value ) + { + if ( params.isSkipRounding() ) + { + return value; + } + else if ( decimals != null && decimals > 0 ) + { + return MathUtils.getRounded( value, decimals ); + } + else + { + return MathUtils.getRounded( value ); + } + } } === 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 2015-10-13 07:58:48 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2015-10-20 14:07:43 +0000 @@ -88,6 +88,7 @@ import org.hisp.dhis.analytics.AnalyticsManager; import org.hisp.dhis.analytics.AnalyticsSecurityManager; import org.hisp.dhis.analytics.AnalyticsService; +import org.hisp.dhis.analytics.AnalyticsUtils; import org.hisp.dhis.analytics.DataQueryGroups; import org.hisp.dhis.analytics.DataQueryParams; import org.hisp.dhis.analytics.DimensionItem; @@ -341,11 +342,9 @@ row.add( DX_INDEX, new DimensionItem( DATA_X_DIM_ID, indicator ) ); - Double roundedValue = indicator.hasDecimals() ? MathUtils.getRounded( value, indicator.getDecimals() ) : MathUtils.getRounded( value ); - grid.addRow(); grid.addValues( DimensionItem.getItemIdentifiers( row ) ); - grid.addValue( dataSourceParams.isSkipRounding() ? value : roundedValue ); + grid.addValue( AnalyticsUtils.getRoundedValue( dataSourceParams, indicator.getDecimals(), value ) ); } } } === modified file 'dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java' --- dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2015-10-12 15:45:11 +0000 +++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/event/data/JdbcEventAnalyticsManager.java 2015-10-20 14:07:43 +0000 @@ -46,6 +46,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.analytics.AggregationType; +import org.hisp.dhis.analytics.AnalyticsUtils; import org.hisp.dhis.analytics.EventOutputType; import org.hisp.dhis.analytics.event.EventAnalyticsManager; import org.hisp.dhis.analytics.event.EventQueryParams; @@ -203,7 +204,7 @@ { double value = rowSet.getDouble( "value" ); ProgramIndicator indicator = params.getProgramIndicator(); - grid.addValue( indicator.hasDecimals() ? getRounded( value, indicator.getDecimals() ) : getRounded( value ) ); + grid.addValue( AnalyticsUtils.getRoundedValue( params, indicator.getDecimals(), value ) ); } else {