/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package qa.qcri.aidr.collector.init; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.List; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.ejb.Singleton; import javax.ejb.Startup; import javax.servlet.http.HttpServlet; import org.apache.log4j.Logger; import qa.qcri.aidr.collector.api.FacebookCollectionController; import qa.qcri.aidr.collector.api.TwitterCollectionController; import qa.qcri.aidr.collector.beans.CollectionTask; import qa.qcri.aidr.collector.beans.CollectorStatus; import qa.qcri.aidr.collector.utils.GenericCache; /** * Class responsible of executing tasks at the startup of the application as well as at the shutdown of the application. * @author Imran */ @Singleton @Startup public class CollectorStartStopController extends HttpServlet { private static Logger logger = Logger .getLogger(CollectorStartStopController.class); public CollectorStartStopController() { } @PostConstruct private void startup() { // Startup tasks go here //System.out.println("AIDR-Collector: Starting up..."); logger.info("AIDR-Collector: Starting up..."); // task todo DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); String startDate = dateFormat.format(cal.getTime()); GenericCache.getInstance().setCollectorStatus( new CollectorStatus(startDate, "RUNNING", 0)); logger.info("AIDR-Collector: Startup procedure completed @ " + startDate); } @PreDestroy private void shutdown() { // Shutdown tasks go here //System.out.println("AIDR-Collector: Shutting Down..."); logger.info("AIDR-Collector: Shutting Down..."); List<CollectionTask> collections = GenericCache.getInstance() .getAllRunningCollectionTasks(); TwitterCollectionController twitterCollector = new TwitterCollectionController(); FacebookCollectionController facebookCollector = new FacebookCollectionController(); for (CollectionTask collection : collections) { System.out.println("Stopping " + collection.getCollectionCode()); logger.info("Stopping " + collection.getCollectionCode()); if("Facebook".equalsIgnoreCase(collection.getProvider())) { facebookCollector.stopTask(collection.getCollectionCode()); } else { twitterCollector.stopTask(collection.getCollectionCode()); } try { Thread.sleep(1000); } catch (InterruptedException e) { logger.warn("Error while PreDestroying the collector: " + e.getMessage()); } } //System.out.println("AIDR-Collector: Shutdown procedure completed."); logger.info("AIDR-Collector: Shutdown procedure completed."); } public static CollectorStartStopController getInstance() { return StartUPBeanHolder.INSTANCE; } private static class StartUPBeanHolder { private static final CollectorStartStopController INSTANCE = new CollectorStartStopController(); } }