=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java 2011-07-01 07:37:16 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java 2011-09-03 11:29:44 +0000 @@ -181,6 +181,18 @@ String getExpressionDescription( String expression ); /** + * Populates the explodedNumerator and explodedDenominator property on all + * indicators in the given collection. This method uses + * explodeExpression( String ) internally to generate the exploded expressions. + * This method will perform compared to calling explodeExpression( String ) + * multiple times outside a transactional context as the transactional + * overhead is avoided. + * + * @param indicators the collection of indicators. + */ + void explodeExpressions( Collection indicators ); + + /** * Replaces references to data element totals with references to all * category option combos in the category combo for that data element. * === 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 2011-07-01 07:37:16 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java 2011-09-03 11:29:44 +0000 @@ -426,6 +426,18 @@ return buffer != null ? buffer.toString() : null; } + public void explodeExpressions( Collection indicators ) + { + if ( indicators != null ) + { + for ( Indicator indicator : indicators ) + { + indicator.setExplodedNumerator( explodeExpression( indicator.getNumerator() ) ); + indicator.setExplodedDenominator( explodeExpression( indicator.getDenominator() ) ); + } + } + } + public String explodeExpression( String expression ) { StringBuffer buffer = null; === modified file 'dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetMetaDataAction.java' --- dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetMetaDataAction.java 2011-08-17 13:41:04 +0000 +++ dhis-2/dhis-web/dhis-web-dataentry/src/main/java/org/hisp/dhis/de/action/GetMetaDataAction.java 2011-09-03 11:29:44 +0000 @@ -147,6 +147,8 @@ indicators = indicatorService.getIndicatorsWithDataSets(); + expressionService.explodeExpressions( indicators ); + OrganisationUnitDataSetAssociationSet organisationUnitSet = organisationUnitService.getOrganisationUnitDataSetAssociationSet(); dataSetAssociationSets = organisationUnitSet.getDataSetAssociationSets(); @@ -155,12 +157,6 @@ dataSets = dataSetService.getDataSets( organisationUnitSet.getDistinctDataSets() ); - for ( Indicator indicator : indicators ) - { - indicator.setExplodedNumerator( expressionService.explodeExpression( indicator.getNumerator() ) ); - indicator.setExplodedDenominator( expressionService.explodeExpression( indicator.getDenominator() ) ); - } - return SUCCESS; } }