import org.quartz.JobDetail; //导入方法依赖的package包/类
private void scheduleJobs() throws ParseException, SchedulerException {
if (log.isDebugEnabled()) log.debug("Creating jobs for buildID: " + activeBuildID);
if (buildRunner == null) throw new SchedulerException("Build runner for scheduler is undefined");
if (!triggerKeyList.isEmpty()) throw new SchedulerException("Jobs should be unscheduled before scheduling jobs.");
// create schedule triggers for this build
if (log.isDebugEnabled()) log.debug("Creating schedule triggers for buildID: " + activeBuildID);
int nameIndex = 0;
final List itemList = ConfigurationManager.getInstance().getScheduleItems(activeBuildID);
for (final Iterator iter = itemList.iterator(); iter.hasNext();) {
// create trigger
final ScheduleItem scheduleItem = (ScheduleItem) iter.next();
final CronTrigger[] triggers = makeCronTriggers(activeBuildID, scheduleItem);
// go through the list of triggers
for (int i = 0; i < triggers.length; i++) {
final CronTrigger trigger = triggers[i];
trigger.setName(makeTriggerName(nameIndex));
final TriggerKey key = new TriggerKey(trigger.getName(), trigger.getGroup());
triggerKeyList.add(key);
// make job detail
final JobDetail jobDetail = makeJobDetail(activeBuildID, RepeatableScheduleJob.class);
jobDetail.setName(makeJobName(nameIndex));
// set build parameters
final JobDataMap dataMap = new JobDataMap();
dataMap.put(RepeatableScheduleJob.BUILD_ID_KEY, activeBuildID);
dataMap.put(RepeatableScheduleJob.BUILD_RUNNER_KEY, buildRunner);
dataMap.put(RepeatableScheduleJob.CLEAN_CHECKOUT_COUNTER, cleanCheckoutCounter);
dataMap.put(RepeatableScheduleJob.FORCE_CLEAN_CHECKOUT, Boolean.valueOf(scheduleItem.isCleanCheckout()));
dataMap.put(RepeatableScheduleJob.RUN_IF_NO_CHANGES, Boolean.valueOf(scheduleItem.isRunIfNoChanges()));
jobDetail.setJobDataMap(dataMap);
// schedule
if (log.isDebugEnabled()) log.debug("Scheduling job for buildID: " + activeBuildID);
scheduler.scheduleJob(jobDetail, trigger);
nameIndex++;
}
}
}