← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 9978: Scheduling, made sure tasks are executed in correct order

 

------------------------------------------------------------
revno: 9978
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2012-04-04 00:10:58 +0200
message:
  Scheduling, made sure tasks are executed in correct order
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/ListMap.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java
  dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DefaultSchedulingManager.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/SchedulingManager.java
  dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/scheduling/SchedulingManagerTest.java
  dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/CollectionUtils.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/scheduling/ScheduleTasksAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/scheduling.js
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewScheduledTasks.vm
  dhis-2/dhis-web/pom.xml


--
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/common/ListMap.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/ListMap.java	2013-02-26 18:33:01 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/common/ListMap.java	2012-04-03 22:10:58 +0000
@@ -37,12 +37,22 @@
 public class ListMap<T, V>
     extends HashMap<T, List<V>>
 {
+    public ListMap()
+    {
+        super();
+    }
+    
+    public ListMap( ListMap<T, V> listMap )
+    {
+        super( listMap );
+    }
+    
     public List<V> putValue( T key, V value )
     {
         List<V> list = this.get( key );
         list = list == null ? new ArrayList<V>() : list;        
         list.add( value );
-        this.put( key, list );        
+        super.put( key, list );        
         return null;
     }
 }

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java	2012-12-07 21:28:50 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/setting/SystemSettingManager.java	2012-04-03 22:10:58 +0000
@@ -63,7 +63,7 @@
     final String KEY_EMAIL_USERNAME = "keyEmailUsername";
     final String KEY_EMAIL_PASSWORD = "keyEmailPassword";
     final String KEY_SCHEDULED_PERIOD_TYPES = "keyScheduledPeriodTypes";
-    final String KEY_SCHEDULED_TASKS = "keyScheduledTasks";
+    final String KEY_SCHEDULED_TASKS = "keySchedTasks";
     final String KEY_ORGUNITGROUPSET_AGG_LEVEL = "orgUnitGroupSetAggregationLevel";
     final String KEY_SMS_CONFIG = "SMS_CONFIG";
     final String KEY_CACHE_STRATEGY = "keyCacheStrategy";

=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java	2013-03-01 17:59:05 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/resourcetable/DefaultResourceTableService.java	2012-04-03 22:10:58 +0000
@@ -66,6 +66,7 @@
 import org.hisp.dhis.resourcetable.statement.CreateIndicatorGroupSetTableStatement;
 import org.hisp.dhis.resourcetable.statement.CreateOrganisationUnitGroupSetTableStatement;
 import org.hisp.dhis.sqlview.SqlViewService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author Lars Helge Overland
@@ -144,17 +145,18 @@
     // All
     // -------------------------------------------------------------------------
 
+    @Transactional
     public void generateAll()
     {
         sqlViewService.dropAllSqlViewTables();
-        
+
+        generateOrganisationUnitStructures();
         generateCategoryOptionComboNames();
         generateCategoryTable();
         generateDataElementGroupSetTable();
         generateDataElementTable();
         generateIndicatorGroupSetTable();
         generateOrganisationUnitGroupSetTable();
-        generateOrganisationUnitStructures();
         generatePeriodTable();
         
         sqlViewService.createAllViewTables();
@@ -223,6 +225,11 @@
         BatchHandler<Object> batchHandler = batchHandlerFactory.createBatchHandler( GenericBatchHandler.class ).
             setTableName( ResourceTableStore.TABLE_NAME_CATEGORY_OPTION_COMBO_NAME ).init();
         
+        
+        //TODO
+        
+        
+        
         for ( DataElementCategoryOptionCombo combo : combos )
         {
             final List<String> values = new ArrayList<String>();

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DefaultSchedulingManager.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DefaultSchedulingManager.java	2013-03-04 20:41:25 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DefaultSchedulingManager.java	2012-04-03 22:10:58 +0000
@@ -87,9 +87,9 @@
         }
     }
     
