=== modified file 'dhis-2/dhis-services/dhis-service-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java' --- dhis-2/dhis-services/dhis-service-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java 2011-04-11 15:42:51 +0000 +++ dhis-2/dhis-services/dhis-service-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java 2011-05-14 19:32:53 +0000 @@ -55,6 +55,8 @@ final String KEY_AGGREGATION_STRATEGY = "aggregationStrategy"; final String KEY_COMPLETENESS_OFFSET = "completenessOffset"; final String KEY_PATIENT_EXCEL_TEMPLATE_FILE_NAME = "patientExcelTemplateFileName"; + final String KEY_DATAMART_TASK = "keyDataMartTask"; + final String KEY_DATASETCOMPLETENESS_TASK = "keyDataSetCompletenessTask"; final int DEFAULT_MAX_NUMBER_OF_ATTEMPTS = 20; final int DEFAULT_TIMEFRAME_MINUTES = 1; === added directory 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling' === added 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 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/DefaultSchedulingManager.java 2011-05-14 19:32:53 +0000 @@ -0,0 +1,98 @@ +package org.hisp.dhis.scheduling; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.hisp.dhis.options.SystemSettingManager; +import org.hisp.dhis.system.scheduling.Scheduler; + +public class DefaultSchedulingManager + implements SchedulingManager +{ + private SystemSettingManager systemSettingManager; + + public void setSystemSettingManager( SystemSettingManager systemSettingManager ) + { + this.systemSettingManager = systemSettingManager; + } + + private Scheduler scheduler; + + public void setScheduler( Scheduler scheduler ) + { + this.scheduler = scheduler; + } + + private Map tasks = new HashMap(); + + public void setTasks( Map tasks ) + { + this.tasks = tasks; + } + + // ------------------------------------------------------------------------- + // SchedulingManager implementation + // ------------------------------------------------------------------------- + + public void scheduleTasks() + { + scheduler.scheduleTask( getRunnables(), Scheduler.CRON_NIGHTLY_1AM ); + } + + public void stopTasks() + { + scheduler.stopTask( Runnables.class ); + } + + public void executeTasks() + { + scheduler.executeTask( getRunnables() ); + } + + public String getTaskStatus() + { + return scheduler.getTaskStatus( Runnables.class ); + } + + public Set getRunningTaskKeys() + { + final Set keys = new HashSet(); + + for ( String key : tasks.keySet() ) + { + if ( scheduler.getTaskStatus( tasks.get( key ).getClass() ).equals( Scheduler.STATUS_RUNNING ) ) + { + keys.add( key ); + } + } + + return keys; + } + + // ------------------------------------------------------------------------- + // Supportive methods + // ------------------------------------------------------------------------- + + private Runnables getRunnables() + { + final Runnables runnables = new Runnables(); + + for ( String key : tasks.keySet() ) + { + boolean schedule = (Boolean) systemSettingManager.getSystemSetting( key, false ); + + if ( schedule ) + { + runnables.addRunnable( tasks.get( key ) ); + } + else + { + scheduler.stopTask( tasks.get( key ).getClass() ); + } + } + + return runnables; + } +} === added file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/Runnables.java' --- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/Runnables.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/Runnables.java 2011-05-14 19:32:53 +0000 @@ -0,0 +1,24 @@ +package org.hisp.dhis.scheduling; + +import java.util.ArrayList; +import java.util.List; + +public class Runnables + implements Runnable +{ + private List runnables = new ArrayList(); + + public void addRunnable( Runnable runnable ) + { + this.runnables.add( runnable ); + } + + @Override + public void run() + { + for ( Runnable runnable : runnables ) + { + runnable.run(); + } + } +} === added 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 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/scheduling/SchedulingManager.java 2011-05-14 19:32:53 +0000 @@ -0,0 +1,16 @@ +package org.hisp.dhis.scheduling; + +import java.util.Set; + +public interface SchedulingManager +{ + void scheduleTasks(); + + void stopTasks(); + + void executeTasks(); + + String getTaskStatus(); + + Set getRunningTaskKeys(); +} === modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-04-24 12:47:31 +0000 +++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-05-14 19:32:53 +0000 @@ -293,7 +293,34 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + serviceProvider; - - public void setServiceProvider( ServiceProvider serviceProvider ) - { - this.serviceProvider = serviceProvider; - } - - private DataElementService dataElementService; - - public void setDataElementService( DataElementService dataElementService ) - { - this.dataElementService = dataElementService; - } - - private IndicatorService indicatorService; - - public void setIndicatorService( IndicatorService indicatorService ) - { - this.indicatorService = indicatorService; - } - - private OrganisationUnitService organisationUnitService; - - public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) - { - this.organisationUnitService = organisationUnitService; - } - - private DataSetService dataSetService; - - public void setDataSetService( DataSetService dataSetService ) - { - this.dataSetService = dataSetService; + private SystemSettingManager systemSettingManager; + + public void setSystemSettingManager( SystemSettingManager systemSettingManager ) + { + this.systemSettingManager = systemSettingManager; + } + + private SchedulingManager schedulingManager; + + public void setSchedulingManager( SchedulingManager schedulingManager ) + { + this.schedulingManager = schedulingManager; } // ------------------------------------------------------------------------- @@ -141,31 +101,30 @@ public String execute() { - DataMartTask dataMartTask = new DataMartTask( dataMartService, dataElementService, indicatorService, organisationUnitService ); - DataSetCompletenessTask completenessTask = new DataSetCompletenessTask( serviceProvider.provide( "registration" ), dataSetService, organisationUnitService ); - if ( !statusOnly ) { if ( execute ) { - scheduler.executeTask( dataMartTask ); - scheduler.executeTask( completenessTask ); + schedulingManager.executeTasks(); } - else if ( scheduler.getTaskStatus( DataMartTask.class ).equals( Scheduler.STATUS_RUNNING ) ) + else if ( Scheduler.STATUS_RUNNING.equals( schedulingManager.getTaskStatus() ) ) { - scheduler.stopTask( DataMartTask.class ); - scheduler.stopTask( DataSetCompletenessTask.class ); + systemSettingManager.saveSystemSetting( KEY_DATAMART_TASK, new Boolean( false ) ); + systemSettingManager.saveSystemSetting( KEY_DATASETCOMPLETENESS_TASK, new Boolean( false ) ); + + schedulingManager.stopTasks(); } else { - scheduler.scheduleTask( dataMartTask, Scheduler.CRON_NIGHTLY_2AM ); - scheduler.scheduleTask( completenessTask, Scheduler.CRON_NIGHTLY_1AM ); + systemSettingManager.saveSystemSetting( KEY_DATAMART_TASK, new Boolean( true) ); + systemSettingManager.saveSystemSetting( KEY_DATASETCOMPLETENESS_TASK, new Boolean( true ) ); + + schedulingManager.scheduleTasks(); } } - - status = scheduler.getTaskStatus( DataMartTask.class ); - - running = scheduler.getTaskStatus( DataMartTask.class ).equals( Scheduler.STATUS_RUNNING ); + + status = schedulingManager.getTaskStatus(); + running = Scheduler.STATUS_RUNNING.equals( status ); return SUCCESS; } === modified file 'dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-04-07 13:48:56 +0000 +++ dhis-2/dhis-web/dhis-web-reporting/src/main/resources/META-INF/dhis/beans.xml 2011-05-14 19:32:53 +0000 @@ -472,19 +472,8 @@ - - - - - - - + + @@ -496,10 +485,10 @@ - - - + + +