Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.scheduler.common;
 
 
 
 /*
  *  		<Daily>
  *  			<Schedule At="" RunIfMissed="True/False" />
  *  			<Schedule At="" RunIfMissed="True/False" />
  *  			<Schedule At="" RunIfMissed="True/False" />
  *  		</Daily>
  */
 public class DailyHelper extends CommonHelper implements IDateChecker {
 	protected ScheduleList list = new ScheduleList();
 	
 	// first time this code was run since the module/server was started
 	// requires special check for any missed runs
 	protected boolean firstCall = true;
 	
 	public void init(CommonSchedule scheduleXElement config) {
 		super.init(scheduleconfig);
 		
 		if (config == null)
 			return;
 		
 		this..init(config);
 	}
 	
 	// return null to indicate this can never run again
 	public DateTime next() {
 		this..setHint("_ScheduleTimeHint""");
 		
 		if (this.) {
 			this. = false;
 			
 			if (this..isEnded())
 				return null;
 			
 			// if the valid range for schedule has not started yet, then 
 			// schedule way out
 			if (!this..isStarted()) {
 				this. = false;
 				this. = new DateTime(this..getFirstDate());
 			}
 			// if there was no past runs, do not try to find them
 			// or if there are not any required
 			else if (this. == null) {
 				this. = new DateTime().minusDays(9);		// start 8 days ago to allow for Run if Missed
 				//this.last = TimeUtil.nextDayAtMidnight(new DateTime().minusDays(9));		// start 8 days ago to allow for Run if Missed
 			}
 			
 			// see if we need to run because of a missed past schedule
 			if (this..anyRequired()) {
 				if (this.checkStartupNeedsRun(this.this)) {
 					//System.out.println("run asap!!!!");
 					this. = this..nextAllowedRun();
 					return this.;
 				}
 			}
 		}
 		
 		ScheduleEntry se = this..next(this.);
 		
 		while (true) {
 			// null means we reached the end, go to next day
 			if (se == null) {
 				this. = TimeUtil.nextDayAtMidnight(this.);
 				se = this..next(this.);
 			}
 			
 			// add the scheduled entry to the time
 			// (first time with a given date, this is the time past midnight)
 			if (se != null)
 				this. = TimeUtil.withTime(this.se.getTime());
 			
 			// we cannot schedule again, the schedule is expired
 			if (this..isEnded(this.))
 				return null;
			// can we run at the suggested time?
			if (this..checkForRun(this.)) {
				this..setHint("_ScheduleTimeHint"se.getTime().toString());
				return this.;
			}
			// if not, should we run asap after the suggested time
			if (se.isRunIfMissed()) {
				this..setHint("_ScheduleTimeHint"se.getTime().toString());
				this. = this..nextAllowedRunAfter(this.);
				return this.;
			}
			// go on and check the next time
			se = this..next(this.);
		}
	}
	public boolean checkDate(CheckInfo info) {
		// always allowed
		return true;
	}
New to GrepCode? Check out our FAQ X