package com.mortals.xhx.common.pdu.access;
import java.util.Date;
import java.util.List;
import com.mortals.framework.model.BaseEntityLong;

/**
* 访问日志Pdu对象
*
* @author zxfei
* @date 2022-08-17
*/

public class AccessLogPdu extends BaseEntityLong {
    private static final long serialVersionUID = 1L;

    /**
    * 追踪Id
    */
    private String traceID;
    /**
    * 应用名称
    */
    private String appName;
    /**
    * 实例IP
    */
    private String hostName;
    /**
    * 日志等级
    */
    private String logLevel;
    /**
    * 请求者IP
    */
    private String requestIp;
    /**
    * 请求方式
    */
    private String method;
    /**
    * 用户浏览器UA
    */
    private String ua;
    /**
    * 请求URI
    */
    private String uri;
    /**
    * 请求参数，json序列化
    */
    private String requestParam;
    /**
    * 响应结果
    */
    private String response;
    /**
    * 日志产生时间
    */
    private Date logTime;
    /**
    * 持续时间，单位毫秒
    */
    private Integer duration;

    /** 开始 主键ID，主键，自增长 */
    private Long idStart;

    /** 结束 主键ID，主键，自增长 */
    private Long idEnd;

    /** 增加 主键ID，主键，自增长 */
    private Long idIncrement;

    /** 主键ID，主键，自增长列表 */
    private List <Long> idList;

    /** 追踪Id */
    private List<String> traceIDList;

    /** 应用名称 */
    private List<String> appNameList;

    /** 实例IP */
    private List<String> hostNameList;

    /** 日志等级 */
    private List<String> logLevelList;

    /** 请求者IP */
    private List<String> requestIpList;

    /** 请求方式 */
    private List<String> methodList;

    /** 用户浏览器UA */
    private List<String> uaList;

    /** 请求URI */
    private List<String> uriList;

    /** 请求参数，json序列化 */
    private List<String> requestParamList;

    /** 响应结果 */
    private List<String> responseList;

    /** 开始 日志产生时间 */
    private String logTimeStart;

    /** 结束 日志产生时间 */
    private String logTimeEnd;

    /** 开始 持续时间，单位毫秒 */
    private Integer durationStart;

    /** 结束 持续时间，单位毫秒 */
    private Integer durationEnd;

    /** 增加 持续时间，单位毫秒 */
    private Integer durationIncrement;

    /** 持续时间，单位毫秒列表 */
    private List <Integer> durationList;

    /** 开始 创建用户 */
    private Long createUserIdStart;

    /** 结束 创建用户 */
    private Long createUserIdEnd;

    /** 增加 创建用户 */
    private Long createUserIdIncrement;

    /** 创建用户列表 */
    private List <Long> createUserIdList;

    /** 开始 创建时间 */
    private String createTimeStart;

    /** 结束 创建时间 */
    private String createTimeEnd;


