Project

General

Profile

« Previous | Next » 

Revision 5012

Added by daigle over 14 years ago

Added end time to workflow scheduler.

View differences:

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