1 4 package net.javacoding.jspider.core.task; 5 6 import net.javacoding.jspider.core.SpiderContext; 7 import net.javacoding.jspider.core.logging.LogFactory; 8 import net.javacoding.jspider.core.logging.Log; 9 import net.javacoding.jspider.core.task.impl.DefaultSchedulerProvider; 10 import net.javacoding.jspider.core.task.impl.SchedulerMonitorThread; 11 import net.javacoding.jspider.core.util.config.*; 12 13 14 public class SchedulerFactory { 15 16 public static final int DEFAULT_MONITORING_INTERVAL = 1000; 17 18 public Scheduler createScheduler(SpiderContext context) { 19 20 PropertySet props = ConfigurationFactory.getConfiguration().getJSpiderConfiguration(); 21 PropertySet schedulerProps = new MappedPropertySet ( ConfigConstants.CONFIG_SCHEDULER, props); 22 Class providerClass = schedulerProps.getClass(ConfigConstants.CONFIG_SCHEDULER_PROVIDER, DefaultSchedulerProvider.class); 23 Log log = LogFactory.getLog(SchedulerFactory.class); 24 log.info("TaskScheduler provider class is '" + providerClass + "'"); 25 26 try { 27 SchedulerProvider provider = (SchedulerProvider) providerClass.newInstance(); 28 Scheduler scheduler = provider.createScheduler(); 29 PropertySet monitoringProps = new MappedPropertySet(ConfigConstants.CONFIG_SCHEDULER_MONITORING, schedulerProps); 30 if ( monitoringProps.getBoolean(ConfigConstants.CONFIG_SCHEDULER_MONITORING_ENABLED, false ) ) { 31 int interval = monitoringProps.getInteger(ConfigConstants.CONFIG_SCHEDULER_MONITORING_INTERVAL, DEFAULT_MONITORING_INTERVAL); 32 new SchedulerMonitorThread ( scheduler, context.getEventDispatcher(), interval ); 33 } 34 return scheduler; 35 } catch (InstantiationException e) { 36 log.error("InstantiationException on Scheduler", e); 37 return null; 38 } catch (IllegalAccessException e) { 39 log.error("IllegalAccessException on Scheduler", e); 40 return null; 41 } 42 } 43 } 44 | Popular Tags |