package org.ei.drishti.scheduler; import org.ei.drishti.common.util.DateTimeUtil; import org.motechproject.scheduler.MotechSchedulerService; import org.motechproject.scheduler.domain.MotechEvent; import org.motechproject.scheduler.domain.RepeatingSchedulableJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Date; import static org.joda.time.DateTimeConstants.MILLIS_PER_MINUTE; @Component public class AggregateReportsScheduler { private static Logger logger = LoggerFactory.getLogger(AggregateReportsScheduler.class.toString()); public static final String SUBJECT = "REPORT_AGGREGATOR_SCHEDULE"; public static final int START_DELAY_IN_MINUTES = 10; public static long REPEAT_INTERVAL_IN_MINUTES = 10L; private MotechSchedulerService schedulerService; @Autowired public AggregateReportsScheduler(@Value("#{drishti['batch.update.time.interval']}") long batchUpdateTimeInterval, MotechSchedulerService schedulerService) { this.schedulerService = schedulerService; REPEAT_INTERVAL_IN_MINUTES = batchUpdateTimeInterval; } public void startTimedScheduler() { logger.info("Scheduling report aggregator job..."); Date startTime = DateTimeUtil.now().plusMinutes(START_DELAY_IN_MINUTES).toDate(); MotechEvent event = new MotechEvent(SUBJECT); RepeatingSchedulableJob job = new RepeatingSchedulableJob(event, startTime, null, REPEAT_INTERVAL_IN_MINUTES * MILLIS_PER_MINUTE); schedulerService.safeScheduleRepeatingJob(job); } }