*/
protected void addJob(String jobGroup, Date startTime, HttpServletRequest request)
throws SchedulerException {
if (jobGroup == null) {
throw new SchedulerException("Job group must not be null!");
}
try {
log.debug("----------------------------------------------");
log.debug("Adding Job for group [" + jobGroup + "]");
// FIXME: more flexible
Class jobClass = TaskJob.class;
ServletJob job = ServletJobFactory.createJob(jobClass);
JobDataMap map = job.createJobData(getServletContextPath(), request);
String uniqueJobId = getNextJobId();
log.debug("Job ID: [" + uniqueJobId + "]");
JobDetail jobDetail = new JobDetail(uniqueJobId, jobGroup, jobClass);
jobDetail.setJobDataMap(map);
Date now = new GregorianCalendar().getTime();
if (log.isDebugEnabled()) {
DateFormat format = new SimpleDateFormat();
log.debug("Trigger time: [" + format.format(startTime) + "]");
log.debug("Current time: [" + format.format(now) + "]");
}
if (startTime.after(now)) {
Trigger trigger =
TriggerHelper.createSimpleTrigger(uniqueJobId, jobGroup, startTime);
addJob(jobDetail, trigger);
log.debug("Scheduling job.");
} else {
addJob(jobDetail);
log.debug("Adding job without scheduling.");
}
log.debug("----------------------------------------------");
writeSnapshot(jobGroup);
} catch (Exception e) {
log.error("Adding job failed: ", e);
throw new SchedulerException(e);
}
}