
com.hubspot.singularity.SingularityTaskIdHistory Maven / Gradle / Ivy
The newest version!
package com.hubspot.singularity;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.collect.ComparisonChain;
public class SingularityTaskIdHistory implements Comparable {
private final SingularityTaskId taskId;
private final long updatedAt;
private final Optional lastTaskState;
private final Optional runId;
public static SingularityTaskIdHistory fromTaskIdAndTaskAndUpdates(SingularityTaskId taskId, SingularityTask task, List updates) {
ExtendedTaskState lastTaskState = null;
long updatedAt = taskId.getStartedAt();
if (updates != null && !updates.isEmpty()) {
SingularityTaskHistoryUpdate lastUpdate = updates.get(0);
for (SingularityTaskHistoryUpdate update : updates.subList(1, updates.size())) {
if (update.getTimestamp() > lastUpdate.getTimestamp()) {
lastUpdate = update;
}
}
lastTaskState = lastUpdate.getTaskState();
updatedAt = lastUpdate.getTimestamp();
}
return new SingularityTaskIdHistory(taskId, updatedAt, Optional.fromNullable(lastTaskState), task.getTaskRequest().getPendingTask().getRunId());
}
@JsonCreator
public SingularityTaskIdHistory(@JsonProperty("taskId") SingularityTaskId taskId, @JsonProperty("updatedAt") long updatedAt,
@JsonProperty("lastStatus") Optional lastTaskState, @JsonProperty("runId") Optional runId) {
this.taskId = taskId;
this.updatedAt = updatedAt;
this.lastTaskState = lastTaskState;
this.runId = runId;
}
@Override
public int compareTo(SingularityTaskIdHistory o) {
return ComparisonChain.start()
.compare(o.getUpdatedAt(), updatedAt)
.compare(taskId.getId(), o.getTaskId().getId())
.result();
}
@Override
public int hashCode() {
return Objects.hashCode(taskId, updatedAt, lastTaskState, runId);
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if (other == null || other.getClass() != this.getClass()) {
return false;
}
SingularityTaskIdHistory that = (SingularityTaskIdHistory) other;
return Objects.equal(this.taskId , that.taskId)
&& Objects.equal(this.updatedAt , that.updatedAt)
&& Objects.equal(this.lastTaskState , that.lastTaskState)
&& Objects.equal(this.runId, that.runId);
}
public SingularityTaskId getTaskId() {
return taskId;
}
public Optional getLastTaskState() {
return lastTaskState;
}
public long getUpdatedAt() {
return updatedAt;
}
public Optional getRunId() {
return runId;
}
@Override
public String toString() {
return "SingularityTaskIdHistory [taskId=" + taskId + ", updatedAt=" + updatedAt + ", lastTaskState=" + lastTaskState + ", runId=" + runId + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy