package org.fastcatsearch.job; import java.util.Date; /** * 스케쥴 작업을 할 job과 스케줄 시간. * */ public class ScheduledJobEntry { private Job job; private Date startTime; private int periodInSecond; private boolean isExecuteGuarantee; // 실행이 보장되는지 여부. 함께 수행되는 job때문에 실행시작이 늦어지더라도 차후에 반드시 수행된다. 단 동일 job이 연속으로 계속 실행되지는 않는다. private ScheduledJobExecuteInfo executeInfo; public ScheduledJobEntry(Job job, Date startTime, int periodInSecond) { this(job, startTime, periodInSecond, false); } public ScheduledJobEntry(Job job, Date startTime, int periodInSecond, boolean isExecuteGuarantee) { this.job = job; job.setScheduled(true); this.startTime = startTime; this.periodInSecond = periodInSecond; this.isExecuteGuarantee = isExecuteGuarantee; this.executeInfo = new ScheduledJobExecuteInfo(); } public Job getJob() { return job; } public void setJob(Job job) { this.job = job; } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public int getPeriodInSecond() { return periodInSecond; } public void setPeriodInSecond(int periodInSecond) { this.periodInSecond = periodInSecond; } public boolean isExecuteGuarantee() { return isExecuteGuarantee; } public ScheduledJobExecuteInfo executeInfo() { return executeInfo; } @Override public String toString() { return job.getClass().getSimpleName() + " : " + job.getArgs() + " : st[" + startTime + "] : per[" + periodInSecond + "] : gr[" + isExecuteGuarantee + "] : " + executeInfo; } public static class ScheduledJobExecuteInfo { private Date lastExecuteTime; private long executeCount; public long executeCount() { return executeCount; } public Date lastExecuteTime() { return lastExecuteTime; } @Override public String toString() { return "ExecuteCount[" + executeCount + "] LastTime[" + lastExecuteTime + "]"; } public ScheduledJobExecuteInfo incrementExecution() { executeCount++; lastExecuteTime = new Date(); return this; } } }