    /** OR条件集合，列表项之间是OR，项内容之间是AND，如：(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
    private List<AccessLogPdu> orConditionList;

    /** AND条件集合，列表项之间是AND，项内容之间是OR，如：(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
    private List<AccessLogPdu> andConditionList;

    public AccessLogPdu(){}
    /**
    * 获取 追踪Id
    * @return String
    */
    public String getTraceID(){
        return traceID;
    }
    /**
    * 设置 追踪Id
    * @param traceID
    */
    public void setTraceID(String traceID){
        this.traceID = traceID;
    }
    /**
    * 获取 应用名称
    * @return String
    */
    public String getAppName(){
        return appName;
    }
    /**
    * 设置 应用名称
    * @param appName
    */
    public void setAppName(String appName){
        this.appName = appName;
    }
    /**
    * 获取 实例IP
    * @return String
    */
    public String getHostName(){
        return hostName;
    }
    /**
    * 设置 实例IP
    * @param hostName
    */
    public void setHostName(String hostName){
        this.hostName = hostName;
    }
    /**
    * 获取 日志等级
    * @return String
    */
    public String getLogLevel(){
        return logLevel;
    }
    /**
    * 设置 日志等级
    * @param logLevel
    */
    public void setLogLevel(String logLevel){
        this.logLevel = logLevel;
    }
    /**
    * 获取 请求者IP
    * @return String
    */
    public String getRequestIp(){
        return requestIp;
    }
    /**
    * 设置 请求者IP
    * @param requestIp
    */
    public void setRequestIp(String requestIp){
        this.requestIp = requestIp;
    }
    /**
    * 获取 请求方式
    * @return String
    */
    public String getMethod(){
        return method;
    }
    /**
    * 设置 请求方式
    * @param method
    */
    public void setMethod(String method){
        this.method = method;
    }
    /**
    * 获取 用户浏览器UA
    * @return String
    */
    public String getUa(){
        return ua;
    }
    /**
    * 设置 用户浏览器UA
    * @param ua
    */
    public void setUa(String ua){
        this.ua = ua;
    }
    /**
    * 获取 请求URI
    * @return String
    */
    public String getUri(){
        return uri;
    }
    /**
    * 设置 请求URI
    * @param uri
    */
    public void setUri(String uri){
        this.uri = uri;
    }
    /**
    * 获取 请求参数，json序列化
    * @return String
    */
    public String getRequestParam(){
        return requestParam;
    }
    /**
    * 设置 请求参数，json序列化
    * @param requestParam
    */
    public void setRequestParam(String requestParam){
        this.requestParam = requestParam;
    }
    /**
    * 获取 响应结果
    * @return String
    */
    public String getResponse(){
        return response;
    }
    /**
    * 设置 响应结果
    * @param response
    */
    public void setResponse(String response){
        this.response = response;
    }
    /**
    * 获取 日志产生时间
    * @return Date
    */
    public Date getLogTime(){
        return logTime;
    }
    /**
    * 设置 日志产生时间
    * @param logTime
    */
    public void setLogTime(Date logTime){
        this.logTime = logTime;
    }
    /**
    * 获取 持续时间，单位毫秒
    * @return Integer
    */
    public Integer getDuration(){
        return duration;
    }
    /**
    * 设置 持续时间，单位毫秒
    * @param duration
    */
    public void setDuration(Integer duration){
        this.duration = duration;
    }

    /**
    * 获取 开始 主键ID，主键，自增长
    * @return idStart
    */
    public Long getIdStart(){
        return this.idStart;
    }

    /**
    * 设置 开始 主键ID，主键，自增长
    * @param idStart
    */
    public void setIdStart(Long idStart){
        this.idStart = idStart;
    }

    /**
    * 获取 结束 主键ID，主键，自增长
    * @return $idEnd
    */
    public Long getIdEnd(){
        return this.idEnd;
    }

    /**
    * 设置 结束 主键ID，主键，自增长
    * @param idEnd
    */
    public void setIdEnd(Long idEnd){
        this.idEnd = idEnd;
    }

    /**
    * 获取 增加 主键ID，主键，自增长
    * @return idIncrement
    */
    public Long getIdIncrement(){
        return this.idIncrement;
    }

    /**
    * 设置 增加 主键ID，主键，自增长
    * @param idIncrement
    */
    public void setIdIncrement(Long idIncrement){
        this.idIncrement = idIncrement;
    }

    /**
    * 获取 主键ID，主键，自增长
    * @return idList
    */
    public List<Long> getIdList(){
        return this.idList;
    }

    /**
    * 设置 主键ID，主键，自增长
    * @param idList
    */
    public void setIdList(List<Long> idList){
        this.idList = idList;
    }

    /**
    * 获取 追踪Id
    * @return traceIDList
    */
    public List<String> getTraceIDList(){
        return this.traceIDList;
    }

    /**
    * 设置 追踪Id
    * @param traceIDList
    */
    public void setTraceIDList(List<String> traceIDList){
        this.traceIDList = traceIDList;
    }
    /**
    * 获取 应用名称
    * @return appNameList
    */
    public List<String> getAppNameList(){
        return this.appNameList;
    }

    /**
    * 设置 应用名称
    * @param appNameList
    */
    public void setAppNameList(List<String> appNameList){
        this.appNameList = appNameList;
    }
    /**
    * 获取 实例IP
    * @return hostNameList
    */
    public List<String> getHostNameList(){
        return this.hostNameList;
    }

    /**
    * 设置 实例IP
    * @param hostNameList
    */
    public void setHostNameList(List<String> hostNameList){
        this.hostNameList = hostNameList;
    }
    /**
    * 获取 日志等级
    * @return logLevelList
    */
    public List<String> getLogLevelList(){
        return this.logLevelList;
    }

    /**
    * 设置 日志等级
    * @param logLevelList
    */
    public void setLogLevelList(List<String> logLevelList){
        this.logLevelList = logLevelList;
    }
    /**
    * 获取 请求者IP
    * @return requestIpList
    */
    public List<String> getRequestIpList(){
        return this.requestIpList;
    }

    /**
    * 设置 请求者IP
    * @param requestIpList
    */
    public void setRequestIpList(List<String> requestIpList){
        this.requestIpList = requestIpList;
    }
    /**
    * 获取 请求方式
    * @return methodList
    */
    public List<String> getMethodList(){
        return this.methodList;
    }

    /**
    * 设置 请求方式
    * @param methodList
    */
    public void setMethodList(List<String> methodList){
        this.methodList = methodList;
    }
    /**
    * 获取 用户浏览器UA
    * @return uaList
    */
    public List<String> getUaList(){
        return this.uaList;
    }

    /**
    * 设置 用户浏览器UA
    * @param uaList
    */
    public void setUaList(List<String> uaList){
        this.uaList = uaList;
    }
    /**
    * 获取 请求URI
    * @return uriList
    */
    public List<String> getUriList(){
        return this.uriList;
    }

    /**
    * 设置 请求URI
    * @param uriList
    */
    public void setUriList(List<String> uriList){
        this.uriList = uriList;
    }
    /**
    * 获取 请求参数，json序列化
    * @return requestParamList
    */
    public List<String> getRequestParamList(){
        return this.requestParamList;
    }

    /**
    * 设置 请求参数，json序列化
    * @param requestParamList
    */
    public void setRequestParamList(List<String> requestParamList){
        this.requestParamList = requestParamList;
    }
    /**
    * 获取 响应结果
    * @return responseList
    */
    public List<String> getResponseList(){
        return this.responseList;
    }

    /**
    * 设置 响应结果
    * @param responseList
    */
    public void setResponseList(List<String> responseList){
        this.responseList = responseList;
    }
    /**
    * 获取 开始 日志产生时间
    * @return logTimeStart
    */
    public String getLogTimeStart(){
        return this.logTimeStart;
    }

    /**
    * 设置 开始 日志产生时间
    * @param logTimeStart
    */
    public void setLogTimeStart(String logTimeStart){
        this.logTimeStart = logTimeStart;
    }

    /**
    * 获取 结束 日志产生时间
    * @return logTimeEnd
    */
    public String getLogTimeEnd(){
        return this.logTimeEnd;
    }

    /**
    * 设置 结束 日志产生时间
    * @param logTimeEnd
    */
    public void setLogTimeEnd(String logTimeEnd){
        this.logTimeEnd = logTimeEnd;
    }

    /**
    * 获取 开始 持续时间，单位毫秒
    * @return durationStart
    */
    public Integer getDurationStart(){
        return this.durationStart;
    }

    /**
    * 设置 开始 持续时间，单位毫秒
    * @param durationStart
    */
    public void setDurationStart(Integer durationStart){
        this.durationStart = durationStart;
    }

    /**
    * 获取 结束 持续时间，单位毫秒
    * @return $durationEnd
    */
    public Integer getDurationEnd(){
        return this.durationEnd;
    }

    /**
    * 设置 结束 持续时间，单位毫秒
    * @param durationEnd
    */
    public void setDurationEnd(Integer durationEnd){
        this.durationEnd = durationEnd;
    }

    /**
    * 获取 增加 持续时间，单位毫秒
    * @return durationIncrement
    */
    public Integer getDurationIncrement(){
        return this.durationIncrement;
    }

    /**
    * 设置 增加 持续时间，单位毫秒
    * @param durationIncrement
    */
    public void setDurationIncrement(Integer durationIncrement){
        this.durationIncrement = durationIncrement;
    }

    /**
    * 获取 持续时间，单位毫秒
    * @return durationList
    */
    public List<Integer> getDurationList(){
        return this.durationList;
    }

    /**
    * 设置 持续时间，单位毫秒
    * @param durationList
    */
    public void setDurationList(List<Integer> durationList){
        this.durationList = durationList;
    }

    /**
    * 获取 开始 创建用户
    * @return createUserIdStart
    */
    public Long getCreateUserIdStart(){
        return this.createUserIdStart;
    }

    /**
    * 设置 开始 创建用户
    * @param createUserIdStart
    */
    public void setCreateUserIdStart(Long createUserIdStart){
        this.createUserIdStart = createUserIdStart;
    }

    /**
    * 获取 结束 创建用户
    * @return $createUserIdEnd
    */
    public Long getCreateUserIdEnd(){
        return this.createUserIdEnd;
    }

    /**
    * 设置 结束 创建用户
    * @param createUserIdEnd
    */
    public void setCreateUserIdEnd(Long createUserIdEnd){
        this.createUserIdEnd = createUserIdEnd;
    }

    /**
    * 获取 增加 创建用户
    * @return createUserIdIncrement
    */
    public Long getCreateUserIdIncrement(){
        return this.createUserIdIncrement;
    }

    /**
    * 设置 增加 创建用户
    * @param createUserIdIncrement
    */
    public void setCreateUserIdIncrement(Long createUserIdIncrement){
        this.createUserIdIncrement = createUserIdIncrement;
    }

    /**
    * 获取 创建用户
    * @return createUserIdList
    */
    public List<Long> getCreateUserIdList(){
        return this.createUserIdList;
    }

    /**
    * 设置 创建用户
    * @param createUserIdList
    */
    public void setCreateUserIdList(List<Long> createUserIdList){
        this.createUserIdList = createUserIdList;
    }

    /**
    * 获取 开始 创建时间
    * @return createTimeStart
    */
    public String getCreateTimeStart(){
        return this.createTimeStart;
    }

    /**
    * 设置 开始 创建时间
    * @param createTimeStart
    */
    public void setCreateTimeStart(String createTimeStart){
        this.createTimeStart = createTimeStart;
    }

    /**
    * 获取 结束 创建时间
    * @return createTimeEnd
    */
    public String getCreateTimeEnd(){
        return this.createTimeEnd;
    }

    /**
    * 设置 结束 创建时间
    * @param createTimeEnd
    */
    public void setCreateTimeEnd(String createTimeEnd){
        this.createTimeEnd = createTimeEnd;
    }

    /**
    * 设置  主键ID，主键，自增长
    * @param id
    */
    public AccessLogPdu id(Long id){
	    setId(id);
		return this;
    }

	 /**
    * 设置 开始 主键ID，主键，自增长
    * @param idStart
    */
    public AccessLogPdu idStart(Long idStart){
		this.idStart = idStart;
		return this;
    }

    /**
    * 设置 结束 主键ID，主键，自增长
    * @param idEnd
    */
    public AccessLogPdu idEnd(Long idEnd){
		this.idEnd = idEnd;
		return this;
    }

