package com.hubspot.singularity;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public class SingularityTaskShellCommandRequestId {
private final SingularityTaskId taskId;
private final String name;
private final String safeName;
private final long timestamp;
@JsonCreator
public SingularityTaskShellCommandRequestId(@JsonProperty("taskId") SingularityTaskId taskId, @JsonProperty("name") String name, @JsonProperty("timestamp") long timestamp) {
this.taskId = taskId;
this.timestamp = timestamp;
this.name = name;
this.safeName = name.replace("/", "");
}
@JsonIgnore
public String getId() {
return String.format("%s-%s", getTaskId(), getSubIdForTaskHistory());
}
@JsonIgnore
public String getSubIdForTaskHistory() {
return String.format("%s-%s", safeName, getTimestamp());
}
public SingularityTaskId getTaskId() {
return taskId;
}
public String getName() {
return name;
}
public long getTimestamp() {
return timestamp;
}
@Override
public int hashCode() {
return getId().hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
SingularityTaskShellCommandRequestId other = (SingularityTaskShellCommandRequestId) obj;
return getId().equals(other.getId());
}
@Override
public String toString() {
return "SingularityTaskShellCommandRequestId{" +
"taskId=" + taskId +
", name='" + name + '\'' +
", safeName='" + safeName + '\'' +
", timestamp=" + timestamp +
"} " + super.toString();
}
}