← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1151: Improved validation of indicator numerator and denominator.

 

------------------------------------------------------------
revno: 1151
committer: Lars Helge Oeverland larshelge@xxxxxxxxx
branch nick: trunk
timestamp: Wed 2009-12-02 14:19:53 +0100
message:
  Improved validation of indicator numerator and denominator.
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java
  dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/ValidateIndicatorAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/GetFormulaTextAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/ValidateDenumAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/denum.js
  dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/GetTextualExpressionAction.java
  dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateExpressionAction.java
  dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateValidationRuleAction.java
  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/webapp/dhis-web-validationrule/addValidationRuleForm.vm


--
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/expression/ExpressionService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java	2009-07-03 10:03:22 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/expression/ExpressionService.java	2009-12-02 13:19:53 +0000
@@ -46,12 +46,12 @@
 {
     String ID = ExpressionService.class.getName();
     
-    final int VALID = 1;
-    final int DATAELEMENT_ID_NOT_NUMERIC = -1;
-    final int CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC = -2;
-    final int DATAELEMENT_DOES_NOT_EXIST = -3;
-    final int CATEGORYOPTIONCOMBO_DOES_NOT_EXIST = -4;
-    final int EXPRESSION_NOT_WELL_FORMED = -5;
+    final String VALID = "valid";
+    final String DATAELEMENT_ID_NOT_NUMERIC = "dataelement_id_not_numeric";
+    final String CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC = "category_option_combo_id_not_numeric";
+    final String DATAELEMENT_DOES_NOT_EXIST = "data_element_does_not_exist";
+    final String CATEGORYOPTIONCOMBO_DOES_NOT_EXIST = "category_option_combo_does_not_exist";
+    final String EXPRESSION_NOT_WELL_FORMED = "expression_not_well_formed";
     
     /**
      * Adds a new Expression to the database.
@@ -105,9 +105,10 @@
     Double getExpressionValue( Expression expression, Period period, Source source, boolean nullIfNoValues );
     
     /**
+     * Returns all DataElements associated with the CalculatedDataElement.
      * 
-     * @param id
-     * @return
+     * @param id the CalculatedDataElement identifier.
+     * @return a Set of DataElements.
      */
     Set<DataElement> getDataElementsInCalculatedDataElement( int id );
     
@@ -148,12 +149,12 @@
      * 
      * @param formula the expression formula.
      * @return VALID if the expression is valid.
-     * 		   DATAELEMENT_ID_NOT_NUMERIC if the data element is not a number.
-     * 		   CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC if the category option combo id is not a number.
-     * 		   DATAELEMENT_DOES_NOT_EXIST if the data element does not exist.
-     * 		   CATEGORYOPTIONCOMBO_DOES_NOT_EXIST if the category option combo does not exist.
+     * 	       DATAELEMENT_ID_NOT_NUMERIC if the data element is not a number.
+     * 	       CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC if the category option combo id is not a number.
+     * 	       DATAELEMENT_DOES_NOT_EXIST if the data element does not exist.
+     *         CATEGORYOPTIONCOMBO_DOES_NOT_EXIST if the category option combo does not exist.
      */
-    int expressionIsValid( String formula );
+    String expressionIsValid( String formula );
     
     /**
      * Creates an expression string containing DataElement names and the names of

=== 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	2009-11-25 09:08:11 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/expression/DefaultExpressionService.java	2009-12-02 13:19:53 +0000
@@ -241,7 +241,7 @@
         return operandsInExpression;
     }
     
-    public int expressionIsValid( String formula )
+    public String expressionIsValid( String formula )
     {
         StringBuffer buffer = new StringBuffer();
         

=== modified file 'dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java'
--- dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java	2009-10-06 00:48:07 +0000
+++ dhis-2/dhis-services/dhis-service-mapping/src/main/java/org/hisp/dhis/mapping/DefaultMappingService.java	2009-12-02 13:19:53 +0000
@@ -698,7 +698,7 @@
         {
             for ( MapView mapView : mapViews )
             {
-                if ( mapView.getMapSourceType().equals( type ) )
+                if ( mapView.getMapSourceType() != null && mapView.getMapSourceType().equals( type ) )
                 {
                     selectedMapViews.add( mapView );
                 }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/ValidateIndicatorAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/ValidateIndicatorAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicator/ValidateIndicatorAction.java	2009-12-02 13:19:53 +0000
@@ -248,34 +248,46 @@
             return INPUT;
         }
         
-        if ( numerator == null )
+        if ( numerator == null || numerator.trim().isEmpty() )
         {
             message = i18n.getString( "specify_numerator" );
+
+            return INPUT;
         }
         
-        if ( numeratorDescription == null )
+        if ( numeratorDescription == null || numeratorDescription.trim().isEmpty() )
         {
             message = i18n.getString( "specify_numerator_description" );
+
+            return INPUT;
         }
         
-        if ( numeratorAggregationOperator == null )
+        if ( numeratorAggregationOperator == null || numeratorAggregationOperator.trim().isEmpty() )
         {
             message = i18n.getString( "specify_numerator_agg_operator" );
+
+            return INPUT;
         }
         
-        if ( denominator == null )
+        if ( denominator == null || denominator.trim().isEmpty() )
         {
             message = i18n.getString( "specify_denominator" );
+
+            return INPUT;
         }
         
-        if ( denominatorDescription == null )
+        if ( denominatorDescription == null || denominatorDescription.trim().isEmpty() )
         {
             message = i18n.getString( "specify_denominator_description" );
+
+            return INPUT;
         }
         
-        if ( denominatorAggregationOperator == null )
+        if ( denominatorAggregationOperator == null || denominatorAggregationOperator.trim().isEmpty() )
         {
             message = i18n.getString( "specify_denominator_agg_operator" );
+
+            return INPUT;
         }
 
         message = i18n.getString( "everything_is_ok" );

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/GetFormulaTextAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/GetFormulaTextAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/GetFormulaTextAction.java	2009-12-02 13:19:53 +0000
@@ -82,49 +82,20 @@
     public String execute()
         throws Exception
     {
-        formulaText = getFormulaDescription( formula );
-
-        return SUCCESS;
-    }
-
-    // -------------------------------------------------------------------------
-    // Supportive methods
-    // -------------------------------------------------------------------------
-
-    private String getFormulaDescription( String formula )
-    {
-        String description = null;
-        
         if ( formula != null )
-        {        
-            int result = expressionService.expressionIsValid( formula );
-
-            if ( result == ExpressionService.VALID )
-            {
-                description = expressionService.getExpressionDescription( formula );
-            }
-            else if ( result == ExpressionService.DATAELEMENT_ID_NOT_NUMERIC )
-            {
-                description = i18n.getString( "dataelement_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC )
-            {
-                description = i18n.getString( "category_option_combo_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.DATAELEMENT_DOES_NOT_EXIST )
-            {
-                description = i18n.getString( "id_does_not_reference_dataelement" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_DOES_NOT_EXIST )
-            {
-                description = i18n.getString( "id_does_not_reference_category_option_combo" );
-            }
-            else if ( result == ExpressionService.EXPRESSION_NOT_WELL_FORMED )
-            {
-                description = i18n.getString( "expression_not_well_formed" );
+        {
+            String result = expressionService.expressionIsValid( formula );
+            
+            if ( result.equals( ExpressionService.VALID ) )
+            {
+                formulaText = expressionService.getExpressionDescription( formula );
+            }
+            else
+            {
+                formulaText = i18n.getString( result );
             }
         }
         
-        return description;
+        return SUCCESS;
     }
 }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/ValidateDenumAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/ValidateDenumAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/java/org/hisp/dhis/dd/action/indicatordenum/ValidateDenumAction.java	2009-12-02 13:19:53 +0000
@@ -67,6 +67,13 @@
     {
         this.formula = formula;
     }
+    
+    private String description;
+
+    public void setDescription( String description )
+    {
+        this.description = description;
+    }
 
     // -------------------------------------------------------------------------
     // Output
@@ -85,6 +92,13 @@
 
     public String execute()
     {
+        if ( description == null || description.trim().length() == 0 )
+        {
+            message = i18n.getString( "specify_description" );
+            
+            return ERROR;
+        }
+        
         if ( formula == null || formula.trim().length() == 0 )
         {
             message = i18n.getString( "specify_formula" );
@@ -92,37 +106,16 @@
             return ERROR;
         }
         
-        int result = expressionService.expressionIsValid( formula );
+        String result = expressionService.expressionIsValid( formula );
         
-        if ( result != ExpressionService.VALID )
-        {        
-            message = i18n.getString( "could_not_save" ) + ": ";
-            
-            if ( result == ExpressionService.DATAELEMENT_ID_NOT_NUMERIC )
-            {
-                message += i18n.getString( "dataelement_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC )
-            {
-                message += i18n.getString( "category_option_combo_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.DATAELEMENT_DOES_NOT_EXIST )
-            {
-                message += i18n.getString( "id_does_not_reference_dataelement" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_DOES_NOT_EXIST )
-            {
-                message += i18n.getString( "id_does_not_reference_category_option_combo" );
-            }
-            else if ( result == ExpressionService.EXPRESSION_NOT_WELL_FORMED )
-            {
-                message += i18n.getString( "expression_not_well_formed" );
-            }
+        if ( !result.equals( ExpressionService.VALID ) )
+        {
+            message = i18n.getString( result );
             
             return ERROR;
         }
 
-        message = "Valid";
+        message = "valid";
         
         return SUCCESS;
     }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties	2009-11-14 15:02:39 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/resources/org/hisp/dhis/dd/i18n_module.properties	2009-12-02 13:19:53 +0000
@@ -365,6 +365,11 @@
 available_indicatorgroup						= Available Indicator Groups
 selected_indicatorgroup							= Selected Indicator Groups
 last_updated									= Last updated
+dataelement_id_not_numeric 						= Data element identifier must be a number
+category_option_combo_id_not_numeric		    = Category option combo identifier must be a number
+data_element_does_not_exist						= Identifier does not reference a data element
+category_option_combo_does_not_exist 			= Identifier does not reference a category option combo
+expression_not_well_formed 						= Expression is not well formed
 intro_data_element								= Create, modify, view and delete data elements.
 intro_data_element_group						= Create, modify, view and delete data element groups.
 intro_data_element_group_editor					= Easily add or remove data elements to and from data element groups.

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/denum.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/denum.js	2009-03-03 16:46:36 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-datadictionary/src/main/webapp/dhis-web-maintenance-datadictionary/javascript/denum.js	2009-12-02 13:19:53 +0000
@@ -99,8 +99,9 @@
 function validateDenum()
 {
 	var formula = htmlEncode( document.getElementById( "formula" ).value );
-
-	var url = "validateDenum.action?formula=" + formula;
+	var description = htmlEncode( document.getElementById( "description" ).value );
+	
+	var url = "validateDenum.action?description=" + description + "&formula=" + formula;
 
 	var request = new Request();
 	request.setResponseTypeXML( "message" );

=== modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/GetTextualExpressionAction.java'
--- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/GetTextualExpressionAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/GetTextualExpressionAction.java	2009-12-02 13:19:53 +0000
@@ -49,7 +49,7 @@
     {
         this.expressionService = expressionService;
     }
-
+    
     private I18n i18n;
 
     public void setI18n( I18n i18n )
@@ -82,49 +82,20 @@
     public String execute()
         throws Exception
     {
-        textualExpression = getExpressionDescription();
-        
-        return SUCCESS;
-    }
-
-    // -------------------------------------------------------------------------
-    // Supportive methods
-    // -------------------------------------------------------------------------
-
-    public String getExpressionDescription()
-    {
-        String description = null;
-        
         if ( expression != null )
         {
-            int result = expressionService.expressionIsValid( expression );
+            String result = expressionService.expressionIsValid( expression );
             
-            if ( result == ExpressionService.VALID )
-            {
-                description = expressionService.getExpressionDescription( expression );
-            }
-            else if ( result == ExpressionService.DATAELEMENT_ID_NOT_NUMERIC )
-            {
-                description = i18n.getString( "dataelement_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC )
-            {
-                description = i18n.getString( "category_option_combo_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.DATAELEMENT_DOES_NOT_EXIST )
-            {
-                description = i18n.getString( "id_does_not_reference_dataelement" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_DOES_NOT_EXIST )
-            {
-                description = i18n.getString( "id_does_not_reference_category_option_combo" );
-            }
-            else if ( result == ExpressionService.EXPRESSION_NOT_WELL_FORMED )
-            {
-                description = i18n.getString( "expression_not_well_formed" );
+            if ( result.equals( ExpressionService.VALID ) )
+            {
+                textualExpression = expressionService.getExpressionDescription( expression );
+            }
+            else
+            {
+                textualExpression = i18n.getString( result );
             }
         }
         
-        return description;
+        return SUCCESS;
     }
 }

=== modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateExpressionAction.java'
--- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateExpressionAction.java	2009-08-20 08:17:49 +0000
+++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateExpressionAction.java	2009-12-02 13:19:53 +0000
@@ -114,38 +114,10 @@
             return INPUT;
         }
         
-        int result = expressionService.expressionIsValid( expression );
-        
-        if ( result != ExpressionService.VALID )
-        {
-            message = i18n.getString( "could_not_save" ) + ": ";
-            
-            if ( result == ExpressionService.DATAELEMENT_ID_NOT_NUMERIC )
-            {
-                message += i18n.getString( "dataelement_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_ID_NOT_NUMERIC )
-            {
-                message += i18n.getString( "category_option_combo_id_must_be_number" );
-            }
-            else if ( result == ExpressionService.DATAELEMENT_DOES_NOT_EXIST )
-            {
-                message += i18n.getString( "id_does_not_reference_dataelement" );
-            }
-            else if ( result == ExpressionService.CATEGORYOPTIONCOMBO_DOES_NOT_EXIST )
-            {
-                message += i18n.getString( "id_does_not_reference_category_option_combo" );
-            }
-            else if ( result == ExpressionService.EXPRESSION_NOT_WELL_FORMED )
-            {
-                message += i18n.getString( "expression_not_well_formed" );
-            }
-            
-            return INPUT;
-        }
-        
-        message = "Valid";
-        
-        return SUCCESS;
+        String result = expressionService.expressionIsValid( expression );
+        
+        message = i18n.getString( result );
+        
+        return result.equals( ExpressionService.VALID ) ? SUCCESS : INPUT;
     }
 }

=== modified file 'dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateValidationRuleAction.java'
--- dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateValidationRuleAction.java	2009-11-07 14:09:00 +0000
+++ dhis-2/dhis-web/dhis-web-validationrule/src/main/java/org/hisp/dhis/validationrule/action/ValidateValidationRuleAction.java	2009-12-02 13:19:53 +0000
@@ -27,9 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import java.util.Set;
-
-import org.hisp.dhis.dataelement.DataElement;
 import org.hisp.dhis.expression.ExpressionService;
 import org.hisp.dhis.i18n.I18n;
 import org.hisp.dhis.validation.ValidationRule;
@@ -168,18 +165,6 @@
             return INPUT;
         }
 
-        Set<DataElement> leftSideDataElements = expressionService.getDataElementsInExpression( leftSideExpression );
-        
-        for ( DataElement element : leftSideDataElements )
-        {
-            if ( !element.getType().equals( DataElement.VALUE_TYPE_INT ) )
-            {
-                message = i18n.getString( "dataelements_left_must_be_type_integers" );
-                
-                return INPUT;
-            }
-        }
-
         if ( rightSideExpression == null || rightSideExpression.trim().length() == 0 )
         {
             message = i18n.getString( "specify_right_side" );
@@ -187,18 +172,22 @@
             return INPUT;
         }
         
-        Set<DataElement> rightSideDataElements = expressionService.getDataElementsInExpression( rightSideExpression  );
-
-        for ( DataElement element : rightSideDataElements )
-        {
-            if ( !element.getType().equals( DataElement.VALUE_TYPE_INT ) )
-            {
-                message = i18n.getString( "dataelements_right_must_be_type_integers" );
+        String result = expressionService.expressionIsValid( leftSideExpression );
+        
+        if ( !result.equals( ExpressionService.VALID ) )
+        {
+            message = i18n.getString( result );
+            
+            return INPUT;
+        }
+        
+        if ( !result.equals( ExpressionService.VALID ) )
+        {
+            message = i18n.getString( result );
+            
+            return INPUT;
+        }
                 
-                return INPUT;
-            }
-        }
-        
         message = i18n.getString( "everything_is_ok" );
 
         return SUCCESS;

=== 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	2009-11-25 15:56:24 +0000
+++ dhis-2/dhis-web/dhis-web-validationrule/src/main/resources/org/hisp/dhis/validationrule/i18n_module.properties	2009-12-02 13:19:53 +0000
@@ -100,11 +100,11 @@
 data_quality_report	= Data quality report
 validation_result_details	= Validation result details
 validation_rule_	= Validation rule
-dataelement_id_must_be_number= Data element identifier must be a number
-category_option_combo_id_must_be_number= Category option combo identifier must be a number
-id_does_not_reference_dataelement	= Identifier does not reference a data element
-id_does_not_reference_category_option_combo	= Identifier does not reference a category option combo
-expression_not_well_formed	= Expression is not well formed
+dataelement_id_not_numeric = Data element identifier must be a number
+category_option_combo_id_not_numeric = Category option combo identifier must be a number
+data_element_does_not_exist	= Identifier does not reference a data element
+category_option_combo_does_not_exist = Identifier does not reference a category option combo
+expression_not_well_formed = Expression is not well formed
 could_not_save= Could not save
 select_organisation_unit	= Select organisation unit
 everything_is_ok	= Everything is OK

=== 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	2009-03-03 16:46:36 +0000
+++ dhis-2/dhis-web/dhis-web-validationrule/src/main/webapp/dhis-web-validationrule/addValidationRuleForm.vm	2009-12-02 13:19:53 +0000
@@ -4,12 +4,12 @@
 <form id="addValidationRuleForm" action="addValidationRule.action" method="post" onsubmit="return validateAddValidationRule()">
 
 <div>
-	<input type="hidden" id="leftSideDescription" name="leftSideDescription"/>
-	<input type="hidden" id="leftSideExpression" name="leftSideExpression"/>
-	<input type="hidden" id="leftSideTextualExpression" name="leftSideTextualExpression"/>
-	<input type="hidden" id="rightSideDescription" name="rightSideDescription"/>
-	<input type="hidden" id="rightSideExpression" name="rightSideExpression"/>
-	<input type="hidden" id="rightSideTextualExpression" name="rightSideTextualExpression"/>
+	<input type="hidden" id="leftSideDescription" name="leftSideDescription">
+	<input type="hidden" id="leftSideExpression" name="leftSideExpression">
+	<input type="hidden" id="leftSideTextualExpression" name="leftSideTextualExpression">
+	<input type="hidden" id="rightSideDescription" name="rightSideDescription">
+	<input type="hidden" id="rightSideExpression" name="rightSideExpression">
+	<input type="hidden" id="rightSideTextualExpression" name="rightSideTextualExpression">
 </div>
 
 <table>