dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #21318
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 10048: Analytics, exploding indicator formulas
------------------------------------------------------------
revno: 10048
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Thu 2013-03-07 16:02:47 +0100
message:
Analytics, exploding indicator formulas
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/Indicator.java
dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java
dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.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-api/src/main/java/org/hisp/dhis/indicator/Indicator.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/Indicator.java 2013-02-13 03:57:52 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/indicator/Indicator.java 2013-03-07 15:02:47 +0000
@@ -178,6 +178,16 @@
{
attributeValues.clear();
}
+
+ public String getExplodedNumeratorFallback()
+ {
+ return explodedNumerator != null ? explodedNumerator : numerator;
+ }
+
+ public String getExplodedDenominatorFallback()
+ {
+ return explodedDenominator != null ? explodedDenominator : denominator;
+ }
// -------------------------------------------------------------------------
// Getters and setters
=== 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-03-04 10:41:11 +0000
+++ dhis-2/dhis-services/dhis-service-analytics/src/main/java/org/hisp/dhis/analytics/data/DefaultAnalyticsService.java 2013-03-07 15:02:47 +0000
@@ -106,7 +106,7 @@
private static final String VALUE_HEADER_NAME = "Value";
private static final int PERCENT = 100;
- private static final int MAX_QUERIES = 8; //TODO increase?
+ private static final int MAX_QUERIES = 8;
//TODO completeness on time
//TODO make sure data x dims are successive
@@ -177,7 +177,9 @@
{
int indicatorIndex = params.getIndicatorDimensionIndex();
List<Indicator> indicators = asTypedList( params.getIndicators() );
-
+
+ expressionService.explodeAndSubstituteExpressions( indicators, null );
+
DataQueryParams dataSourceParams = new DataQueryParams( params );
dataSourceParams.removeDimension( DATAELEMENT_DIM_ID );
dataSourceParams.removeDimension( DATASET_DIM_ID );
=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java 2013-03-07 14:10:37 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java 2013-03-07 15:02:47 +0000
@@ -145,16 +145,16 @@
public Double getIndicatorValue( Indicator indicator, Period period, Map<DataElementOperand, Double> valueMap,
Map<String, Double> constantMap, Integer days )
{
- if ( indicator == null || indicator.getNumerator() == null || indicator.getDenominator() == null )
+ if ( indicator == null || indicator.getExplodedNumeratorFallback() == null || indicator.getExplodedDenominatorFallback() == null )
{
return null;
}
- final double denominatorValue = calculateExpression( generateExpression( indicator.getDenominator(), valueMap, constantMap, days, false ) );
+ final double denominatorValue = calculateExpression( generateExpression( indicator.getExplodedDenominatorFallback(), valueMap, constantMap, days, false ) );
if ( !isEqual( denominatorValue, 0d ) )
{
- final double numeratorValue = calculateExpression( generateExpression( indicator.getNumerator(), valueMap, constantMap, days, false ) );
+ final double numeratorValue = calculateExpression( generateExpression( indicator.getExplodedNumeratorFallback(), valueMap, constantMap, days, false ) );
final double annualizationFactor = period != null ? DateUtils.getAnnualizationFactor( indicator, period.getStartDate(), period.getEndDate() ) : 1d;
final double factor = indicator.getIndicatorType().getFactor();