Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

package in.shop2020.catalog.util;

import java.util.Calendar;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class ReportSenderScheduler implements ServletContextListener {

        private ScheduledExecutorService scheduler;

        @Override
        public void contextDestroyed(ServletContextEvent arg0) {
                scheduler.shutdownNow();
        }

        @Override
        public void contextInitialized(ServletContextEvent arg0) {
                Calendar calendarNow = Calendar.getInstance();
                Calendar calendarScheduled = Calendar.getInstance();
                int diff = Calendar.MONDAY - calendarNow.get(Calendar.DAY_OF_WEEK);
                if (!(diff > 0)) {
                        diff += 7;
                }
                calendarScheduled.add(Calendar.DAY_OF_MONTH, diff);
                calendarScheduled.set(Calendar.HOUR, 6);
                calendarScheduled.set(Calendar.MINUTE, 0);
                calendarScheduled.set(Calendar.AM_PM, Calendar.AM);

                scheduler = Executors.newSingleThreadScheduledExecutor();
                //Scheduled to run on every Monday 6am.
                scheduler.scheduleAtFixedRate(new ReportSender(), calendarScheduled.getTimeInMillis() - calendarNow.getTimeInMillis(), 7 * 86400*1000,
                                TimeUnit.MILLISECONDS);
        }

}