package org.ei.drishti.scheduler; import org.joda.time.DateTime; 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 java.util.HashMap; import static org.joda.time.DateTimeConstants.MILLIS_PER_SECOND; @Component public class DrishtiFormScheduler { public static final String SUBJECT = "DRISHTI-FORM-SCHEDULE"; private static final int START_DELAY = 1; private final MotechSchedulerService schedulerService; private static Logger logger = LoggerFactory.getLogger(DrishtiFormScheduler.class.toString()); private long formPollInterval; @Autowired public DrishtiFormScheduler(MotechSchedulerService schedulerService, @Value("#{drishti['form.poll.time.interval']}") Long formPollInterval) { this.schedulerService = schedulerService; this.formPollInterval = formPollInterval; } public void startTimedScheduler() { logger.info("Scheduling Form fetch ..."); Date startTime = DateTime.now().plusMinutes(START_DELAY).toDate(); MotechEvent event = new MotechEvent(SUBJECT, new HashMap<String, Object>()); RepeatingSchedulableJob job = new RepeatingSchedulableJob(event, startTime, null, formPollInterval * MILLIS_PER_SECOND); schedulerService.safeScheduleRepeatingJob(job); } }