@Override
public Status evaluate(double dsValue) {
if (isThresholdExceeded(dsValue)) {
if (isArmed()) {
setExceededCount(getExceededCount() + 1);
LOG.debug("evaluate: {} threshold exceeded, count={}", getType(), getExceededCount());
if (isTriggerCountExceeded()) {
LOG.debug("evaluate: {} threshold triggered", getType());
setExceededCount(1);
setArmed(false);
return Status.TRIGGERED;
}
}
} else if (isRearmExceeded(dsValue)) {
if (!isArmed()) {
LOG.debug("evaluate: {} threshold rearmed", getType());
setArmed(true);
setExceededCount(0);
return Status.RE_ARMED;
}
if (getExceededCount() > 0) {
LOG.debug("evaluate: resetting {} threshold count to 0, because the current value indicates that the in-progress threshold has been rearmed, but it doesn't triggered yet.", getType());
setExceededCount(0);
}
} else {
LOG.debug("evaluate: resetting {} threshold count to 0", getType());
setExceededCount(0);
}
return Status.NO_CHANGE;
}