Revision 5012
Added by daigle over 14 years ago
SchedulerService.java | ||
---|---|---|
150 | 150 |
Calendar startTimeCal = Calendar.getInstance(); |
151 | 151 |
startTimeCal.setTime(jobDAO.getStartTime()); |
152 | 152 |
|
153 |
// convert the start time to a calendar object |
|
154 |
Calendar endTimeCal = Calendar.getInstance(); |
|
155 |
endTimeCal.setTime(jobDAO.getEndTime()); |
|
156 |
|
|
153 | 157 |
// extract the job parameters from their data objects and put into a string map |
154 | 158 |
HashMap<String, String> jobParams = new HashMap<String, String>(); |
155 | 159 |
HashMap<String, ScheduledJobParamDAO> jobParamDAOs = jobDAO.getAllJobParams(); |
... | ... | |
158 | 162 |
} |
159 | 163 |
|
160 | 164 |
// schedule the job |
161 |
return scheduleJob(jobDAO.getName(), startTimeCal, jobDAO.getIntervalValue(), jobDAO.getIntervalUnit(), |
|
162 |
jobDAO.getClassName(), jobDAO.getGroupName(), jobParams, username, groups); |
|
165 |
return scheduleJob(jobDAO.getName(), startTimeCal, endTimeCal, jobDAO.getIntervalValue(), |
|
166 |
jobDAO.getIntervalUnit(), jobDAO.getClassName(), jobDAO.getGroupName(), |
|
167 |
jobParams, username, groups); |
|
163 | 168 |
} |
164 | 169 |
|
165 | 170 |
/** |
... | ... | |
185 | 190 |
* the user's group name |
186 | 191 |
* @return a message saying that the job was scheduled |
187 | 192 |
*/ |
188 |
public String scheduleJob(String jobName, Calendar startCal, int intervalValue, String intervalUnit,
|
|
189 |
String jobClassName, String jobGroup, HashMap<String, String> jobParams, |
|
193 |
public String scheduleJob(String jobName, Calendar startCal, Calendar endCal, int intervalValue,
|
|
194 |
String intervalUnit, String jobClassName, String jobGroup, HashMap<String, String> jobParams,
|
|
190 | 195 |
String username, String[] groups) throws ServiceException { |
191 | 196 |
|
192 | 197 |
Class<Job> jobClass = null; |
... | ... | |
200 | 205 |
+ ", interval unit: " + intervalUnit); |
201 | 206 |
|
202 | 207 |
// start the job in the job scheduler |
203 |
startJob(jobName, startCal, intervalValue, intervalUnit, jobClass, jobGroup, |
|
208 |
startJob(jobName, startCal, endCal, intervalValue, intervalUnit, jobClass, jobGroup,
|
|
204 | 209 |
jobParams); |
205 | 210 |
|
206 | 211 |
// get a database access object and create the job in the database |
207 | 212 |
|
208 | 213 |
ScheduledJobAccess jobAccess = new ScheduledJobAccess(); |
209 |
jobAccess.createJob(jobName, jobName, jobGroup, jobClass, startCal, |
|
214 |
jobAccess.createJob(jobName, jobName, jobGroup, jobClass, startCal, endCal,
|
|
210 | 215 |
intervalValue, intervalUnit, jobParams); |
211 | 216 |
} catch (AccessException ae) { |
212 | 217 |
try { |
... | ... | |
316 | 321 |
Calendar startCal = Calendar.getInstance(); |
317 | 322 |
startCal.setTime(jobDAO.getStartTime()); |
318 | 323 |
|
324 |
Calendar endCal = Calendar.getInstance(); |
|
325 |
endCal.setTime(jobDAO.getEndTime()); |
|
326 |
|
|
319 | 327 |
HashMap<String, String> jobParams = new HashMap<String, String>(); |
320 | 328 |
HashMap<String, ScheduledJobParamDAO> jobParamDAOs = jobDAO.getAllJobParams(); |
321 | 329 |
for (String paramName : jobParamDAOs.keySet()) { |
... | ... | |
337 | 345 |
+ ", interval unit: " + jobDAO.getIntervalUnit()); |
338 | 346 |
|
339 | 347 |
// start the job in the scheduler |
340 |
startJob(jobDAO.getName(), startCal, jobDAO.getIntervalValue(), jobDAO.getIntervalUnit(), jobClass, jobDAO.getGroupName(), jobParams); |
|
348 |
startJob(jobDAO.getName(), startCal, endCal, jobDAO.getIntervalValue(), jobDAO.getIntervalUnit(), jobClass, jobDAO.getGroupName(), jobParams);
|
|
341 | 349 |
|
342 | 350 |
// update the status in the database |
343 | 351 |
jobDAO.setStatus(StatusUtil.SCHEDULED); |
... | ... | |
532 | 540 |
* @param groups |
533 | 541 |
* the user's group name |
534 | 542 |
*/ |
535 |
private void startJob(String jobName, Calendar startCal, int intervalValue, String intervalUnit, |
|
543 |
private void startJob(String jobName, Calendar startCal, Calendar endCal, int intervalValue, String intervalUnit,
|
|
536 | 544 |
Class<Job> jobClass, String jobGroup, HashMap<String, String> jobParams) throws ServiceException { |
537 | 545 |
|
538 | 546 |
JobDetail jobDetail = new JobDetail(jobName, jobGroup, jobClass); |
... | ... | |
544 | 552 |
switch (intervalChar) { |
545 | 553 |
case 's': |
546 | 554 |
case 'S': |
547 |
scheduleSecondlyJob(jobName, jobClass, startCal, intervalValue, jobGroup, jobDetail); |
|
555 |
scheduleSecondlyJob(jobName, jobClass, startCal, endCal, intervalValue, jobGroup, jobDetail);
|
|
548 | 556 |
break; |
549 | 557 |
case 'm': |
550 | 558 |
case 'M': |
551 |
scheduleMinutelyJob(jobName, jobClass, startCal, intervalValue, jobGroup, jobDetail); |
|
559 |
scheduleMinutelyJob(jobName, jobClass, startCal, endCal, intervalValue, jobGroup, jobDetail);
|
|
552 | 560 |
break; |
553 | 561 |
case 'h': |
554 | 562 |
case 'H': |
555 |
scheduleHourlyJob(jobName, jobClass, startCal, intervalValue, jobGroup, jobDetail); |
|
563 |
scheduleHourlyJob(jobName, jobClass, startCal, endCal, intervalValue, jobGroup, jobDetail);
|
|
556 | 564 |
break; |
557 | 565 |
case 'd': |
558 | 566 |
case 'D': |
559 |
scheduleDailyJob(jobName, jobClass, startCal, intervalValue, jobGroup, jobDetail); |
|
567 |
scheduleDailyJob(jobName, jobClass, startCal, endCal, intervalValue, jobGroup, jobDetail);
|
|
560 | 568 |
break; |
561 | 569 |
default: |
562 | 570 |
throw new ServiceException("SchedulerService.scheduleJob - Could not interpret interval unit: " |
... | ... | |
580 | 588 |
* @param jobDetail |
581 | 589 |
* the job detail object |
582 | 590 |
*/ |
583 |
private void scheduleSecondlyJob(String jobName, Class<Job> jobClass, Calendar startTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException { |
|
591 |
private void scheduleSecondlyJob(String jobName, Class<Job> jobClass, Calendar startTime, Calendar endTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException {
|
|
584 | 592 |
|
585 | 593 |
Trigger trigger = TriggerUtils.makeSecondlyTrigger(interval); |
586 | 594 |
trigger.setName(jobName); |
587 | 595 |
trigger.setStartTime(startTime.getTime()); |
596 |
if (endTime != null) { |
|
597 |
trigger.setEndTime(endTime.getTime()); |
|
598 |
} |
|
588 | 599 |
|
589 | 600 |
try { |
590 | 601 |
sched.scheduleJob(jobDetail, trigger); |
... | ... | |
610 | 621 |
* @param jobDetail |
611 | 622 |
* the job detail object |
612 | 623 |
*/ |
613 |
private void scheduleMinutelyJob(String jobName, Class<Job> jobClass, Calendar startTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException { |
|
624 |
private void scheduleMinutelyJob(String jobName, Class<Job> jobClass, Calendar startTime, Calendar endTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException {
|
|
614 | 625 |
|
615 | 626 |
Trigger trigger = TriggerUtils.makeMinutelyTrigger(interval); |
616 | 627 |
trigger.setName(jobName); |
617 | 628 |
trigger.setStartTime(startTime.getTime()); |
629 |
if (endTime != null) { |
|
630 |
trigger.setEndTime(endTime.getTime()); |
|
631 |
} |
|
618 | 632 |
|
619 | 633 |
try { |
620 | 634 |
sched.scheduleJob(jobDetail, trigger); |
... | ... | |
640 | 654 |
* @param jobDetail |
641 | 655 |
* the job detail object |
642 | 656 |
*/ |
643 |
private void scheduleHourlyJob(String jobName, Class<Job> jobClass, Calendar startTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException { |
|
657 |
private void scheduleHourlyJob(String jobName, Class<Job> jobClass, Calendar startTime, Calendar endTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException {
|
|
644 | 658 |
|
645 | 659 |
Trigger trigger = TriggerUtils.makeHourlyTrigger(interval); |
646 | 660 |
trigger.setName(jobName); |
647 | 661 |
trigger.setStartTime(startTime.getTime()); |
662 |
if (endTime != null) { |
|
663 |
trigger.setEndTime(endTime.getTime()); |
|
664 |
} |
|
648 | 665 |
|
649 | 666 |
try { |
650 | 667 |
sched.scheduleJob(jobDetail, trigger); |
... | ... | |
670 | 687 |
* @param jobDetail |
671 | 688 |
* the job detail object |
672 | 689 |
*/ |
673 |
private void scheduleDailyJob(String jobName, Class<Job> jobClass, Calendar startTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException { |
|
690 |
private void scheduleDailyJob(String jobName, Class<Job> jobClass, Calendar startTime, Calendar endTime, int interval, String jobGroup, JobDetail jobDetail) throws ServiceException {
|
|
674 | 691 |
|
675 | 692 |
Trigger trigger = TriggerUtils.makeHourlyTrigger(interval * 24); |
676 | 693 |
trigger.setName(jobName); |
677 | 694 |
trigger.setStartTime(startTime.getTime()); |
695 |
if (endTime != null) { |
|
696 |
trigger.setEndTime(endTime.getTime()); |
|
697 |
} |
|
678 | 698 |
|
679 | 699 |
try { |
680 | 700 |
sched.scheduleJob(jobDetail, trigger); |
Also available in: Unified diff
Added end time to workflow scheduler.