← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 1743: Improve the min/max value functionality.

 

------------------------------------------------------------
revno: 1743
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: trunk
timestamp: Wed 2010-04-07 19:27:42 +0700
message:
  Improve the min/max value functionality.
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataanalysis/DataAnalysisService.java
  dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java
  dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/StdDevOutlierAnalysisService.java
  dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/index.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/menu.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/dataanalysis/DataAnalysisService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataanalysis/DataAnalysisService.java	2009-12-23 17:34:18 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dataanalysis/DataAnalysisService.java	2010-04-07 12:27:42 +0000
@@ -30,18 +30,18 @@
 import java.util.Collection;
 
 import org.hisp.dhis.dataelement.DataElement;
-import org.hisp.dhis.datavalue.DeflatedDataValue;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.period.Period;
 
 /**
  * @author Dag Haavi Finstad
- * @version $Id: StdDevOutlierAnalysisService.java 882 2009-05-14 23:09:31Z daghf $
+ * @version $Id: StdDevOutlierAnalysisService.java 882 2009-05-14 23:09:31Z
+ *          daghf $
  */
 public interface DataAnalysisService
 {
     String ID = DataAnalysisService.class.getName();
 
-    Collection<DeflatedDataValue> analyse( OrganisationUnit organisationUnit, Collection<DataElement> dataElements,
+    Collection<?> analyse( OrganisationUnit organisationUnit, Collection<DataElement> dataElements,
         Collection<Period> periods, Double stdDevFactor );
 }

=== modified file 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java'
--- dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java	2010-03-31 16:44:55 +0000
+++ dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java	2010-04-07 12:27:42 +0000
@@ -58,6 +58,8 @@
     final String KEY_GIS_LATITUDE = "latitude";
     
     final String KEY_DISABLE_DATAENTRYFORM_WHEN_COMPLETED = "dataEntryFormCompleted";
+    
+    final String KEY_FACTOR_OF_DEVIATION = "factorDeviation";
 
     void saveSystemSetting( String name, Serializable value );   
 

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/StdDevOutlierAnalysisService.java'
--- dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/StdDevOutlierAnalysisService.java	2009-12-24 08:55:53 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/java/org/hisp/dhis/dataanalysis/StdDevOutlierAnalysisService.java	2010-04-07 12:27:42 +0000
@@ -58,12 +58,12 @@
     }
 
     private OrganisationUnitService organisationUnitService;
-    
+
     public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
     {
         this.organisationUnitService = organisationUnitService;
     }
-    
+
     // -------------------------------------------------------------------------
     // OutlierAnalysisService implementation
     // -------------------------------------------------------------------------
