package com.hubspot.singularity;
import javax.annotation.Nonnull;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Function;
import com.google.common.base.Optional;
public class SingularityRequestWithState {
private final SingularityRequest request;
private final RequestState state;
private final long timestamp;
public static Function<SingularityRequestWithState, String> REQUEST_STATE_TO_REQUEST_ID = new Function<SingularityRequestWithState, String>() {
@Override
public String apply(@Nonnull SingularityRequestWithState input) {
return input.getRequest().getId();
}
};
public static String getRequestState(Optional<SingularityRequestWithState> maybeRequestWithState) {
if (maybeRequestWithState.isPresent()) {
return maybeRequestWithState.get().getState().name();
}
return "MISSING";
}
public static boolean isActive(Optional<SingularityRequestWithState> maybeRequestWithState) {
return maybeRequestWithState.isPresent() && maybeRequestWithState.get().getState().isRunnable();
}
@JsonCreator
public SingularityRequestWithState(@JsonProperty("request") SingularityRequest request, @JsonProperty("state") RequestState state, @JsonProperty("timestamp") long timestamp) {
this.request = request;
this.state = state;
this.timestamp = timestamp;
}
public long getTimestamp() {
return timestamp;
}
public RequestState getState() {
return state;
}
public SingularityRequest getRequest() {
return request;
}
@Override
public String toString() {
return "SingularityRequestWithState{" +
"request=" + request +
", state=" + state +
", timestamp=" + timestamp +
'}';
}
}