package com.docus.server.collect.domain;

import com.docus.server.tool.DateSpiltUtil;
import com.docus.server.tool.PeriodTime;
import lombok.Data;
import lombok.Getter;

import java.util.Date;
import java.util.List;

/**
 * 收集数据任务配置
 */

@Data
public class TaskConfig {

    private String id;

    /**
     * 任务名字
     */
    private String name;

    /**
     * 任务类型。 dept，user....
     */
    private String type;

    /**
     * 数据起始时间范围
     */
    private Date startTime;

    /**
     * 数据结束时间范围
     */
    private Date endTime;


    /**
     * 指针时间，当前全量任务的任务执行到的时间
     */
    private Date allPointerTime;

    /**
     * 每页大小
     */
    private Long pageSize;

    /**
     * 时间分割周期，把起始时间结束时间进行分割，单位为秒
     */
    private Long spiltPeriod;


    /**
     * 指针时间，当前增量任务的执行到的时间
     */
    private Date incPointerTime;


    public List<PeriodTime> getAllPeriodTimes() {
        List<PeriodTime> periodTimes = DateSpiltUtil.spiltDate(this.getStartTime(), this.endTime, 1000 * spiltPeriod);
        return periodTimes;
    }


    public List<PeriodTime> getIncPeriodTimes() {
        List<PeriodTime> periodTimes = DateSpiltUtil.spiltDate(incPointerTime, new Date(), 1000 * spiltPeriod);
        return periodTimes;
    }


    /**
     * 重写启动时间，如果当前时间有，则取当前时间
     *
     * @return 启动时间
     */
    public Date getStartTime() {
        if (allPointerTime != null) {
            return allPointerTime;
        }
        return this.startTime;
    }


}
