use of org.quartz.JobDetail in project openhab1-addons by openhab.
the class GCalPersistenceService method scheduleUploadJob.
/**
* Schedules new quartz scheduler job for uploading calendar entries to Google
*/
private void scheduleUploadJob() {
try {
scheduler = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = newJob(SynchronizationJob.class).withIdentity("Upload_GCal-Entries", GCAL_SCHEDULER_GROUP).build();
SimpleTrigger trigger = newTrigger().withIdentity("Upload_GCal-Entries", GCAL_SCHEDULER_GROUP).withSchedule(repeatSecondlyForever(uploadInterval)).build();
scheduler.scheduleJob(job, trigger);
logger.debug("Scheduled Google Calendar Upload-Job with interval '{}'", uploadInterval);
} catch (SchedulerException e) {
logger.warn("Could not create Google Calendar Upload-Job: {}", e.getMessage());
}
}
use of org.quartz.JobDetail in project openhab1-addons by openhab.
the class Db4oPersistenceService method scheduleJob.
/**
* Schedules new quartz scheduler jobs for committing transactions and
* backing up the database
*/
private void scheduleJob() {
try {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
// schedule commit-job
JobDetail job = newJob(CommitJob.class).withIdentity("Commit_Transaction", SCHEDULER_GROUP).build();
SimpleTrigger trigger = newTrigger().withIdentity("Commit_Transaction", SCHEDULER_GROUP).withSchedule(repeatSecondlyForever(commitInterval)).build();
sched.scheduleJob(job, trigger);
logger.debug("Scheduled Commit-Job with interval {}sec.", commitInterval);
// schedule backup-job
JobDetail backupJob = newJob(BackupJob.class).withIdentity("Backup_DB", SCHEDULER_GROUP).build();
CronTrigger backupTrigger = newTrigger().withIdentity("Backup_DB", SCHEDULER_GROUP).withSchedule(CronScheduleBuilder.cronSchedule(backupInterval)).build();
sched.scheduleJob(backupJob, backupTrigger);
logger.debug("Scheduled Backup-Job with cron expression '{}'", backupInterval);
} catch (SchedulerException e) {
logger.warn("Could not create Job: {}", e.getMessage());
}
}
use of org.quartz.JobDetail in project openhab1-addons by openhab.
the class PlugwiseBinding method scheduleJobs.
private void scheduleJobs(Scheduler scheduler) {
for (PlugwiseBindingProvider provider : providers) {
for (PlugwiseBindingConfigElement element : provider.getIntervalList()) {
PlugwiseCommandType type = element.getCommandType();
if (type.getJobClass() == null) {
continue;
}
if (stick.getDevice(element.getId()) == null) {
logger.debug("The Plugwise device with id {} is not yet defined", element.getId());
// check if the config string really contains a MAC address
Pattern MAC_PATTERN = Pattern.compile("(\\w{16})");
Matcher matcher = MAC_PATTERN.matcher(element.getId());
if (matcher.matches()) {
List<CirclePlus> cps = stick.getDevicesByClass(CirclePlus.class);
if (!cps.isEmpty()) {
CirclePlus cp = cps.get(0);
if (!cp.getMAC().equals(element.getId())) {
// a circleplus has been added/detected and it is not what is in the binding config
PlugwiseDevice device = new Circle(element.getId(), stick, element.getId());
stick.addDevice(device);
logger.debug("Plugwise added Circle with MAC address: {}", element.getId());
}
} else {
logger.warn("Plugwise can not guess the device that should be added. Consider defining it in the openHAB configuration file");
}
} else {
logger.warn("Plugwise can not add a valid device without a proper MAC address. {} can not be used", element.getId());
}
}
if (stick.getDevice(element.getId()) != null) {
String jobName = element.getId() + "-" + type.getJobClass().toString();
if (!isExistingJob(scheduler, jobName)) {
// set up the Quartz jobs
JobDataMap map = new JobDataMap();
map.put(STICK_JOB_DATA_KEY, stick);
map.put(MAC_JOB_DATA_KEY, stick.getDevice(element.getId()).MAC);
JobDetail job = newJob(type.getJobClass()).withIdentity(jobName, "Plugwise-" + provider.toString()).usingJobData(map).build();
Trigger trigger = newTrigger().withIdentity(element.getId() + "-" + type.getJobClass().toString(), "Plugwise-" + provider.toString()).startNow().withSchedule(simpleSchedule().repeatForever().withIntervalInSeconds(element.getInterval())).build();
try {
scheduler.scheduleJob(job, trigger);
} catch (SchedulerException e) {
logger.error("An exception occurred while scheduling a Plugwise Quartz Job", e);
}
}
} else {
logger.error("Error scheduling a Quartz Job for a non-defined Plugwise device (" + element.getId() + ")");
}
}
}
List<CirclePlus> cps = stick.getDevicesByClass(CirclePlus.class);
if (!cps.isEmpty()) {
CirclePlus cp = cps.get(0);
String jobName = cp.MAC + "-SetCirclePlusClock";
if (!isExistingJob(scheduler, jobName)) {
JobDataMap map = new JobDataMap();
map.put(CirclePlus.CIRCLE_PLUS_JOB_DATA_KEY, cp);
JobDetail job = newJob(SetClockJob.class).withIdentity(jobName, "Plugwise").usingJobData(map).build();
CronTrigger trigger = newTrigger().withIdentity(jobName, "Plugwise").startNow().withSchedule(CronScheduleBuilder.cronSchedule("0 0 0 * * ?")).build();
try {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
sched.scheduleJob(job, trigger);
} catch (SchedulerException e) {
logger.error("Error scheduling Circle+ setClock Quartz Job", e);
}
}
}
}
use of org.quartz.JobDetail in project openhab1-addons by openhab.
the class CalDavLoaderImpl method createJob.
private synchronized void createJob(final EventContainer eventContainer, final CalDavEvent event, final int index) throws SchedulerException {
final String triggerStart = JOB_NAME_EVENT_START + "-" + event.getShortName() + "-" + index;
final boolean startJobTriggerDeleted = this.scheduler.unscheduleJob(TriggerKey.triggerKey(triggerStart, JOB_NAME_EVENT_START));
final boolean startJobDeleted = this.scheduler.deleteJob(JobKey.jobKey(triggerStart, JOB_NAME_EVENT_START));
log.trace("old start job ({}) deleted? {}/{}", triggerStart, startJobDeleted, startJobTriggerDeleted);
Date startDate = event.getStart().toDate();
JobDetail jobStart = JobBuilder.newJob().ofType(EventJob.class).usingJobData(EventJob.KEY_CONFIG, eventContainer.getCalendarId()).usingJobData(EventJob.KEY_EVENT, eventContainer.getEventId()).usingJobData(EventJob.KEY_REC_INDEX, index).usingJobData(EventJob.KEY_EVENT_TRIGGER, EventTrigger.BEGIN.name()).storeDurably(false).withIdentity(triggerStart, JOB_NAME_EVENT_START).build();
Trigger jobTriggerStart = TriggerBuilder.newTrigger().withIdentity(triggerStart, JOB_NAME_EVENT_START).startAt(startDate).build();
this.scheduler.scheduleJob(jobStart, jobTriggerStart);
eventContainer.getTimerMap().add(triggerStart);
log.debug("begin timer scheduled for event '{}' @ {}", event.getShortName(), startDate);
final String triggerEnd = JOB_NAME_EVENT_END + "-" + event.getShortName() + "-" + index;
final boolean endJobTriggerDeleted = this.scheduler.unscheduleJob(TriggerKey.triggerKey(triggerEnd, JOB_NAME_EVENT_END));
final boolean endJobDeleted = this.scheduler.deleteJob(JobKey.jobKey(triggerEnd, JOB_NAME_EVENT_END));
log.trace("old end job ({}) deleted? {}/{}", triggerEnd, endJobDeleted, endJobTriggerDeleted);
Date endDate = event.getEnd().toDate();
JobDetail jobEnd = JobBuilder.newJob().ofType(EventJob.class).usingJobData(EventJob.KEY_CONFIG, eventContainer.getCalendarId()).usingJobData(EventJob.KEY_EVENT, eventContainer.getEventId()).usingJobData(EventJob.KEY_REC_INDEX, index).usingJobData(EventJob.KEY_EVENT_TRIGGER, EventTrigger.END.name()).storeDurably(false).withIdentity(triggerEnd, JOB_NAME_EVENT_END).build();
Trigger jobTriggerEnd = TriggerBuilder.newTrigger().withIdentity(triggerEnd, JOB_NAME_EVENT_END).startAt(endDate).build();
this.scheduler.scheduleJob(jobEnd, jobTriggerEnd);
eventContainer.getTimerMap().add(triggerEnd);
log.debug("end timer scheduled for event '{}' @ {}", event.getShortName(), endDate);
}
use of org.quartz.JobDetail in project openhab1-addons by openhab.
the class DropboxSynchronizer method schedule.
/**
* Schedules either a job handling the Upload (<code>LOCAL_TO_DROPBOX</code>)
* or Download (<code>DROPBOX_TO_LOCAL</code>) direction depending on
* <code>isUpload</code>.
*
* @param interval the Trigger interval as cron expression
* @param isUpload
*/
private void schedule(String interval, boolean isUpload) {
String direction = isUpload ? "Upload" : "Download";
try {
Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
JobDetail job = newJob(SynchronizationJob.class).withIdentity(direction, DROPBOX_SCHEDULER_GROUP).build();
CronTrigger trigger = newTrigger().withIdentity(direction, DROPBOX_SCHEDULER_GROUP).withSchedule(CronScheduleBuilder.cronSchedule(interval)).build();
logger.debug("Scheduled synchronization job (direction={}) with cron expression '{}'", direction, interval);
sched.scheduleJob(job, trigger);
} catch (SchedulerException e) {
logger.warn("Could not create synchronization job: {}", e.getMessage());
}
}
Aggregations