=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/DefaultValidationRuleService.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/DefaultValidationRuleService.java 2011-05-20 16:00:10 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/DefaultValidationRuleService.java 2011-08-02 11:23:53 +0000 @@ -303,15 +303,19 @@ if ( validationRule.getPeriodType() != null && validationRule.getPeriodType().equals( period.getPeriodType() ) ) { leftSide = expressionService.getExpressionValue( validationRule.getLeftSide(), period, source, true, aggregate, null ); - rightSide = expressionService.getExpressionValue( validationRule.getRightSide(), period, source, true, aggregate, null ); - - if ( leftSide != null && rightSide != null ) + + if ( leftSide != null ) { - violation = !expressionIsTrue( leftSide, validationRule.getOperator(), rightSide ); - - if ( violation ) + rightSide = expressionService.getExpressionValue( validationRule.getRightSide(), period, source, true, aggregate, null ); + + if ( rightSide != null ) { - validationViolations.add( new ValidationResult( period, source, validationRule, getRounded( leftSide, DECIMALS ), getRounded( rightSide, DECIMALS ) ) ); + violation = !expressionIsTrue( leftSide, validationRule.getOperator(), rightSide ); + + if ( violation ) + { + validationViolations.add( new ValidationResult( period, source, validationRule, getRounded( leftSide, DECIMALS ), getRounded( rightSide, DECIMALS ) ) ); + } } } } @@ -333,6 +337,8 @@ { final Set relevantValidationRules = new HashSet(); + //TODO move getDataElementsInExpression out of for-loop + for ( ValidationRule validationRule : getAllValidationRules() ) { for ( DataElement dataElement : dataElements )