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.limit;
 
 
 
 
 public class DayWindow {
 	protected DayWindow parent = null;
 	protected BitSet excluded = new BitSet(1440);
 	protected BitSet included = new BitSet(1440);
 	protected boolean useDefaultWindow = true;
 	
 	public void setParent(DayWindow v) {
 		this. = v;
 	}
 	
 	public DayWindow getParent() {
 		return this.;
 	}
 	
 	public void init(XElement config) {
 		if (config != null) {
 			// get all the exclude windows 
 			for (XElement el : config.selectAll("ExcludeWindow")) {
 				CoreLocalTime from = TimeUtil.parseCoreLocalTime(el.getAttribute("From"));
 				CoreLocalTime to = TimeUtil.parseCoreLocalTime(el.getAttribute("To"));
 				
 				this.setBits(falsefromto);
 			}
 			
 			// then add all the include windows 
 			for (XElement el : config.selectAll("IncludeWindow")) {
 				CoreLocalTime from = TimeUtil.parseCoreLocalTime(el.getAttribute("From"));
 				CoreLocalTime to = TimeUtil.parseCoreLocalTime(el.getAttribute("To"));
 				
 				this.setBits(truefromto);
 			}
 			
 			// True - use default of 24 hours open if there are no windows given
 			// False - do not include 24 hour open if there are no windows given
 			// Parent - use only the parent (if present) if there are no windows given
 			//		serves as a hint to the parser to include parent
 			String defaultWindow = config.getAttribute("DefaultWindow"); 
 			
 			if ("False".equals(defaultWindow) || "Parent".equals(defaultWindow)) 
 				this. = false;
 		}
 		
 		// if using default window and no values were found then fill all as though included
 		if (this. &&  (this..cardinality() == 0)) {
 			this.setBits(truenullnull);
 		}
 	}
 	
 	public boolean excludeAll() {
 		if ((this..cardinality() == 1440) || (this..cardinality() == 0)) {
 			if (this. != null)
 				return this..excludeAll();
 			
 			return true;			
 		}
 		
 		return false;
 	}
 
 	/*
 	 * search to see if there are any minutes open for this date after or at the current minute
 	 *  
 	 * @param si
 	 * @return
 	 */
 	public LocalTime nextTimeOn(DateTime si) {
 		// check that not completely excluded
 		if (this.excludeAll())
 			return null;
 		
 		int addMinutes = 1;
 		LocalTime sil = si.toLocalTime();
		// start at the next minute
		int sidx = sil.getHourOfDay() * 60 + sil.getMinuteOfHour() + 1;
		// if any minute is open, return it
		for (int i = sidxi < 1440; i++) { 
			if (this.check(i) == .)
				return sil.plusMinutes(addMinutes);
			addMinutes++;
		}
		// nothing open today
		return null;
	}
		if (this.excludeAll())
		LocalTime sil = si.toLocalTime();			
		return this.check(sil.getHourOfDay() * 60 + sil.getMinuteOfHour());
	}
	// our setting take preference over the parents
	public CheckLimitResult check(int idx) {			
		if (this..get(idx))
		if (this..get(idx))
		if (this. != null)
			return this..check(idx);			
	}
	public void setBits(boolean includeCoreLocalTime fromCoreLocalTime to) {
		int fidx = (from == null) ? 0 : from.getMinuteStamp();
		if (fidx < 0)
			fidx = 0;
		if (fidx > 1439)
			return;
		int tidx = (to == null) ? 1440 : to.getMinuteStamp();
		if (tidx <= 1)
			return;
		if (tidx > 1440)
			tidx = 1440;
		if (include)
			this..set(fidxtidx);
		else
			this..set(fidxtidx);
	}
New to GrepCode? Check out our FAQ X