package com.uas.search.schedule; import com.uas.search.util.NumberGenerator; import java.util.Objects; /** * 定时任务信息 * * @author sunyj * @since 2016年12月19日 上午10:21:28 */ public class TaskInformation { /** * 任务 code */ private String code; /** * 任务标题 */ private String title; /** * 所执行的任务 */ private Executable command; /** * 第一次执行的延迟时间间隔(毫秒) */ private long initialDelay; /** * 两次任务之间的等待时间间隔(毫秒) */ private long interval; private ScheduleType scheduleType; public TaskInformation() { super(); } public TaskInformation(String title, Executable command, long initialDelay, long interval, ScheduleType scheduleType) { init(); this.title = title; this.command = command; this.initialDelay = initialDelay; this.interval = interval; this.scheduleType = scheduleType; } public void init(){ code = NumberGenerator.generateId(); } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Executable getCommand() { return command; } public void setCommand(Executable command) { this.command = command; } public long getInitialDelay() { return initialDelay; } public void setInitialDelay(long initialDelay) { this.initialDelay = initialDelay; } public long getInterval() { return interval; } public void setInterval(long interval) { this.interval = interval; } public ScheduleType getScheduleType() { return scheduleType; } public void setScheduleType(ScheduleType scheduleType) { this.scheduleType = scheduleType; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass() || !(obj instanceof TaskInformation)) { return false; } TaskInformation other = (TaskInformation) obj; // command不好比较,不进行比较,也不比较 code return Objects.equals(title, other.getTitle()) && initialDelay == other.getInitialDelay() && interval == other.getInterval() && scheduleType == other.getScheduleType(); } @Override public String toString() { return "TaskInformation [code=" + code + ", title=" + title + ", initialDelay=" + initialDelay + ", interval=" + interval + ", scheduleType=" + scheduleType + "]"; } /** * 定时的间隔类型 */ public enum ScheduleType { /** * Creates and executes a periodic action that becomes enabled first * after the given initial delay, and subsequently with the given * period; that is executions will commence after * initialDelay then initialDelay+period, then * initialDelay + 2 * period, and so on. * If any execution of the task * encounters an exception, subsequent executions are suppressed. * Otherwise, the task will only terminate via cancellation or * termination of the executor. If any execution of this task * takes longer than its period, then subsequent executions * may start late, but will not concurrently execute. */ FixedRate, /** * Creates and executes a periodic action that becomes enabled first * after the given initial delay, and subsequently with the * given delay between the termination of one execution and the * commencement of the next. If any execution of the task * encounters an exception, subsequent executions are suppressed. * Otherwise, the task will only terminate via cancellation or * termination of the executor. */ FixedDelay } }