/* ************************************************************************ # # 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; import org.joda.time.DateTime; import divconq.util.TimeUtil; public class CheckInfo { private DateTime when = null; private int dayOfWeek = 0; // 0 = monday private int monthPlacement = 1; // 1 = first, 2 = second, 3 = third, etc private boolean isLastPlacement = false; // last of this dow in this month private boolean isLastDay = false; // last of this month private int dayOfMonth = 1; private int monthOfYear = 1; public void incrementDay() { this.setWhen(TimeUtil.nextDayAtMidnight(this.when)); } public void setWhen(DateTime when) { this.when = when; this.dayOfMonth = when.getDayOfMonth(); this.dayOfWeek = when.getDayOfWeek(); this.monthOfYear = when.getMonthOfYear(); this.monthPlacement = ((this.dayOfMonth - 1) / 7) + 1; this.isLastPlacement = ((when.dayOfMonth().withMaximumValue().getDayOfMonth() - this.dayOfMonth) < 7); this.setLastDay((when.dayOfMonth().withMaximumValue().getDayOfMonth() == this.dayOfMonth)); } public DateTime getWhen() { return this.when; } public void setDayOfWeek(int dayOfWeek) { this.dayOfWeek = dayOfWeek; } public int getDayOfWeek() { return this.dayOfWeek; } public void setMonthPlacement(int monthPlacement) { this.monthPlacement = monthPlacement; } public int getMonthPlacement() { return this.monthPlacement; } public void setLastPlacement(boolean isLastPlacement) { this.isLastPlacement = isLastPlacement; } public boolean isLastPlacement() { return this.isLastPlacement; } public void setDayOfMonth(int dayOfMonth) { this.dayOfMonth = dayOfMonth; } public int getDayOfMonth() { return this.dayOfMonth; } public void setMonthOfYear(int monthOfYear) { this.monthOfYear = monthOfYear; } public int getMonthOfYear() { return this.monthOfYear; } public CheckInfo deepClone() { CheckInfo ci = new CheckInfo(); ci.when = this.when; ci.dayOfMonth = this.dayOfMonth; ci.dayOfWeek = this.dayOfWeek; ci.isLastPlacement = this.isLastPlacement; ci.monthOfYear = this.monthOfYear; ci.monthPlacement = this.monthPlacement; return ci; } public void setLastDay(boolean isLastDay) { this.isLastDay = isLastDay; } public boolean isLastDay() { return isLastDay; } }