com.viaoa.scheduler.OASchedulerPlan Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of oa-core Show documentation
Show all versions of oa-core Show documentation
Object Automation library
The newest version!
package com.viaoa.scheduler;
import java.util.ArrayList;
import com.viaoa.util.OADate;
import com.viaoa.util.OADateTime;
/**
* Used to combine a complete datetime ranges for scheduling.
*
* @author vvia
*/
public class OASchedulerPlan {
private OADateTime dtBegin, dtEnd;
private ArrayList alSchedulePlan;
/**
* DateTime ranges that this resource is avail/open.
*/
private OASchedule schOpen;
/**
* DateTime ranges that this resource is willing to extend open/avail only if necessary.
*/
private OASchedule schOpenSoft;
/**
* Preferred DateTime ranges for this resouce.
*/
private OASchedule schPreferred;
/**
* Preferred but flexible DateTime ranges for this resouce.
*/
private OASchedule schPreferredSoft;
/**
* DateTime ranges that this resource has blocked (private)
*/
private OASchedule schBlocked;
/**
* DateTime ranges that this resource has blocked but can be available only if needed (ex: emergency)
*/
private OASchedule schBlockedSoft;
/**
* DateTime ranges that this resource is already scheduled.
*/
private OASchedule schScheduled;
public OASchedulerPlan() {
this(new OADate(), new OADate().addDays(1));
}
public OASchedulerPlan(OADate date) {
this(date != null ? date : new OADate(), date != null ? date.addDays(1) : new OADate().addDays(1));
}
public OASchedulerPlan(OADateTime dt) {
this(dt != null ? dt : new OADateTime(), dt != null ? new OADate(dt).addDays(1) : new OADate().addDays(1));
}
public OASchedulerPlan(OADateTime dtBegin, OADateTime dtEnd) {
this.dtBegin = new OADateTime(dtBegin);
this.dtEnd = new OADateTime(dtEnd);
}
public OADateTime getBegin() {
return dtBegin;
}
public OADateTime getEnd() {
return dtEnd;
}
public OASchedule getOpenSchedule() {
if (schOpen == null) {
schOpen = new OASchedule();
}
return schOpen;
}
public OASchedule getOpenSoftSchedule() {
if (schOpenSoft == null) {
schOpenSoft = new OASchedule();
}
return schOpenSoft;
}
public OASchedule getPreferredSchedule() {
if (schPreferred == null) {
schPreferred = new OASchedule();
}
return schPreferred;
}
public OASchedule getPreferredSoftSchedule() {
if (schPreferredSoft == null) {
schPreferredSoft = new OASchedule();
}
return schPreferredSoft;
}
public OASchedule getBlockedSchedule() {
if (schBlocked == null) {
schBlocked = new OASchedule();
}
return schBlocked;
}
public OASchedule getBlockedSoftSchedule() {
if (schBlockedSoft == null) {
schBlockedSoft = new OASchedule();
}
return schBlockedSoft;
}
public OASchedule getScheduledSchedule() {
if (schScheduled == null) {
schScheduled = new OASchedule();
}
return schScheduled;
}
public boolean isAvailable(OADateTime dt) {
if (dt == null) return false;
if (dt.before(dtBegin)) return false;
if (dt.after(dtEnd)) return false;
OASchedule sch;
boolean b = false;
sch = getOpenSchedule();
if (!sch.isRangeAdded(dt)) {
sch = getOpenSoftSchedule();
if (!sch.isRangeAdded(dt)) {
return false;
}
}
sch = getBlockedSchedule();
if (sch.isRangeAdded(dt)) {
return false;
}
sch = getBlockedSoftSchedule();
if (sch.isRangeAdded(dt)) {
return false;
}
sch = getScheduledSchedule();
if (sch.isRangeAdded(dt)) {
return false;
}
return true;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy