package com.hqyg.disjob.register.domain; import java.io.Serializable; import com.hqyg.disjob.common.Constants; /** * ZooKeeper上job属性实体映射 * @author Disjob * @data */ public class Job implements Serializable { private static final long serialVersionUID = -7532210092518686666L; private String groupName; private String jobName; private String cronExpression; private String jobPath; private String parameters; private int shardingCount; private int fetchDataCount; private String shardingItemParameters; private boolean failover; private boolean misfire; /** 是否马上开始执行(比如设置时间是5分钟,那么5分钟后才执行),如果设置为true,则现在执行一次 */ private boolean fireNow; /** 任务状态0未激活 1可运行 2正在运行 3暂停 */ private int jobStatus = 0; private String desc; /** 执行情况记录 */ private JobExecution exe; /** * 该job被分配到slave的IP */ private String slaveIp; /** * 任务上次执行时间 */ private String lastFireTime; /** * 任务结束时间 */ private String endTime; /** * 是否并行,false:否,true:是 */ private boolean ifParallel; /** * 超时时间,单位是s */ private long timeOut; /** * 对group下的job进行分类 */ private String category; /** * 主机ip */ private String host; /** * 主机端口 */ private int port; /** * 文件路径 */ private String filePath; /** * 类名 */ private String className; /** * 方法名 */ private String methodName; /** * 是否广播模式 */ private boolean ifBroadcast = false; public long getTimeOut() { // 如果没有设置超时时间,则使用默认超时时间10分钟 if (timeOut == 0) { return Constants.EJOB_EXECUTE_TIMEOUT; } return timeOut; } public void setTimeOut(long timeOut) { this.timeOut = timeOut; } public String getLastFireTime() { return lastFireTime; } public void setLastFireTime(String lastFireTime) { this.lastFireTime = lastFireTime; } public String getEndTime() { return endTime; } public void setEndTime(String endTime) { this.endTime = endTime; } public String getGroupName() { return groupName; } public void setGroupName(String groupName) { this.groupName = groupName; } public String getJobName() { return jobName; } public void setJobName(String jobName) { this.jobName = jobName; } public String getCronExpression() { return cronExpression; } public void setCronExpression(String cronExpression) { this.cronExpression = cronExpression; } public String getJobPath() { return jobPath; } public void setJobPath(String jobPath) { this.jobPath = jobPath; } public String getParameters() { return parameters; } public void setParameters(String parameters) { this.parameters = parameters; } public int getShardingCount() { return shardingCount; } public void setShardingCount(int shardingCount) { this.shardingCount = shardingCount; } public int getFetchDataCount() { return fetchDataCount; } public void setFetchDataCount(int fetchDataCount) { this.fetchDataCount = fetchDataCount; } public String getShardingItemParameters() { return shardingItemParameters; } public void setShardingItemParameters(String shardingItemParameters) { this.shardingItemParameters = shardingItemParameters; } public boolean isFailover() { return failover; } public void setFailover(boolean failover) { this.failover = failover; } public boolean isMisfire() { return misfire; } public void setMisfire(boolean misfire) { this.misfire = misfire; } public boolean isFireNow() { return fireNow; } public void setFireNow(boolean fireNow) { this.fireNow = fireNow; } public int getJobStatus() { return jobStatus; } public void setJobStatus(int jobStatus) { this.jobStatus = jobStatus; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public JobExecution getExe() { return exe; } public void setExe(JobExecution exe) { this.exe = exe; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getMethodName() { return methodName; } public void setMethodName(String methodName) { this.methodName = methodName; } public Job() { } public Job(String host, int port, String groupName, String jobName, String filePath, String className, String methodName, String cronExpression) { super(); this.host = host; this.port = port; this.groupName = groupName; this.jobName = jobName; this.filePath = filePath; this.className = className; this.methodName = methodName; this.cronExpression = cronExpression; } public Job(String groupName, String jobName) { super(); this.groupName = groupName; this.jobName = jobName; } /** * group和jobname唯一确定一个job */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((groupName == null) ? 0 : groupName.hashCode()); result = prime * result + ((jobName == null) ? 0 : jobName.hashCode()); return result; } // 根据group和jobname唯一确定一个job,故equals和hashcode必须以这两个值重写 @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Job other = (Job) obj; if (groupName == null) { if (other.groupName != null) return false; } else if (!groupName.equals(other.groupName)) return false; if (jobName == null) { if (other.jobName != null) return false; } else if (!jobName.equals(other.jobName)) return false; return true; } public String getSlaveIp() { return slaveIp; } public void setSlaveIp(String slaveIp) { this.slaveIp = slaveIp; } public boolean isIfParallel() { return ifParallel; } public void setIfParallel(boolean ifParallel) { this.ifParallel = ifParallel; } public boolean isIfBroadcast() { return ifBroadcast; } public void setIfBroadcast(boolean ifBroadcast) { this.ifBroadcast = ifBroadcast; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } @Override public String toString() { return "Job [groupName=" + groupName + ", jobName=" + jobName + ", cronExpression=" + cronExpression + ", jobPath=" + jobPath + ", parameters=" + parameters + ", shardingCount=" + shardingCount + ", fetchDataCount=" + fetchDataCount + ", shardingItemParameters=" + shardingItemParameters + ", failover=" + failover + ", misfire=" + misfire + ", fireNow=" + fireNow + ", jobStatus=" + jobStatus + ", desc=" + desc + ", exe=" + exe + ", slaveIp=" + slaveIp + ", lastFireTime=" + lastFireTime + ", endTime=" + endTime + ", ifParallel=" + ifParallel + ", timeOut=" + timeOut + ", category=" + category + ", host=" + host + ", port=" + port + ", filePath=" + filePath + ", className=" + className + ", methodName=" + methodName + ", ifBroadcast=" + ifBroadcast + "]"; } }