Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #  DivConq
  #  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;
 abstract public class CommonHelper implements IScheduleHelper {
 	protected XElement config = null;
 	protected LimitHelper limits = null;
 	protected DateTime last = null;
 	protected CommonSchedule schedule = null;
 	public void init(CommonSchedule scheduleXElement config) {
 		this. = schedule;
 		this. = config;
 	public void setLimits(LimitHelper limits) {
 		this. = limits;
 	public void setLast(DateTime last) {
 		this. = last;
 	// return true if passes the limits check
 	public boolean checkLimits(Instant v) {
 		if (this.limits != null)
 			return this.limits.check(v);
 		return true;
 	// used by daily, weekday and monthday helpers
 	protected boolean checkStartupNeedsRun(ScheduleList listIDateChecker checker) {
 		// do not alter last.  either we will use it in the scheduler normally
 		// or, if we return true, we will set last to run asap
 		CheckInfo ci = new CheckInfo();
 		// starting with last date, run through and check all dates until now
 		// to see if any are open, if so it is valid to run for past		
 		while (true) {
 			if (checker.checkDate(ci) && !this..isDateBlocked(ci.getWhen())) {
 				DateTime tlast = ci.getWhen();		
 				ScheduleEntry se =;
 				// now check today to see if we should have run earlier today
 				// note that if last started out as a past date that we would now
 				// be pointing at midnight today.  if last started out as today
 				// then we would still be at the last run today value (e.g. last run 2 hours ago)
 				while (se != null) {
 					// add the scheduled entry to the time
 					// (first time with a given date, this is the time past midnight)
 					tlast = TimeUtil.withTime(tlastse.getTime());
 					// if this schedule entry comes after now, then schedule normally
 					if (!tlast.isBeforeNow())
 						return false;
 					// we cannot schedule again, the schedule is expired
 					// this will have to be figured out by the normal scheduler
 					if (this..isEnded(tlast))
 						return false;
 					// did we miss a required run today? if so tell the normal scheduler
 					// to run asap
 					if (se.isRunIfMissed()) {
 						return true;
 					// go on and check the next time today
 					se =;
New to GrepCode? Check out our FAQ X