@@ -71,21 +71,24 @@
     public final Collection<DeflatedDataValue> analyse( OrganisationUnit organisationUnit,
         Collection<DataElement> dataElements, Collection<Period> periods, Double stdDevFactor )
     {
-        Collection<OrganisationUnit> units = organisationUnitService.getOrganisationUnitWithChildren( organisationUnit.getId() );
-        
+        Collection<OrganisationUnit> units = organisationUnitService.getOrganisationUnitWithChildren( organisationUnit
+            .getId() );
+
         Collection<DeflatedDataValue> outlierCollection = new ArrayList<DeflatedDataValue>();
-        
+
         for ( DataElement dataElement : dataElements )
         {
             if ( dataElement.getType().equals( DataElement.VALUE_TYPE_INT ) )
-            {                    
-                Collection<DataElementCategoryOptionCombo> categoryOptionCombos = dataElement.getCategoryCombo().getOptionCombos();
-                
+            {
+                Collection<DataElementCategoryOptionCombo> categoryOptionCombos = dataElement.getCategoryCombo()
+                    .getOptionCombos();
+
                 for ( DataElementCategoryOptionCombo categoryOptionCombo : categoryOptionCombos )
                 {
                     for ( OrganisationUnit unit : units )
                     {
-                        outlierCollection.addAll( findOutliers( unit, dataElement, categoryOptionCombo, periods, stdDevFactor ) );
+                        outlierCollection.addAll( findOutliers( unit, dataElement, categoryOptionCombo, periods,
+                            stdDevFactor ) );
                     }
                 }
             }
@@ -98,23 +101,23 @@
     // Supportive methods
     // -------------------------------------------------------------------------
 
-    private Collection<DeflatedDataValue> findOutliers( OrganisationUnit organisationUnit, DataElement dataElement, 
+    private Collection<DeflatedDataValue> findOutliers( OrganisationUnit organisationUnit, DataElement dataElement,
         DataElementCategoryOptionCombo categoryOptionCombo, Collection<Period> periods, Double stdDevFactor )
     {
         Double stdDev = dataAnalysisStore.getStandardDeviation( dataElement, categoryOptionCombo, organisationUnit );
-                
-        if ( !isEqual( stdDev, 0.0 ) ) // No values found or no outliers exist when 0.0
+
+        if ( !isEqual( stdDev, 0.0 ) ) // No values found or no outliers exist
+        // when 0.0
         {
             Double avg = dataAnalysisStore.getAverage( dataElement, categoryOptionCombo, organisationUnit );
-            
-            double deviation = stdDev * stdDevFactor;        
+
+            double deviation = stdDev * stdDevFactor;
             Double lowerBound = avg - deviation;
             Double upperBound = avg + deviation;
-            
-            return dataAnalysisStore.getDeflatedDataValues( dataElement, categoryOptionCombo, periods, 
-                organisationUnit, lowerBound.intValue(), upperBound.intValue() );            
+            return dataAnalysisStore.getDeflatedDataValues( dataElement, categoryOptionCombo, periods,
+                organisationUnit, lowerBound.intValue(), upperBound.intValue() );
         }
-        
+
         return new ArrayList<DeflatedDataValue>();
     }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2010-04-05 15:47:53 +0000
+++ dhis-2/dhis-services/dhis-service-core/src/main/resources/META-INF/dhis/beans.xml	2010-04-07 12:27:42 +0000
@@ -379,6 +379,12 @@
       ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore"/>  
   </bean>
   
+  <bean id="org.hisp.dhis.dataanalysis.MinMaxValuesGeneratingService" 
+    class="org.hisp.dhis.dataanalysis.MinMaxValuesGeneratingService">
+    <property name="dataAnalysisStore"
+      ref="org.hisp.dhis.dataanalysis.jdbc.DataAnalysisStore"/>
+  </bean>
+  
   <bean id="dataAnalysisServiceProvider"
 	class="org.hisp.dhis.common.ServiceProvider">
 	<property name="services">
@@ -399,6 +405,10 @@
                 <key><value>followup</value></key>
                 <ref bean="org.hisp.dhis.dataanalysis.FollowupAnalysisService"/>
             </entry>
+            <!-- <entry>
+                <key><value>minmax</value></key>
+                <ref bean="org.hisp.dhis.dataanalysis.MinMaxValuesGeneratingService"/>
+            </entry> -->
 		</map>		
 	</property>
   </bean>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml	2010-02-01 15:30:27 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/META-INF/dhis/beans.xml	2010-04-07 12:27:42 +0000
@@ -268,15 +268,16 @@
 			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
 	</bean>
 
-    <!-- Duplicate data elimination -->
-	
+	<!-- Duplicate data elimination -->
+
 	<bean
 		id="org.hisp.dhis.dataadmin.action.duplicatedataelimination.EliminateDuplicateDataAction"
 		class="org.hisp.dhis.dataadmin.action.duplicatedataelimination.EliminateDuplicateDataAction"
 		scope="prototype">
 		<property name="dataMergeService" ref="org.hisp.dhis.datamerge.DataMergeService" />
 		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
-		<property name="categoryService" ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
+		<property name="categoryService"
+			ref="org.hisp.dhis.dataelement.DataElementCategoryService" />
 	</bean>
 
 	<!--  Data Element Zero Value Storage Management -->
@@ -303,19 +304,133 @@
 	</bean>
 
 	<!-- Data archive -->
-	
-	<bean
-		id="org.hisp.dhis.dataadmin.action.dataarchive.ArchiveDataAction"
+
+	<bean id="org.hisp.dhis.dataadmin.action.dataarchive.ArchiveDataAction"
 		class="org.hisp.dhis.dataadmin.action.dataarchive.ArchiveDataAction"
 		scope="prototype">
-		<property name="dataArchiveService" ref="org.hisp.dhis.dataarchive.DataArchiveService"/>
-	</bean>
-
-    <bean
-        id="org.hisp.dhis.dataadmin.action.dataarchive.GetNumberOfOverlapsAction"
-        class="org.hisp.dhis.dataadmin.action.dataarchive.GetNumberOfOverlapsAction"
-        scope="prototype">
-        <property name="dataArchiveService" ref="org.hisp.dhis.dataarchive.DataArchiveService"/>
-    </bean>
+		<property name="dataArchiveService" ref="org.hisp.dhis.dataarchive.DataArchiveService" />
+	</bean>
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.dataarchive.GetNumberOfOverlapsAction"
+		class="org.hisp.dhis.dataadmin.action.dataarchive.GetNumberOfOverlapsAction"
+		scope="prototype">
+		<property name="dataArchiveService" ref="org.hisp.dhis.dataarchive.DataArchiveService" />
+	</bean>
+
+	<!-- Min/Max validation -->
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.GetMinMaxValidationParamsAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.GetMinMaxValidationParamsAction"
+		scope="prototype">
+		<property name="dataSetService" ref="org.hisp.dhis.dataset.DataSetService" />
+		<property name="organisationUnitService"
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="selectionTreeManager"
+			ref="org.hisp.dhis.oust.manager.SelectionTreeManager" />
+	</bean>
+
+	<bean id="org.hisp.dhis.dataadmin.action.minmaxvalidation.SetupTreeAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.SetupTreeAction"
+		scope="prototype">
+		<property name="selectionTreeManager">
+			<ref bean="org.hisp.dhis.oust.manager.SelectionTreeManager" />
+		</property>
+		<property name="dataSetService">
+			<ref bean="org.hisp.dhis.dataset.DataSetService" />
+		</property>
+	</bean>
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.MinMaxGeneratingAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.MinMaxGeneratingAction">
+		<property name="organisationUnitSelectionManager">
+			<ref bean="org.hisp.dhis.ouwt.manager.OrganisationUnitSelectionManager" />
+		</property>
+		<property name="dataSetService">
+			<ref bean="org.hisp.dhis.dataset.DataSetService" />
+		</property>
+		<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
+		<property name="minMaxValuesGeneratingService"
+			ref="org.hisp.dhis.dataanalysis.MinMaxValuesGeneratingService" />
+		<property name="minMaxDataElementService"
+			ref="org.hisp.dhis.minmax.MinMaxDataElementService" />
+		<property name="systemSettingManager">
+			<ref bean="org.hisp.dhis.options.SystemSettingManager" />
+		</property>
+	</bean>
+
+	<!-- Min/Max validation - Factor -->
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.GetFactoryAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.GetFactoryAction">
+		<property name="systemSettingManager">
+			<ref bean="org.hisp.dhis.options.SystemSettingManager" />
+		</property>
+	</bean>
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.SaveFactoryAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.SaveFactoryAction">
+		<property name="systemSettingManager">
+			<ref bean="org.hisp.dhis.options.SystemSettingManager" />
+		</property>
+	</bean>
+
+	<!-- Min/Max validation - Organisation Unit tree -->
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.SelectLevelAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.SelectLevelAction"
+		scope="prototype">
+		<property name="selectionTreeManager">
+			<ref bean="org.hisp.dhis.oust.manager.SelectionTreeManager" />
+		</property>
+	</bean>
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.SelectOrganisationUnitGroupAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.SelectOrganisationUnitGroupAction"
+		scope="prototype">
+		<property name="selectionTreeManager">
+			<ref bean="org.hisp.dhis.oust.manager.SelectionTreeManager" />
+		</property>
+		<property name="organisationUnitGroupService">
+			<ref bean="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+		</property>
+	</bean>
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectAllAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectAllAction"
+		scope="prototype">
+		<property name="selectionTreeManager">
+			<ref bean="org.hisp.dhis.oust.manager.SelectionTreeManager" />
+		</property>
+	</bean>
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectLevelAction"
+		class="oorg.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectLevelAction"
+		scope="prototype">
+		<property name="selectionTreeManager">
+			<ref bean="org.hisp.dhis.oust.manager.SelectionTreeManager" />
+		</property>
+	</bean>
+
+	<bean
+		id="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectOrganisationUnitGroupAction"
+		class="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectOrganisationUnitGroupAction"
+		scope="prototype">
+		<property name="selectionTreeManager">
+			<ref bean="org.hisp.dhis.oust.manager.SelectionTreeManager" />
+		</property>
+		<property name="organisationUnitGroupService">
+			<ref bean="org.hisp.dhis.organisationunit.OrganisationUnitGroupService" />
+		</property>
+	</bean>
+
 
 </beans>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties	2010-02-18 15:41:11 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/org/hisp/dhis/dataadmin/i18n_module.properties	2010-04-07 12:27:42 +0000
@@ -178,4 +178,21 @@
 unarchive															= Unarchive
 archiving															= Archiving
 unarchiving															= Unarchiving
-done_number_of_values												= done. Number of archived values is now
\ No newline at end of file
+done_number_of_values												= done. Number of archived values is now
+min_max_validation 													= Min/Max Validation
+intro_min_max_validation  											= Generate min/max values for any combination of selected organisation unit/dataset.
+start_date															= Start date
+end_date															= End date
+available_dataset													= Available Datasets
+organisation_unit													= Organisation unit
+generate_min_max_value_success										= Generate min max value successfully.
+not_choose_dataset													= Please specify a dataset.
+not_choose_organisation												= Please specify a organisation.
+unselect_all														= Unselect All
+select_all_in_group													= Select all in group
+unselect_all_in_group												= Unselect all in group
+generate_min_max_values												= Generate Min/Max values
+generate_values_success											    = Generate values successfully.
+set_factor															= Set Factor
+factor																= Factor
+save_factory_success												= Save factory successfully
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml	2010-03-12 12:03:07 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/resources/struts.xml	2010-04-07 12:27:42 +0000
@@ -199,17 +199,17 @@
 
 		<!-- Data integrity -->
 
-		<action name="displayDataIntegrityForm"
-			class="org.hisp.dhis.dataadmin.action.NoAction">
+		<action name="displayDataIntegrityForm" class="org.hisp.dhis.dataadmin.action.NoAction">
 			<result name="success" type="velocity">/main.vm</result>
 			<param name="page">/dhis-web-maintenance-dataadmin/dataIntegrityForm.vm</param>
 			<param name="menu">/dhis-web-maintenance-dataadmin/menu.vm</param>
 			<param name="javascripts">javascript/dataIntegrity.js</param>
 		</action>
-		
+
 		<action name="getDataIntegrity"
 			class="org.hisp.dhis.dataadmin.action.dataintegrity.GetDataIntegrityAction">
-			<result name="success" type="velocity-json">/dhis-web-maintenance-dataadmin/responseDataIntegrity.vm</result>
+			<result name="success" type="velocity-json">
+				/dhis-web-maintenance-dataadmin/responseDataIntegrity.vm</result>
 		</action>
 
 		<!-- Statistics -->
@@ -311,18 +311,18 @@
 		</action>
 
 		<!-- Duplicate data elimination -->
-		
+
 		<action name="displayDuplicateDataEliminationForm" class="org.hisp.dhis.dataadmin.action.NoAction">
 			<result name="success" type="velocity">/main.vm</result>
-            <param name="page">/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm</param>
-            <param name="menu">/dhis-web-maintenance-dataadmin/menu.vm</param>
-            <param name="javascripts">javascript/duplicateDataElimination.js</param>
-        </action>
+			<param name="page">/dhis-web-maintenance-dataadmin/duplicateDataEliminationForm.vm</param>
+			<param name="menu">/dhis-web-maintenance-dataadmin/menu.vm</param>
+			<param name="javascripts">javascript/duplicateDataElimination.js</param>
+		</action>
 
-		<action name="eliminateDuplicateData" 
+		<action name="eliminateDuplicateData"
 			class="org.hisp.dhis.dataadmin.action.duplicatedataelimination.EliminateDuplicateDataAction">
 			<result name="success" type="redirect">
-                displayDuplicateDataEliminationForm.action</result>
+				displayDuplicateDataEliminationForm.action</result>
 		</action>
 
 		<!-- Data Element Zero Value Storage Management -->
@@ -348,23 +348,112 @@
 
 		<!-- Data archive -->
 
-		<action name="displayDataArchiveForm"
-			class="org.hisp.dhis.dataadmin.action.NoAction">
+		<action name="displayDataArchiveForm" class="org.hisp.dhis.dataadmin.action.NoAction">
 			<result name="success" type="velocity">/main.vm</result>
-            <param name="page">/dhis-web-maintenance-dataadmin/dataArchiveForm.vm</param>
-            <param name="menu">/dhis-web-maintenance-dataadmin/menu.vm</param>
-            <param name="javascripts">javascript/dataArchive.js</param>
+			<param name="page">/dhis-web-maintenance-dataadmin/dataArchiveForm.vm</param>
+			<param name="menu">/dhis-web-maintenance-dataadmin/menu.vm</param>
+			<param name="javascripts">javascript/dataArchive.js</param>
 		</action>
 
 		<action name="archiveData"
 			class="org.hisp.dhis.dataadmin.action.dataarchive.ArchiveDataAction">
-			<result name="success" type="velocity-json">/dhis-web-maintenance-dataadmin/responseNumber.vm</result>
+			<result name="success" type="velocity-json">
+				/dhis-web-maintenance-dataadmin/responseNumber.vm</result>
 		</action>
 
 		<action name="getNumberOfOverlaps"
 			class="org.hisp.dhis.dataadmin.action.dataarchive.GetNumberOfOverlapsAction">
-			<result name="success" type="velocity-json">/dhis-web-maintenance-dataadmin/responseNumber.vm</result>
-        </action>
+			<result name="success" type="velocity-json">
+				/dhis-web-maintenance-dataadmin/responseNumber.vm</result>
+		</action>
+
+		<!-- Min/Max validation -->
+		
+		<action name="getMinMaxValidationParams"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.MinMaxGeneratingAction">
+			<result name="success" type="chain">
+				getMinMaxValidationParamsChain</result>
+			<result name="input" type="chain">
+				getMinMaxValidationParamsChain</result>
+		</action>
+
+		<action name="getMinMaxValidationParamsChain"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.GetMinMaxValidationParamsAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-maintenance-dataadmin/minMaxValidation.vm</param>
+			<param name="menu">/dhis-web-maintenance-dataadmin/menu.vm</param>
+			<param name="stylesheets">style/ui.all.css</param>
+			<param name="javascripts">
+				../dhis-web-commons/oust/oust.js,
+				../dhis-web-commons/util/jquery-ui.js,
+				../dhis-web-commons/util/validate/jquery.validate.js,
+				../dhis-web-commons/util/jquery.metadata.js,
+				../dhis-web-commons/util/validate/additional-methods.js,
+				../dhis-web-commons/util/validate/messages_locale.js,
+				../dhis-web-commons/calendar/calendar.js,
+				../dhis-web-commons/calendar/calendar-lang.js,
+				../dhis-web-commons/calendar/calendar-setup.js,
+				javascript/minMaxValidation.js
+            </param>
+		</action>
+
+		<!-- Min/Max validation - Factor -->
+
+		<action name="getFactor"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.GetFactoryAction">
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-maintenance-dataadmin/factor.vm</param>
+			<param name="menu">/dhis-web-maintenance-dataadmin/menu.vm</param>
+			<param name="stylesheets">style/ui.all.css</param>
+			<param name="javascripts">
+				../dhis-web-commons/oust/oust.js,
+				../dhis-web-commons/util/jquery-ui.js,
+				../dhis-web-commons/util/validate/jquery.validate.js,
+				../dhis-web-commons/util/jquery.metadata.js,
+				../dhis-web-commons/util/validate/additional-methods.js,
+				../dhis-web-commons/util/validate/messages_locale.js,
+				javascript/minMaxValidation.js
+            </param>
+		</action>
+
+		<action name="saveFactor"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.SaveFactoryAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-maintenance-dataadmin/responseSuccess.vm</result>
+		</action>
+
+		<!-- Min/Max validation - Organisation units -->
+
+		<action name="selectLevel"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.SelectLevelAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-maintenance-dataadmin/responseSuccess.vm</result>
+		</action>
+
+		<action name="unselectLevel"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectLevelAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-maintenance-dataadmin/responseSuccess.vm</result>
+		</action>
+
+		<action name="selectOrganisationUnitGroup"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.SelectOrganisationUnitGroupAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-maintenance-dataadmin/responseSuccess.vm</result>
+		</action>
+
+		<action name="unselectOrganisationUnitGroup"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectOrganisationUnitGroupAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-maintenance-dataadmin/responseSuccess.vm</result>
+		</action>
+
+		<action name="unselectAll"
+			class="org.hisp.dhis.dataadmin.action.minmaxvalidation.UnselectAllAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-maintenance-dataadmin/responseSuccess.vm</result>
+		</action>
 
 	</package>
 </struts>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/index.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/index.vm	2010-02-01 15:30:27 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/index.vm	2010-04-07 12:27:42 +0000
@@ -12,5 +12,6 @@
     #introListItem( "viewStatistics.action" "data_statistics" )
     #introListItem( "displayLockingForm.action" "data_locking" )
     #introListItem( "zeroValueStorageManagement.action" "zero_storage_management" ) 
+	#introListItem( "getMinMaxValidationParams.action" "min_max_validation" ) 
     #introListItem( "showCache.action" "cache_statistics" )
 </ul>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/menu.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/menu.vm	2010-02-01 15:30:27 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/menu.vm	2010-04-07 12:27:42 +0000
@@ -11,8 +11,14 @@
 		<li><a href="viewStatistics.action">$i18n.getString( "data_statistics" )&nbsp;</a></li>
         <li><a href="displayLockingForm.action">$i18n.getString( "data_locking" )&nbsp;</a></li>
 		<li><a href="zeroValueStorageManagement.action">$i18n.getString( "zero_storage_management" )&nbsp;</a></li>
+		</ul>
+		
+<h2>$i18n.getString( "min_max_validation" )&nbsp;</h2>
+	<ul>
+		<li><a href="getFactor.action">$i18n.getString( "set_factor")&nbsp;</a></li>
+		<li><a href="getMinMaxValidationParams.action">$i18n.getString( "generate_min_max_values")&nbsp;</a></li>
 	</ul>
-
+	
 <h2>$i18n.getString( "system_administration" )&nbsp;</h2>
     <ul>
         <li><a href="showCache.action">$i18n.getString( "cache_statistics" )&nbsp;</a></li>


Follow ups