use of org.quartz.SimpleTrigger in project openhab1-addons by openhab.
the class CalDavLoaderImpl method startLoading.
public void startLoading() {
if (execService != null) {
return;
}
log.trace("starting execution...");
int i = 0;
for (final CalendarRuntime eventRuntime : EventStorage.getInstance().getEventCache().values()) {
try {
JobDetail job = JobBuilder.newJob().ofType(EventReloaderJob.class).usingJobData(EventReloaderJob.KEY_CONFIG, eventRuntime.getConfig().getKey()).withIdentity(eventRuntime.getConfig().getKey(), JOB_NAME_EVENT_RELOADER).storeDurably().build();
this.scheduler.addJob(job, false);
SimpleTrigger jobTrigger = TriggerBuilder.newTrigger().forJob(job).withIdentity(eventRuntime.getConfig().getKey(), JOB_NAME_EVENT_RELOADER).startAt(DateBuilder.futureDate(10 + i, IntervalUnit.SECOND)).withSchedule(SimpleScheduleBuilder.repeatMinutelyForever(eventRuntime.getConfig().getReloadMinutes())).build();
this.scheduler.scheduleJob(jobTrigger);
log.info("reload job scheduled for: {}", eventRuntime.getConfig().getKey());
} catch (SchedulerException e) {
log.error("cannot schedule calendar-reloader", e);
}
// next event 10 seconds later
i += 10;
}
}
use of org.quartz.SimpleTrigger in project head by mifos.
the class MifosScheduler method schedule.
@Deprecated
public void schedule(final String jobName, Date initialTime, long delay, JobRegistry jobRegistry, final JobRepository jobRepository, Map<String, Object> jobData, ResourcelessTransactionManager transactionManager) throws TaskSystemException {
try {
final TaskletStep step = new TaskletStep();
step.setName(jobName);
Tasklet tasklet = (Tasklet) Class.forName(BATCH_JOB_CLASS_PATH_PREFIX + getHelperName(jobName)).newInstance();
step.setTasklet(tasklet);
step.setJobRepository(jobRepository);
step.setTransactionManager(transactionManager);
step.afterPropertiesSet();
jobRegistry.register(new JobFactory() {
@Override
public Job createJob() {
SimpleJob job = new SimpleJob(jobName + "Job");
job.setJobRepository(jobRepository);
job.setRestartable(true);
job.registerJobExecutionListener(new BatchJobListener());
job.addStep(step);
return job;
}
@Override
public String getJobName() {
return jobName + "Job";
}
});
} catch (Exception e) {
throw new TaskSystemException(e);
}
JobDetailBean jobDetailBean = new JobDetailBean();
jobDetailBean.setJobDataAsMap(jobData);
try {
jobDetailBean.setJobClass(Class.forName(BATCH_JOB_CLASS_PATH_PREFIX + jobName));
} catch (ClassNotFoundException cnfe) {
throw new TaskSystemException(cnfe);
}
jobDetailBean.setName(jobName + "Job");
jobDetailBean.setGroup(Scheduler.DEFAULT_GROUP);
jobDetailBean.afterPropertiesSet();
SimpleTrigger trigger = new SimpleTrigger();
trigger.setName(jobName + "Job");
trigger.setGroup(Scheduler.DEFAULT_GROUP);
trigger.setStartTime(initialTime);
trigger.setRepeatInterval(delay);
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
try {
scheduler.scheduleJob(jobDetailBean, trigger);
} catch (SchedulerException se) {
throw new TaskSystemException(se);
}
}
use of org.quartz.SimpleTrigger in project head by mifos.
the class MifosScheduler method scheduleLoanArrearsAndPortfolioAtRisk.
@Deprecated
public void scheduleLoanArrearsAndPortfolioAtRisk(Date initialTime, long delay, JobRegistry jobRegistry, final JobRepository jobRepository, Map<String, Object> jobData, ResourcelessTransactionManager transactionManager) throws TaskSystemException {
final String jobName = "LoanArrearsAndPortfolioAtRiskTask";
try {
final TaskletStep step1 = new TaskletStep();
step1.setName("LoanArrearsAndPortfolioAtRiskTask-step-1");
step1.setTasklet((Tasklet) Class.forName(BATCH_JOB_CLASS_PATH_PREFIX + getHelperName("LoanArrearsTask")).newInstance());
step1.setJobRepository(jobRepository);
step1.setTransactionManager(transactionManager);
step1.afterPropertiesSet();
final TaskletStep step2 = new TaskletStep();
step2.setName("LoanArrearsAndPortfolioAtRiskTask-step-2");
step2.setTasklet((Tasklet) Class.forName(BATCH_JOB_CLASS_PATH_PREFIX + getHelperName("PortfolioAtRiskTask")).newInstance());
step2.setJobRepository(jobRepository);
step2.setTransactionManager(transactionManager);
step2.afterPropertiesSet();
jobRegistry.register(new JobFactory() {
@Override
public Job createJob() {
SimpleJob job = new SimpleJob(jobName + "Job");
job.setJobRepository(jobRepository);
job.setRestartable(true);
job.registerJobExecutionListener(new BatchJobListener());
job.addStep(step1);
job.addStep(step2);
return job;
}
@Override
public String getJobName() {
return jobName + "Job";
}
});
} catch (Exception e) {
throw new TaskSystemException(e);
}
JobDetailBean jobDetailBean = new JobDetailBean();
jobDetailBean.setJobDataAsMap(jobData);
try {
jobDetailBean.setJobClass(Class.forName(BATCH_JOB_CLASS_PATH_PREFIX + "PortfolioAtRiskTask"));
} catch (ClassNotFoundException cnfe) {
throw new TaskSystemException(cnfe);
}
jobDetailBean.setName(jobName + "Job");
jobDetailBean.setGroup(Scheduler.DEFAULT_GROUP);
jobDetailBean.afterPropertiesSet();
SimpleTrigger trigger = new SimpleTrigger();
trigger.setName(jobName + "Job");
trigger.setGroup(Scheduler.DEFAULT_GROUP);
trigger.setStartTime(initialTime);
trigger.setRepeatInterval(delay);
trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
try {
scheduler.scheduleJob(jobDetailBean, trigger);
} catch (SchedulerException se) {
throw new TaskSystemException(se);
}
}
use of org.quartz.SimpleTrigger in project camel by apache.
the class QuartzEndpoint method createTrigger.
private Trigger createTrigger(JobDetail jobDetail) throws Exception {
Trigger result;
Date startTime = new Date();
if (getComponent().getScheduler().isStarted()) {
startTime = new Date(System.currentTimeMillis() + triggerStartDelay);
}
if (cron != null) {
LOG.debug("Creating CronTrigger: {}", cron);
String timeZone = (String) triggerParameters.get("timeZone");
if (timeZone != null) {
if (ObjectHelper.isNotEmpty(customCalendar)) {
result = TriggerBuilder.newTrigger().withIdentity(triggerKey).startAt(startTime).withSchedule(cronSchedule(cron).withMisfireHandlingInstructionFireAndProceed().inTimeZone(TimeZone.getTimeZone(timeZone))).modifiedByCalendar(QuartzConstants.QUARTZ_CAMEL_CUSTOM_CALENDAR).build();
} else {
result = TriggerBuilder.newTrigger().withIdentity(triggerKey).startAt(startTime).withSchedule(cronSchedule(cron).withMisfireHandlingInstructionFireAndProceed().inTimeZone(TimeZone.getTimeZone(timeZone))).build();
}
jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_CRON_TIMEZONE, timeZone);
} else {
if (ObjectHelper.isNotEmpty(customCalendar)) {
result = TriggerBuilder.newTrigger().withIdentity(triggerKey).startAt(startTime).withSchedule(cronSchedule(cron).withMisfireHandlingInstructionFireAndProceed()).modifiedByCalendar(QuartzConstants.QUARTZ_CAMEL_CUSTOM_CALENDAR).build();
} else {
result = TriggerBuilder.newTrigger().withIdentity(triggerKey).startAt(startTime).withSchedule(cronSchedule(cron).withMisfireHandlingInstructionFireAndProceed()).build();
}
}
// enrich job map with details
jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_TYPE, "cron");
jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_CRON_EXPRESSION, cron);
} else {
LOG.debug("Creating SimpleTrigger.");
int repeat = SimpleTrigger.REPEAT_INDEFINITELY;
String repeatString = (String) triggerParameters.get("repeatCount");
if (repeatString != null) {
repeat = EndpointHelper.resolveParameter(getCamelContext(), repeatString, Integer.class);
// need to update the parameters
triggerParameters.put("repeatCount", repeat);
}
// default use 1 sec interval
long interval = 1000;
String intervalString = (String) triggerParameters.get("repeatInterval");
if (intervalString != null) {
interval = EndpointHelper.resolveParameter(getCamelContext(), intervalString, Long.class);
// need to update the parameters
triggerParameters.put("repeatInterval", interval);
}
TriggerBuilder<SimpleTrigger> triggerBuilder;
if (ObjectHelper.isNotEmpty(customCalendar)) {
triggerBuilder = TriggerBuilder.newTrigger().withIdentity(triggerKey).startAt(startTime).withSchedule(simpleSchedule().withMisfireHandlingInstructionFireNow().withRepeatCount(repeat).withIntervalInMilliseconds(interval)).modifiedByCalendar(QuartzConstants.QUARTZ_CAMEL_CUSTOM_CALENDAR);
} else {
triggerBuilder = TriggerBuilder.newTrigger().withIdentity(triggerKey).startAt(startTime).withSchedule(simpleSchedule().withMisfireHandlingInstructionFireNow().withRepeatCount(repeat).withIntervalInMilliseconds(interval));
}
if (fireNow) {
triggerBuilder = triggerBuilder.startNow();
}
result = triggerBuilder.build();
// enrich job map with details
jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_TYPE, "simple");
jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_COUNTER, repeat);
jobDetail.getJobDataMap().put(QuartzConstants.QUARTZ_TRIGGER_SIMPLE_REPEAT_INTERVAL, interval);
}
if (triggerParameters != null && triggerParameters.size() > 0) {
LOG.debug("Setting user extra triggerParameters {}", triggerParameters);
setProperties(result, triggerParameters);
}
LOG.debug("Created trigger={}", result);
return result;
}
use of org.quartz.SimpleTrigger in project camel by apache.
the class SpringQuartzPersistentStoreRestartAppChangeOptionsTest method testRestartAppChangeTriggerOptions.
@Test
public void testRestartAppChangeTriggerOptions() throws Exception {
// Test creates application context twice with different simple trigger options in configuration xml.
// Both times it retrieves back the option, accessing it via trigger (so, using value stored in DB).
// After that it asserts that two options are not equal.
// load spring app
AbstractXmlApplicationContext app = new ClassPathXmlApplicationContext("org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest1.xml");
app.start();
CamelContext camel = app.getBean("camelContext", CamelContext.class);
assertNotNull(camel);
SimpleTrigger trigger = (SimpleTrigger) getTrigger(camel, "quartzRoute");
long repeatInterval = trigger.getRepeatInterval();
app.stop();
log.info("Restarting ...");
log.info("Restarting ...");
log.info("Restarting ...");
// load spring app
AbstractXmlApplicationContext app2 = new ClassPathXmlApplicationContext("org/apache/camel/component/quartz/SpringQuartzPersistentStoreRestartAppChangeOptionsTest2.xml");
app2.start();
CamelContext camel2 = app2.getBean("camelContext", CamelContext.class);
assertNotNull(camel2);
SimpleTrigger trigger2 = (SimpleTrigger) getTrigger(camel2, "quartzRoute");
long repeatInterval2 = trigger2.getRepeatInterval();
app2.stop();
// we're done so let's properly close the application contexts, but close
// the second app before the first one so that the quartz scheduler running
// inside it can be properly shutdown
IOHelper.close(app2, app);
assertNotEquals(repeatInterval, repeatInterval2);
}
Aggregations