=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/Expression.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/Expression.java 2012-06-27 05:46:37 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/Expression.java 2012-07-26 11:14:41 +0000 @@ -91,6 +91,12 @@ * A description of the Expression. */ private String description; + + /** + * Indicates whether the expression should evaluate to null if there are + * missing data values in the expression. + */ + private boolean nullIfBlank; /** * A reference to the DataElements in the Expression. @@ -274,4 +280,17 @@ { this.description = description; } + + @JsonProperty + @JsonView( { DetailedView.class, ExportView.class } ) + @JacksonXmlProperty + public boolean isNullIfBlank() + { + return nullIfBlank; + } + + public void setNullIfBlank( boolean nullIfBlank ) + { + this.nullIfBlank = nullIfBlank; + } } === 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 2012-07-25 14:44:02 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java 2012-07-26 11:14:41 +0000 @@ -103,7 +103,7 @@ Collection getAllExpressions(); Double getExpressionValue( Expression expression, Map valueMap, - Map constantMap, Integer days, boolean nullIfNoValues ); + Map constantMap, Integer days ); /** * Returns all DataElements included in the given expression string. === 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 2012-07-25 14:44:02 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java 2012-07-26 11:14:41 +0000 @@ -143,9 +143,9 @@ // ------------------------------------------------------------------------- public Double getExpressionValue( Expression expression, Map valueMap, - Map constantMap, Integer days, boolean nullIfNoValues ) + Map constantMap, Integer days ) { - final String expressionString = generateExpression( expression.getExpression(), valueMap, constantMap, days, nullIfNoValues ); + final String expressionString = generateExpression( expression.getExpression(), valueMap, constantMap, days, expression.isNullIfBlank() ); return expressionString != null ? calculateExpression( expressionString ) : null; } === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java' --- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2012-07-26 06:41:43 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/startup/TableAlteror.java 2012-07-26 11:14:41 +0000 @@ -387,6 +387,7 @@ executeSql( "update dataelement set zeroissignificant = false where zeroissignificant is null" ); executeSql( "update organisationunit set haspatients = false where haspatients is null" ); executeSql( "update dataset set expirydays = 0 where expirydays is null" ); + executeSql( "update expression set nullifblank = false where nullifblank is null" ); executeSql( "update reporttable set reportingmonth = false where reportingmonth is null" ); executeSql( "update reporttable set reportingbimonth = false where reportingbimonth is null" ); === 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 2012-07-25 13:18:48 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/validation/DefaultValidationRuleService.java 2012-07-26 11:14:41 +0000 @@ -146,7 +146,7 @@ // ------------------------------------------------------------------------- // ------------------------------------------------------------------------- - // Aggregate + // Aggregate TODO remove // ------------------------------------------------------------------------- public Grid getAggregateValidationResult( Collection results, List periods, @@ -377,11 +377,11 @@ if ( validationRule.getPeriodType() != null && validationRule.getPeriodType().equals( period.getPeriodType() ) ) { - leftSide = expressionService.getExpressionValue( validationRule.getLeftSide(), valueMap, constantMap, null, true ); + leftSide = expressionService.getExpressionValue( validationRule.getLeftSide(), valueMap, constantMap, null ); if ( leftSide != null ) { - rightSide = expressionService.getExpressionValue( validationRule.getRightSide(), valueMap, constantMap, null, true ); + rightSide = expressionService.getExpressionValue( validationRule.getRightSide(), valueMap, constantMap, null ); if ( rightSide != null ) { === modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/expression/hibernate/Expression.hbm.xml' --- dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/expression/hibernate/Expression.hbm.xml 2011-06-03 13:11:34 +0000 +++ dhis-2/dhis-services/dhis-service-core/src/main/resources/org/hisp/dhis/expression/hibernate/Expression.hbm.xml 2012-07-26 11:14:41 +0000 @@ -16,6 +16,8 @@ + + === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/indicatorExpressionBuilderForm.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/indicatorExpressionBuilderForm.vm 2012-06-09 22:21:27 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/indicatorExpressionBuilderForm.vm 2012-07-26 11:14:41 +0000 @@ -9,10 +9,10 @@ dialog = jQuery("#indicator-expression-container").dialog({ modal: true, autoOpen: false, - minWidth: 820, - minHeight: 550, - width: 820, - height: 550 + minWidth: 840, + minHeight: 560, + width: 840, + height: 560 }); getConstantsPage(); === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/AddValidationRuleAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/AddValidationRuleAction.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/AddValidationRuleAction.java 2012-07-26 11:14:41 +0000 @@ -111,6 +111,13 @@ this.leftSideDescription = leftSideDescription; } + private boolean leftSideNullIfBlank; + + public void setLeftSideNullIfBlank( boolean leftSideNullIfBlank ) + { + this.leftSideNullIfBlank = leftSideNullIfBlank; + } + private String rightSideExpression; public void setRightSideExpression( String rightSideExpression ) @@ -124,6 +131,13 @@ { this.rightSideDescription = rightSideDescription; } + + private boolean rightSideNullIfBlank; + + public void setRightSideNullIfBlank( boolean rightSideNullIfBlank ) + { + this.rightSideNullIfBlank = rightSideNullIfBlank; + } private String periodTypeName; @@ -142,6 +156,7 @@ leftSide.setExpression( leftSideExpression ); leftSide.setDescription( leftSideDescription ); + leftSide.setNullIfBlank( leftSideNullIfBlank ); leftSide.setDataElementsInExpression( expressionService.getDataElementsInExpression( leftSideExpression ) ); leftSide.setOptionCombosInExpression( expressionService.getOptionCombosInExpression( leftSideExpression ) ); @@ -149,6 +164,7 @@ rightSide.setExpression( rightSideExpression ); rightSide.setDescription( rightSideDescription ); + rightSide.setNullIfBlank( rightSideNullIfBlank ); rightSide.setDataElementsInExpression( expressionService.getDataElementsInExpression( rightSideExpression ) ); rightSide.setOptionCombosInExpression( expressionService.getOptionCombosInExpression( rightSideExpression ) ); === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/UpdateValidationRuleAction.java' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/UpdateValidationRuleAction.java 2011-12-26 10:07:59 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/UpdateValidationRuleAction.java 2012-07-26 11:14:41 +0000 @@ -116,6 +116,13 @@ this.leftSideDescription = leftSideDescription; } + private boolean leftSideNullIfBlank; + + public void setLeftSideNullIfBlank( boolean leftSideNullIfBlank ) + { + this.leftSideNullIfBlank = leftSideNullIfBlank; + } + private String rightSideExpression; public void setRightSideExpression( String rightSideExpression ) @@ -130,6 +137,13 @@ this.rightSideDescription = rightSideDescription; } + private boolean rightSideNullIfBlank; + + public void setRightSideNullIfBlank( boolean rightSideNullIfBlank ) + { + this.rightSideNullIfBlank = rightSideNullIfBlank; + } + private String periodTypeName; public void setPeriodTypeName( String periodTypeName ) @@ -151,17 +165,15 @@ validationRule.getLeftSide().setExpression( leftSideExpression ); validationRule.getLeftSide().setDescription( leftSideDescription ); - validationRule.getLeftSide().setDataElementsInExpression( - expressionService.getDataElementsInExpression( leftSideExpression ) ); - validationRule.getLeftSide().setOptionCombosInExpression( - expressionService.getOptionCombosInExpression( leftSideExpression ) ); + validationRule.getLeftSide().setNullIfBlank( leftSideNullIfBlank ); + validationRule.getLeftSide().setDataElementsInExpression( expressionService.getDataElementsInExpression( leftSideExpression ) ); + validationRule.getLeftSide().setOptionCombosInExpression( expressionService.getOptionCombosInExpression( leftSideExpression ) ); validationRule.getRightSide().setExpression( rightSideExpression ); validationRule.getRightSide().setDescription( rightSideDescription ); - validationRule.getRightSide().setDataElementsInExpression( - expressionService.getDataElementsInExpression( rightSideExpression ) ); - validationRule.getRightSide().setOptionCombosInExpression( - expressionService.getOptionCombosInExpression( rightSideExpression ) ); + validationRule.getRightSide().setNullIfBlank( rightSideNullIfBlank ); + validationRule.getRightSide().setDataElementsInExpression( expressionService.getDataElementsInExpression( rightSideExpression ) ); + validationRule.getRightSide().setOptionCombosInExpression( expressionService.getOptionCombosInExpression( rightSideExpression ) ); PeriodType periodType = periodService.getPeriodTypeByName( periodTypeName ); validationRule.setPeriodType( periodService.getPeriodTypeByClass( periodType.getClass() ) ); === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/org/hisp/dhis/validationrule/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/org/hisp/dhis/validationrule/i18n_module.properties 2012-05-01 13:14:33 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/org/hisp/dhis/validationrule/i18n_module.properties 2012-07-26 11:14:41 +0000 @@ -122,4 +122,5 @@ get_report_as_pdf=Download as PDF max_values_exceeded=More than 500 values found, please fix the violations or narrow the search to see all specify_dataset=Please specify data sets -analysing_please_wait=Analysing data, please wait \ No newline at end of file +analysing_please_wait=Analysing data, please wait +skip_for_missing_values=Skip for missing values \ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/struts.xml' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/struts.xml 2012-02-22 18:23:04 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/struts.xml 2012-07-26 11:14:41 +0000 @@ -33,7 +33,7 @@ /dhis-web-validationrule/addValidationRuleForm.vm /dhis-web-validationrule/menu.vm javascript/general.js,javascript/expression.js, - javascript/addValidationRuleForm.js + javascript/expressionBuilder.js,javascript/addValidationRuleForm.js F_VALIDATIONRULE_ADD @@ -63,7 +63,7 @@ /main.vm /dhis-web-validationrule/updateValidationRuleForm.vm javascript/general.js,javascript/expression.js, - javascript/updateValidationRuleForm.js + javascript/expressionBuilder.js,javascript/updateValidationRuleForm.js F_VALIDATIONRULE_UPDATE === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/addValidationRuleForm.vm' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/addValidationRuleForm.vm 2011-09-26 09:31:56 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/addValidationRuleForm.vm 2012-07-26 11:14:41 +0000 @@ -45,10 +45,13 @@ + + + === modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/expressionBuilderForm.vm' --- dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/expressionBuilderForm.vm 2012-06-09 22:21:27 +0000 +++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/expressionBuilderForm.vm 2012-07-26 11:14:41 +0000 @@ -1,141 +1,4 @@