package org.stagemonitor.alerting.check;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Collection;
/**
* The result of a check
*/
public class CheckResult {
private final String failingExpression;
private final Status status;
private final double currentValue;
@JsonCreator
public CheckResult(@JsonProperty("failingExpression") String failingExpression,
@JsonProperty("currentValue") double currentValue,
@JsonProperty("status")Status status) {
this.failingExpression = failingExpression;
this.currentValue = currentValue;
this.status = status;
}
public static Status getMostSevereStatus(Collection<CheckResult> results) {
Status mostSevereStatus = Status.OK;
for (CheckResult result : results) {
if (result.getStatus().isMoreSevere(mostSevereStatus)) {
mostSevereStatus = result.getStatus();
}
}
return mostSevereStatus;
}
public String getFailingExpression() {
return failingExpression;
}
public Status getStatus() {
return status;
}
public double getCurrentValue() {
return currentValue;
}
public enum Status {
CRITICAL(3), ERROR(2), WARN(1), OK(0);
private final int severity;
Status(int severity) {
this.severity = severity;
}
public boolean isMoreSevere(Status other) {
return severity > other.severity;
}
}
}