-    public void scheduleTasks( Map<String, String> keyCronMap )
+    public void scheduleTasks( ListMap<String, String> cronKeyMap )
     {
-        systemSettingManager.saveSystemSetting( KEY_SCHEDULED_TASKS, new HashMap<String, String>( keyCronMap ) );
+        systemSettingManager.saveSystemSetting( KEY_SCHEDULED_TASKS, new ListMap<String, String>( cronKeyMap ) );
         
         scheduleTasks();
     }
@@ -101,42 +101,10 @@
         scheduler.stopAllTasks();
     }
     
-    public void executeTasks()
-    {
-        ListMap<String, String> cronKeyMap = getCronKeyMap();
-        
-        for ( String cron : cronKeyMap.keySet() )
-        {
-            ScheduledTasks scheduledTasks = getScheduledTasksForCron( cron, cronKeyMap );
-            
-            if ( !scheduledTasks.isEmpty() )
-            {
-                scheduler.executeTask( scheduledTasks );
-            }
-        }
-    }
-
+    @SuppressWarnings("unchecked")
     public ListMap<String, String> getCronKeyMap()
     {
-        Map<String, String> keyCronMap = getKeyCronMap();
-        
-        ListMap<String, String> cronKeyMap = new ListMap<String, String>();
-        
-        for ( String key : keyCronMap.keySet() )
-        {
-            String cron = keyCronMap.get( key );
-            
-            cronKeyMap.putValue( cron, key );
-        }
-        
-        return cronKeyMap;
-    }
-
-    public boolean isScheduled( String key )
-    {
-        Map<String, String> keyCronMap = getKeyCronMap();
-        
-        return keyCronMap.get( key ) != null;
+        return (ListMap<String, String>) systemSettingManager.getSystemSetting( KEY_SCHEDULED_TASKS, new ListMap<String, String>() );
     }
     
     public String getTaskStatus()
@@ -172,13 +140,4 @@
         
         return scheduledTasks;
     }
-
-    /**
-     * Returns a mapping between task keys and cron expressions.
-     */
-    @SuppressWarnings("unchecked")
-    private Map<String, String> getKeyCronMap()
-    {
-        return (Map<String, String>) systemSettingManager.getSystemSetting( KEY_SCHEDULED_TASKS, new HashMap<String, String>() );
-    }
 }

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/SchedulingManager.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/SchedulingManager.java	2013-03-04 20:41:25 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/SchedulingManager.java	2012-04-03 22:10:58 +0000
@@ -27,8 +27,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-import java.util.Map;
-
 import org.hisp.dhis.common.ListMap;
 
 /**
@@ -51,11 +49,9 @@
     /**
      * Schedule the given tasks.
      * 
-     * @param keyCronMap map of tasks to be scheduled. The map key is the key of
-     *        the task, i.e. the task bean identifier. The map value is the cron 
-     *        expression to use when scheduling the task.
+     * @param cronKeyMap a mapping of cron expressions and task keys.
      */
-    void scheduleTasks( Map<String, String> keyCronMap );
+    void scheduleTasks( ListMap<String, String> cronKeyMap );
     
     /**
      * Stop all tasks.
@@ -63,18 +59,11 @@
     void stopTasks();
     
     /**
-     * Execute all tasks immediately.
-     */
-    void executeTasks();
-    
-    /**
      * Get a mapping of cron expressions and list of task keys for all scheduled
      * tasks.
      */
     ListMap<String, String> getCronKeyMap();
     
