package org.ourgrid.broker.status;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import org.ourgrid.common.specification.job.JobSpecification;
public class JobStatusInfo implements Serializable, Comparable<JobStatusInfo> {
/**
*
*/
private static final long serialVersionUID = 5595989079578058777L;
public static final int FAILED = 0;
public static final int FINISHED = 1;
public static final int ABORTED = 2;
public static final int CANCELLED = 3;
public static final int UNSTARTED = 4;
public static final int RUNNING = 5;
public static final int SABOTAGED = 6;
private int jobID;
private JobSpecification jobSpec;
private int state;
private List<TaskStatusInfo> tasks;
private long creationTime;
private long finalizationTime;
private Map<String, Long> peersToRequests;
public JobStatusInfo() {}
public JobStatusInfo(int jobID, JobSpecification jobSpec, int state, List<TaskStatusInfo> tasks, long creationTime,
long finalizationTime) {
this.jobID = jobID;
this.jobSpec = jobSpec;
this.state = state;
this.tasks = tasks;
this.creationTime = creationTime;
this.finalizationTime = finalizationTime;
}
public int getJobId() {
return jobID;
}
public JobSpecification getSpec() {
return jobSpec;
}
public int getState() {
return state;
}
public List<TaskStatusInfo> getTasks() {
return tasks;
}
public TaskStatusInfo getTaskByID(int id) {
for (TaskStatusInfo task : this.tasks) {
if (task.getTaskId() == id) {
return task;
}
}
return null;
}
public static String getState(int state) {
String description;
switch (state) {
case ABORTED:
description = "ABORTED";
break;
case CANCELLED:
description = "CANCELLED";
break;
case FAILED:
description = "FAILED";
break;
case FINISHED:
description = "FINISHED";
break;
case RUNNING:
description = "RUNNING";
break;
case SABOTAGED:
description = "SABOTAGED";
break;
case UNSTARTED:
description = "UNSTARTED";
break;
default:
description = null;
}
return description;
}
public boolean isRunning() {
return RUNNING == state || UNSTARTED == state;
}
public void setJobId(int jobID) {
this.jobID = jobID;
}
public JobSpecification getJobSpec() {
return jobSpec;
}
public void setJobSpec(JobSpecification jobSpec) {
this.jobSpec = jobSpec;
}
public void setState(int state) {
this.state = state;
}
public void setTasks(List<TaskStatusInfo> tasks) {
this.tasks = tasks;
}
public long getCreationTime() {
return creationTime;
}
public void setCreationTime(long creationTime) {
this.creationTime = creationTime;
}
public long getFinalizationTime() {
return finalizationTime;
}
public void setFinalizationTime(long finalizationTime) {
this.finalizationTime = finalizationTime;
}
public void setPeersToRequests(Map<String, Long> peersToRequests) {
this.peersToRequests = peersToRequests;
}
public Map<String, Long> getPeersToRequests() {
return peersToRequests;
}
public int compareTo(JobStatusInfo o) {
return jobID - o.jobID;
}
}