package com.taobao.zeus.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.taobao.zeus.model.processer.Processer;
public class JobDescriptor implements Serializable {
private static final long serialVersionUID = 1L;
private Map<String, String> properties = new HashMap<String, String>();
private String cronExpression;
private List<String> dependencies = new ArrayList<String>();
private String id;
private String toJobId;
private String name;
private String desc;
private String groupId;
private String owner;
private Boolean auto = false;
private List<Map<String, String>> resources = new ArrayList<Map<String, String>>();
private JobRunType jobRunType;
private JobScheduleType jobScheduleType;
/* private String script;*/
private String timezone;
private List<Processer> preProcessers = new ArrayList<Processer>();
private List<Processer> postProcessers = new ArrayList<Processer>();
private String offRaw="0";
private String cycle;
// 周期任务的依赖,key为任务ID,value为任务周期
private Map<String, String> depdCycleJob = new HashMap<String, String>();
private long startTimestamp;
private String startTime;
private String statisStartTime;
private String statisEndTime;
private String host;
private String hostGroupId;
public JobDescriptor getCopy() {
JobDescriptor jobDescriptor = new JobDescriptor();
jobDescriptor.setAuto(this.getAuto());
jobDescriptor.setCronExpression(this.getCronExpression());
jobDescriptor.setCycle(this.getCycle());
jobDescriptor.setDepdCycleJob(this.getDepdCycleJob());
jobDescriptor.setDependencies(this.getDependencies());
jobDescriptor.setDesc(this.getDesc());
jobDescriptor.setGroupId(this.getGroupId());
jobDescriptor.setId(this.getId());
jobDescriptor.setToJobId(this.getToJobId());
jobDescriptor.setJobType(this.getJobType());
jobDescriptor.setName(this.getName());
jobDescriptor.setOffRaw(this.getOffRaw());
jobDescriptor.setOwner(this.getOwner());
jobDescriptor.setPostProcessers(this.getPostProcessers());
jobDescriptor.setPreProcessers(this.getPreProcessers());
jobDescriptor.setProperties(this.getProperties());
jobDescriptor.setResources(this.getResources());
jobDescriptor.setScheduleType(this.getScheduleType());
/* jobDescriptor.setScript(this.getScript());*/
jobDescriptor.setStartTime(this.getStartTime());
jobDescriptor.setStartTimestamp(this.getStartTimestamp());
jobDescriptor.setStatisEndTime(this.getStatisEndTime());
jobDescriptor.setStatisStartTime(this.getStatisStartTime());
jobDescriptor.setTimezone(this.getTimezone());
jobDescriptor.setHostGroupId(this.getHostGroupId());
return jobDescriptor;
}
public String getToJobId() {
return toJobId;
}
public void setToJobId(String toJobId) {
this.toJobId = toJobId;
}
public List<Map<String, String>> getResources() {
return resources;
}
public String getCronExpression() {
return cronExpression;
}
public List<String> getDependencies() {
return dependencies;
}
public String getDesc() {
return desc;
}
public String getGroupId() {
return groupId;
}
public String getId() {
return id;
}
public JobRunType getJobType() {
return jobRunType;
}
public String getName() {
return name;
}
public String getOwner() {
return owner;
}
public JobScheduleType getScheduleType() {
return jobScheduleType;
}
public boolean hasDependencies() {
return !dependencies.isEmpty();
}
public void setCronExpression(String cronExpression) {
this.cronExpression = cronExpression;
}
public void setDependencies(List<String> depends) {
this.dependencies = depends;
}
public void setDesc(String desc) {
this.desc = desc;
}
public void setJobType(JobRunType type) {
this.jobRunType = type;
}
public void setName(String name) {
this.name = name;
}
public void setOwner(String owner) {
this.owner = owner;
}
public void setScheduleType(JobScheduleType type) {
this.jobScheduleType = type;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public void setId(String id) {
this.id = id;
}
public void setResources(List<Map<String, String>> resources) {
this.resources = resources;
}
public Map<String, String> getProperties() {
return properties;
}
public void setProperties(Map<String, String> properties) {
this.properties = properties;
}
public Boolean getAuto() {
return auto;
}
public void setAuto(Boolean auto) {
this.auto = auto;
}
/*public String getScript() {
return script;
}
public void setScript(String script) {
this.script = script;
}*/
public enum JobRunType {
MapReduce("main"), Shell("shell"), Hive("hive");
private final String id;
JobRunType(String s) {
this.id = s;
}
@Override
public String toString() {
return id;
}
public static JobRunType parser(String v) {
for (JobRunType type : JobRunType.values()) {
if (type.toString().equals(v)) {
return type;
}
}
return null;
}
}
public enum JobScheduleType {
Independent(0), Dependent(1), CyleJob(2);
private Integer type;
private JobScheduleType(Integer type) {
this.type = type;
}
@Override
public String toString() {
return type.toString();
}
public static JobScheduleType parser(String value) {
if ("0".equals(value)) {
return Independent;
}
if ("1".equals(value)) {
return Dependent;
}
if ("2".equals(value)) {
return CyleJob;
}
return null;
}
public static JobScheduleType parser(Integer v) {
for (JobScheduleType t : JobScheduleType.values()) {
if (t.getType().equals(v)) {
return t;
}
}
return null;
}
public Integer getType() {
return type;
}
}
public List<Processer> getPreProcessers() {
return preProcessers;
}
public void setPreProcessers(List<Processer> preProcessers) {
this.preProcessers = preProcessers;
}
public List<Processer> getPostProcessers() {
return postProcessers;
}
public void setPostProcessers(List<Processer> postProcessers) {
this.postProcessers = postProcessers;
}
public String getTimezone() {
return timezone;
}
public void setTimezone(String timezone) {
this.timezone = timezone;
}
public String getCycle() {
return cycle;
}
public void setCycle(String cycle) {
this.cycle = cycle;
}
public String getOffRaw() {
return offRaw;
}
public void setOffRaw(String offRaw) {
this.offRaw = offRaw;
}
public long getStartTimestamp() {
return startTimestamp;
}
public void setStartTimestamp(long startTimestamp) {
this.startTimestamp = startTimestamp;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getStatisStartTime() {
return statisStartTime;
}
public void setStatisStartTime(String statisStartTime) {
this.statisStartTime = statisStartTime;
}
public String getStatisEndTime() {
return statisEndTime;
}
public void setStatisEndTime(String statisEndTime) {
this.statisEndTime = statisEndTime;
}
public Map<String, String> getDepdCycleJob() {
return depdCycleJob;
}
public void setDepdCycleJob(Map<String, String> depdCycleJob) {
this.depdCycleJob = depdCycleJob;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getHostGroupId() {
return hostGroupId;
}
public void setHostGroupId(String hostGroupId) {
this.hostGroupId = hostGroupId;
}
}