    /**
    * 设置 增加 主键ID，主键，自增长
    * @param idIncrement
    */
    public AccessLogPdu idIncrement(Long idIncrement){
		this.idIncrement = idIncrement;
		return this;
    }

    /**
    * 设置 主键ID，主键，自增长
    * @param idList
    */
    public AccessLogPdu idList(List<Long> idList){
        this.idList = idList;
		return this;
        }


	/**
    * 设置 追踪Id
    * @param traceID
    */
    public AccessLogPdu traceID(String traceID){
        setTraceID(traceID);
		return this;
    }

    /**
    * 设置 追踪Id
    * @param traceIDList
    */
    public AccessLogPdu traceIDList(List<String> traceIDList){
        this.traceIDList = traceIDList;
		return this;
    }


	/**
    * 设置 应用名称
    * @param appName
    */
    public AccessLogPdu appName(String appName){
        setAppName(appName);
		return this;
    }

    /**
    * 设置 应用名称
    * @param appNameList
    */
    public AccessLogPdu appNameList(List<String> appNameList){
        this.appNameList = appNameList;
		return this;
    }


	/**
    * 设置 实例IP
    * @param hostName
    */
    public AccessLogPdu hostName(String hostName){
        setHostName(hostName);
		return this;
    }

    /**
    * 设置 实例IP
    * @param hostNameList
    */
    public AccessLogPdu hostNameList(List<String> hostNameList){
        this.hostNameList = hostNameList;
		return this;
    }


	/**
    * 设置 日志等级
    * @param logLevel
    */
    public AccessLogPdu logLevel(String logLevel){
        setLogLevel(logLevel);
		return this;
    }

    /**
    * 设置 日志等级
    * @param logLevelList
    */
    public AccessLogPdu logLevelList(List<String> logLevelList){
        this.logLevelList = logLevelList;
		return this;
    }


	/**
    * 设置 请求者IP
    * @param requestIp
    */
    public AccessLogPdu requestIp(String requestIp){
        setRequestIp(requestIp);
		return this;
    }

    /**
    * 设置 请求者IP
    * @param requestIpList
    */
    public AccessLogPdu requestIpList(List<String> requestIpList){
        this.requestIpList = requestIpList;
		return this;
    }


	/**
    * 设置 请求方式
    * @param method
    */
    public AccessLogPdu method(String method){
        setMethod(method);
		return this;
    }

    /**
    * 设置 请求方式
    * @param methodList
    */
    public AccessLogPdu methodList(List<String> methodList){
        this.methodList = methodList;
		return this;
    }


	/**
    * 设置 用户浏览器UA
    * @param ua
    */
    public AccessLogPdu ua(String ua){
        setUa(ua);
		return this;
    }

    /**
    * 设置 用户浏览器UA
    * @param uaList
    */
    public AccessLogPdu uaList(List<String> uaList){
        this.uaList = uaList;
		return this;
    }


	/**
    * 设置 请求URI
    * @param uri
    */
    public AccessLogPdu uri(String uri){
        setUri(uri);
		return this;
    }

    /**
    * 设置 请求URI
    * @param uriList
    */
    public AccessLogPdu uriList(List<String> uriList){
        this.uriList = uriList;
		return this;
    }


	/**
    * 设置 请求参数，json序列化
    * @param requestParam
    */
    public AccessLogPdu requestParam(String requestParam){
        setRequestParam(requestParam);
		return this;
    }

    /**
    * 设置 请求参数，json序列化
    * @param requestParamList
    */
    public AccessLogPdu requestParamList(List<String> requestParamList){
        this.requestParamList = requestParamList;
		return this;
    }


	/**
    * 设置 响应结果
    * @param response
    */
    public AccessLogPdu response(String response){
        setResponse(response);
		return this;
    }

    /**
    * 设置 响应结果
    * @param responseList
    */
    public AccessLogPdu responseList(List<String> responseList){
        this.responseList = responseList;
		return this;
    }