-    boolean isScheduled( String key );
-    
     /**
      * Gets the task status. Can be STATUS_RUNNING, STATUS_DONE, STATUS_STOPPED,
      * STATUS_NOT_STARTED.

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/scheduling/SchedulingManagerTest.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/scheduling/SchedulingManagerTest.java	2013-03-04 20:41:25 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/scheduling/SchedulingManagerTest.java	2012-04-03 22:10:58 +0000
@@ -30,15 +30,11 @@
 import static org.hisp.dhis.scheduling.SchedulingManager.TASK_ANALYTICS_ALL;
 import static org.hisp.dhis.scheduling.SchedulingManager.TASK_DATAMART_LAST_6_MONTHS;
 import static org.hisp.dhis.scheduling.SchedulingManager.TASK_RESOURCE_TABLE;
-import static org.hisp.dhis.system.scheduling.Scheduler.CRON_DAILY_0AM;
 import static org.hisp.dhis.system.scheduling.Scheduler.CRON_DAILY_0AM_EXCEPT_SUNDAY;
+import static org.hisp.dhis.system.scheduling.Scheduler.CRON_WEEKLY_SUNDAY_0AM;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-import java.util.HashMap;
-import java.util.Map;
-
 import org.hisp.dhis.DhisSpringTest;
 import org.hisp.dhis.common.ListMap;
 import org.hisp.dhis.system.scheduling.Scheduler;
@@ -57,20 +53,20 @@
     @Test
     public void testScheduleTasks()
     {
-        Map<String, String> keyCronMap = new HashMap<String, String>();
-        keyCronMap.put( TASK_RESOURCE_TABLE, CRON_DAILY_0AM );
-        keyCronMap.put( TASK_ANALYTICS_ALL, CRON_DAILY_0AM );
-        keyCronMap.put( TASK_DATAMART_LAST_6_MONTHS, CRON_DAILY_0AM_EXCEPT_SUNDAY );
+        ListMap<String, String> cronKeyMap = new ListMap<String, String>();
+        cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_RESOURCE_TABLE );
+        cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_ANALYTICS_ALL );
+        cronKeyMap.putValue( CRON_WEEKLY_SUNDAY_0AM, TASK_DATAMART_LAST_6_MONTHS );
                 
-        schedulingManager.scheduleTasks( keyCronMap );
+        schedulingManager.scheduleTasks( cronKeyMap );
         
-        ListMap<String, String> cronKeyMap = schedulingManager.getCronKeyMap();
+        cronKeyMap = schedulingManager.getCronKeyMap();
         
         assertEquals( 2, cronKeyMap.size() );
-        assertTrue( cronKeyMap.containsKey( CRON_DAILY_0AM ) );
         assertTrue( cronKeyMap.containsKey( CRON_DAILY_0AM_EXCEPT_SUNDAY ) );
-        assertEquals( 2, cronKeyMap.get( CRON_DAILY_0AM ).size() );
-        assertEquals( 1, cronKeyMap.get( CRON_DAILY_0AM_EXCEPT_SUNDAY ).size() );
+        assertTrue( cronKeyMap.containsKey( CRON_WEEKLY_SUNDAY_0AM ) );
+        assertEquals( 2, cronKeyMap.get( CRON_DAILY_0AM_EXCEPT_SUNDAY ).size() );
+        assertEquals( 1, cronKeyMap.get( CRON_WEEKLY_SUNDAY_0AM ).size() );
         
         assertEquals( Scheduler.STATUS_RUNNING, schedulingManager.getTaskStatus() );
     }
@@ -78,13 +74,13 @@
     @Test
     public void testStopTasks()
     {
-        Map<String, String> keyCronMap = new HashMap<String, String>();
-        keyCronMap.put( TASK_RESOURCE_TABLE, CRON_DAILY_0AM );
-        keyCronMap.put( TASK_ANALYTICS_ALL, CRON_DAILY_0AM );
+        ListMap<String, String> cronKeyMap = new ListMap<String, String>();
+        cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_RESOURCE_TABLE );
+        cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_ANALYTICS_ALL );
 
         assertEquals( Scheduler.STATUS_NOT_STARTED, schedulingManager.getTaskStatus() );
         
-        schedulingManager.scheduleTasks( keyCronMap );
+        schedulingManager.scheduleTasks( cronKeyMap );
         
         assertEquals( Scheduler.STATUS_RUNNING, schedulingManager.getTaskStatus() );
         
@@ -92,17 +88,4 @@
 
         assertEquals( Scheduler.STATUS_NOT_STARTED, schedulingManager.getTaskStatus() );
     }
-
-    @Test
-    public void testIsScheduled()
-    {
-        Map<String, String> keyCronMap = new HashMap<String, String>();
-        keyCronMap.put( TASK_RESOURCE_TABLE, CRON_DAILY_0AM );
-        keyCronMap.put( TASK_ANALYTICS_ALL, CRON_DAILY_0AM );
-
-        schedulingManager.scheduleTasks( keyCronMap );
-        
-        assertTrue( schedulingManager.isScheduled( TASK_RESOURCE_TABLE ) );
-        assertFalse( schedulingManager.isScheduled( TASK_DATAMART_LAST_6_MONTHS ) );
-    }
 }

=== modified file 'dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/CollectionUtils.java'
--- dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/CollectionUtils.java	2013-01-14 17:31:23 +0000
+++ dhis-2/dhis-support/dhis-support-system/src/main/java/org/hisp/dhis/system/util/CollectionUtils.java	2012-04-03 22:10:58 +0000
@@ -77,4 +77,9 @@
         set1.retainAll( new HashSet<T>( c2 ) );
         return set1;
     }
+    
+    public static <T> Collection<T> emptyIfNull( Collection<T> collection )
+    {
+        return collection != null ? collection : new HashSet<T>();
+    }
 }

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/scheduling/ScheduleTasksAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/scheduling/ScheduleTasksAction.java	2012-04-03 22:01:42 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/java/org/hisp/dhis/dataadmin/action/scheduling/ScheduleTasksAction.java	2012-04-03 22:10:58 +0000
@@ -40,13 +40,14 @@
 import static org.hisp.dhis.system.scheduling.Scheduler.CRON_DAILY_0AM_EXCEPT_SUNDAY;
 import static org.hisp.dhis.system.scheduling.Scheduler.CRON_WEEKLY_SUNDAY_0AM;
 import static org.hisp.dhis.system.scheduling.Scheduler.STATUS_RUNNING;
+import static org.hisp.dhis.system.util.CollectionUtils.emptyIfNull;
 
-import java.util.HashMap;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
+import org.hisp.dhis.common.ListMap;
 import org.hisp.dhis.organisationunit.OrganisationUnitLevel;
 import org.hisp.dhis.organisationunit.OrganisationUnitService;
 import org.hisp.dhis.scheduling.SchedulingManager;
@@ -94,13 +95,6 @@
     // -------------------------------------------------------------------------
     // Input
     // -------------------------------------------------------------------------
-
-    private boolean execute;
-
-    public void setExecute( boolean execute )
-    {
-        this.execute = execute;
-    }
     
     private boolean schedule;
 
@@ -201,11 +195,7 @@
     @SuppressWarnings("unchecked")
     public String execute()
     {
-        if ( execute )
-        {
-            schedulingManager.executeTasks();
-        }
-        else if ( schedule )
+        if ( schedule )
         {
             systemSettingManager.saveSystemSetting( KEY_SCHEDULED_PERIOD_TYPES, (HashSet<String>) scheduledPeriodTypes );
             systemSettingManager.saveSystemSetting( KEY_ORGUNITGROUPSET_AGG_LEVEL, orgUnitGroupSetAggLevel );
@@ -216,16 +206,16 @@
             }
             else
             {
-                Map<String, String> keyCronMap = new HashMap<String, String>();
-
+                ListMap<String, String> cronKeyMap = new ListMap<String, String>();
+                
                 // -------------------------------------------------------------
                 // Resource tables
                 // -------------------------------------------------------------
 
                 if ( STRATEGY_ALL_DAILY.equals( resourceTableStrategy ) )
                 {
-                    keyCronMap.put( TASK_RESOURCE_TABLE, CRON_DAILY_0AM_EXCEPT_SUNDAY );
-                    keyCronMap.put( TASK_RESOURCE_TABLE, CRON_WEEKLY_SUNDAY_0AM );
+                    cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_RESOURCE_TABLE );
+                    cronKeyMap.putValue( CRON_WEEKLY_SUNDAY_0AM, TASK_RESOURCE_TABLE );
                 }
                 
                 // -------------------------------------------------------------
@@ -234,13 +224,13 @@
 
                 if ( STRATEGY_ALL_DAILY.equals( analyticsStrategy ) )
                 {
-                    keyCronMap.put( TASK_ANALYTICS_ALL, CRON_DAILY_0AM_EXCEPT_SUNDAY );
-                    keyCronMap.put( TASK_ANALYTICS_ALL, CRON_WEEKLY_SUNDAY_0AM );
+                    cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_ANALYTICS_ALL );
+                    cronKeyMap.putValue( CRON_WEEKLY_SUNDAY_0AM, TASK_ANALYTICS_ALL );
                 }
                 else if ( STRATEGY_LAST_3_YEARS_DAILY.equals( analyticsStrategy ) )
                 {
-                    keyCronMap.put( TASK_ANALYTICS_LAST_3_YEARS, CRON_DAILY_0AM_EXCEPT_SUNDAY );
-                    keyCronMap.put( TASK_ANALYTICS_LAST_3_YEARS, CRON_WEEKLY_SUNDAY_0AM );
+                    cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_ANALYTICS_LAST_3_YEARS );
+                    cronKeyMap.putValue( CRON_WEEKLY_SUNDAY_0AM, TASK_ANALYTICS_LAST_3_YEARS );
                 }
                 
                 // -------------------------------------------------------------
@@ -249,25 +239,27 @@
                 
                 if ( STRATEGY_LAST_12_DAILY.equals( dataMartStrategy ) )
                 {
-                    keyCronMap.put( TASK_DATAMART_LAST_12_MONTHS, CRON_DAILY_0AM_EXCEPT_SUNDAY );
-                    keyCronMap.put( TASK_DATAMART_LAST_12_MONTHS, CRON_WEEKLY_SUNDAY_0AM );
+                    cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_DATAMART_LAST_12_MONTHS );
+                    cronKeyMap.putValue( CRON_WEEKLY_SUNDAY_0AM, TASK_DATAMART_LAST_12_MONTHS );
                 }
                 else if ( STRATEGY_LAST_6_DAILY_6_TO_12_WEEKLY.equals( dataMartStrategy ) )
                 {
-                    keyCronMap.put( TASK_DATAMART_LAST_6_MONTHS, CRON_DAILY_0AM_EXCEPT_SUNDAY );
-                    keyCronMap.put( TASK_DATAMART_FROM_6_TO_12_MONTS, CRON_WEEKLY_SUNDAY_0AM );
+                    cronKeyMap.putValue( CRON_DAILY_0AM_EXCEPT_SUNDAY, TASK_DATAMART_LAST_6_MONTHS );
+                    cronKeyMap.putValue( CRON_WEEKLY_SUNDAY_0AM, TASK_DATAMART_FROM_6_TO_12_MONTS );
                 }
                 
-                schedulingManager.scheduleTasks( keyCronMap );
+                schedulingManager.scheduleTasks( cronKeyMap );
             }
         }
         else
         {
+            Collection<String> keys = emptyIfNull( schedulingManager.getCronKeyMap().get( CRON_DAILY_0AM_EXCEPT_SUNDAY ) );
+            
             // -----------------------------------------------------------------
             // Resource tables
             // -----------------------------------------------------------------
 
-            if ( schedulingManager.isScheduled( TASK_RESOURCE_TABLE ) )
+            if ( keys.contains( TASK_RESOURCE_TABLE ) )
             {
                 resourceTableStrategy = STRATEGY_ALL_DAILY;
             }
@@ -276,11 +268,11 @@
             // Analytics
             // -----------------------------------------------------------------
 
-            if ( schedulingManager.isScheduled( TASK_ANALYTICS_ALL ) )
+            if ( keys.contains( TASK_ANALYTICS_ALL ) )
             {
                 analyticsStrategy = STRATEGY_ALL_DAILY;
             }
-            else if ( schedulingManager.isScheduled( TASK_ANALYTICS_LAST_3_YEARS ) )
+            else if ( keys.contains( TASK_ANALYTICS_LAST_3_YEARS ) )
             {
                 analyticsStrategy = STRATEGY_LAST_3_YEARS_DAILY;
             }
@@ -289,11 +281,11 @@
             // Data mart
             // -----------------------------------------------------------------
 
-            if ( schedulingManager.isScheduled( TASK_DATAMART_LAST_12_MONTHS ) )
+            if ( keys.contains( TASK_DATAMART_LAST_12_MONTHS ) )
             {
                 dataMartStrategy = STRATEGY_LAST_12_DAILY;
             }
-            else if ( schedulingManager.isScheduled( TASK_DATAMART_LAST_6_MONTHS ) )
+            else if ( keys.contains( TASK_DATAMART_LAST_6_MONTHS ) )
             {
                 dataMartStrategy = STRATEGY_LAST_6_DAILY_6_TO_12_WEEKLY;
             }            

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/scheduling.js'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/scheduling.js	2012-05-08 15:55:59 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/javascript/scheduling.js	2012-04-03 22:10:58 +0000
@@ -4,12 +4,10 @@
 	if ( $( '#isRunning' ).val() == 'true' )
 	{
 		$( '.scheduling' ).attr( 'disabled', 'disabled' );
-		$( '#executeButton' ).removeAttr( 'disabled' );
 	}
 	else
 	{
 		$( '.scheduling' ).removeAttr( 'disabled' );
-		$( '#executeButton' ).attr( 'disabled', 'disabled' );
 	}
 } );
 
@@ -18,13 +16,3 @@
 	$( '.scheduling' ).removeAttr( 'disabled' );
 	$( '#schedulingForm' ).submit();
 }
-
-function executeTasks()
-{
-	var ok = confirm( i18n_execute_tasks_confirmation );
-	
-	if ( ok )
-	{
-		$.get( 'scheduleTasks.action?execute=true' );
-	}
-}
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewScheduledTasks.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewScheduledTasks.vm	2013-03-04 20:41:25 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-dataadmin/src/main/webapp/dhis-web-maintenance-dataadmin/viewScheduledTasks.vm	2012-04-03 22:10:58 +0000
@@ -1,6 +1,3 @@
-<script type="text/javascript">
-    var i18n_execute_tasks_confirmation = '$encoder.jsEscape( $i18n.getString( "execute_tasks_confirmation" ), "'" )';
-</script>
 
 <h3>$i18n.getString( "scheduling_management" ) #openHelp( "scheduling" )</h3>
 
@@ -17,7 +14,7 @@
 <div class="setting">
 <select id="resourceTableStrategy" name="resourceTableStrategy" class="scheduling">
 	<option value="never">$i18n.getString( "never" )</option>
-	<option value="allDaily"#if( $resourceTableStrategy && $resourceTableStrategy == "allDaily" ) selected="selected"#end>$i18n.getString( "daily" )</option>
+	<option value="allDaily"#if( $resourceTableStrategy && $resourceTableStrategy == "allDaily" ) selected="selected"#end>$i18n.getString( "all_daily" )</option>
 </select>
 </div>
 
@@ -80,7 +77,6 @@
 	value="$i18n.getString( 'start' )"
 	#end
 	/>
-	<input type="button" id="executeButton" style="width:140px" onclick="executeTasks()" value="$i18n.getString( 'execute_now' )" />
 </div>
 
 </form>

=== modified file 'dhis-2/dhis-web/pom.xml'
--- dhis-2/dhis-web/pom.xml	2013-01-14 12:08:30 +0000
+++ dhis-2/dhis-web/pom.xml	2012-04-03 22:10:58 +0000
@@ -14,6 +14,9 @@
   <modules>
     <module>dhis-web-commons</module>
     <module>dhis-web-commons-resources</module>
+    <module>dhis-web-api-mobile</module>
+    <module>dhis-web-api</module>
+    <module>dhis-web-api-fred</module>
     <module>dhis-web-maintenance</module>
     <module>dhis-web-dataentry</module>
     <module>dhis-web-importexport</module>
@@ -24,13 +27,10 @@
     <module>dhis-web-pivot</module>
     <module>dhis-web-dashboard-integration</module>
     <module>dhis-web-caseentry</module>
-    <module>dhis-web-api</module>
-    <module>dhis-web-api-fred</module>
-    <module>dhis-web-api-mobile</module>
     <module>dhis-web-light</module>
     <module>dhis-web-mobile</module>
+    <module>dhis-web-sms</module>
     <module>dhis-web-portal</module>
-    <module>dhis-web-sms</module>
   </modules>
   <build>
     <plugins>