    /**
    * 设置  持续时间，单位毫秒
    * @param duration
    */
    public AccessLogPdu duration(Integer duration){
	    setDuration(duration);
		return this;
    }

	 /**
    * 设置 开始 持续时间，单位毫秒
    * @param durationStart
    */
    public AccessLogPdu durationStart(Integer durationStart){
		this.durationStart = durationStart;
		return this;
    }

    /**
    * 设置 结束 持续时间，单位毫秒
    * @param durationEnd
    */
    public AccessLogPdu durationEnd(Integer durationEnd){
		this.durationEnd = durationEnd;
		return this;
    }

    /**
    * 设置 增加 持续时间，单位毫秒
    * @param durationIncrement
    */
    public AccessLogPdu durationIncrement(Integer durationIncrement){
		this.durationIncrement = durationIncrement;
		return this;
    }

    /**
    * 设置 持续时间，单位毫秒
    * @param durationList
    */
    public AccessLogPdu durationList(List<Integer> durationList){
        this.durationList = durationList;
		return this;
        }

    /**
    * 设置  创建用户
    * @param createUserId
    */
    public AccessLogPdu createUserId(Long createUserId){
	    setCreateUserId(createUserId);
		return this;
    }

	 /**
    * 设置 开始 创建用户
    * @param createUserIdStart
    */
    public AccessLogPdu createUserIdStart(Long createUserIdStart){
		this.createUserIdStart = createUserIdStart;
		return this;
    }

    /**
    * 设置 结束 创建用户
    * @param createUserIdEnd
    */
    public AccessLogPdu createUserIdEnd(Long createUserIdEnd){
		this.createUserIdEnd = createUserIdEnd;
		return this;
    }

    /**
    * 设置 增加 创建用户
    * @param createUserIdIncrement
    */
    public AccessLogPdu createUserIdIncrement(Long createUserIdIncrement){
		this.createUserIdIncrement = createUserIdIncrement;
		return this;
    }

    /**
    * 设置 创建用户
    * @param createUserIdList
    */
    public AccessLogPdu createUserIdList(List<Long> createUserIdList){
        this.createUserIdList = createUserIdList;
		return this;
        }



/**
    * 获取 OR条件集合，列表项之间是OR，项内容之间是AND，如：(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
    * @return orConditionList
    */
    public List<AccessLogPdu> getOrConditionList(){
    return this.orConditionList;
    }

    /**
    * 设置 OR条件集合，列表项之间是OR，项内容之间是AND，如：(list[0].1 and list[0].2) or (list[1].3 and list[1].4)
    * @param orConditionList
    */
    public void setOrConditionList(List<AccessLogPdu> orConditionList){
        this.orConditionList = orConditionList;
    }

    /**
    * 获取 AND条件集合，列表项之间是AND，项内容之间是OR，如：(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
    * @return andConditionList
    */
    public List<AccessLogPdu> getAndConditionList(){
        return this.andConditionList;
    }

    /**
    * 设置 AND条件集合，列表项之间是AND，项内容之间是OR，如：(list[0].1 or list[0].2) and (list[1].3 or list[1].4)
    * @param andConditionList
    */
    public void setAndConditionList(List<AccessLogPdu> andConditionList){
        this.andConditionList = andConditionList;
    }

    @Override
    public int hashCode() {
         return this.getId().hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null) return false;
        if (obj instanceof AccessLogPdu) {
            AccessLogPdu tmp = (AccessLogPdu) obj;
            if (this.getId() == tmp.getId()) {
                 return true;
            }
        }
        return false;
    }

    public void initAttrValue(){

            this.traceID = "";

            this.appName = "";

            this.hostName = "";

            this.logLevel = "";

            this.requestIp = "";

            this.method = "";

            this.ua = "";

            this.uri = "";

            this.requestParam = "";

            this.response = "";

            this.logTime = null;

            this.duration = null;
    }
}