Skip to content

Commit

Permalink
Merge pull request #128 from jshaughn/hwkalerts-111
Browse files Browse the repository at this point in the history
HWKALERTS-111
  • Loading branch information
jshaughn committed Dec 14, 2015
2 parents 6ff2bf1 + c4b6927 commit d2551a1
Show file tree
Hide file tree
Showing 13 changed files with 1,006 additions and 142 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
import org.hawkular.alerts.api.model.condition.EventConditionEval;
import org.hawkular.alerts.api.model.condition.ExternalCondition;
import org.hawkular.alerts.api.model.condition.ExternalConditionEval;
import org.hawkular.alerts.api.model.condition.RateCondition;
import org.hawkular.alerts.api.model.condition.RateConditionEval;
import org.hawkular.alerts.api.model.condition.StringCondition;
import org.hawkular.alerts.api.model.condition.StringConditionEval;
import org.hawkular.alerts.api.model.condition.ThresholdCondition;
Expand Down Expand Up @@ -82,23 +84,10 @@ public ConditionEval deserialize(JsonParser jp, DeserializationContext ctxt)
JsonNode conditionNode = node.get("condition");
Condition condition = deserializeCondition(conditionNode);
switch (condition.getType()) {
case THRESHOLD: {
conditionEval = new ThresholdConditionEval();
ThresholdConditionEval tConditionEval = (ThresholdConditionEval) conditionEval;
if (condition instanceof ThresholdCondition) {
tConditionEval.setCondition((ThresholdCondition) condition);
}
if (node.get("value") != null) {
tConditionEval.setValue(node.get("value").doubleValue());
}
break;
}
case AVAILABILITY: {
conditionEval = new AvailabilityConditionEval();
AvailabilityConditionEval aConditionEval = (AvailabilityConditionEval) conditionEval;
if (condition instanceof AvailabilityCondition) {
aConditionEval.setCondition((AvailabilityCondition) condition);
}
aConditionEval.setCondition((AvailabilityCondition) condition);
if (node.get("value") != null) {
aConditionEval.setValue(AvailabilityType.valueOf(node.get("value").textValue()));
}
Expand All @@ -107,9 +96,7 @@ public ConditionEval deserialize(JsonParser jp, DeserializationContext ctxt)
case COMPARE: {
conditionEval = new CompareConditionEval();
CompareConditionEval cConditionEval = (CompareConditionEval) conditionEval;
if (condition instanceof CompareCondition) {
cConditionEval.setCondition((CompareCondition) condition);
}
cConditionEval.setCondition((CompareCondition) condition);
if (node.get("value1") != null) {
cConditionEval.setValue1(node.get("value1").doubleValue());
}
Expand All @@ -121,12 +108,49 @@ public ConditionEval deserialize(JsonParser jp, DeserializationContext ctxt)
}
break;
}
case EVENT: {
conditionEval = new EventConditionEval();
EventConditionEval evConditionEval = (EventConditionEval) conditionEval;
evConditionEval.setCondition((EventCondition) condition);
if (node.get("value") != null) {
evConditionEval.setValue(node.get("value").traverse(objectCodec).readValueAs(Event.class));
}
break;
}
case EXTERNAL: {
conditionEval = new ExternalConditionEval();
ExternalConditionEval eConditionEval = (ExternalConditionEval) conditionEval;
eConditionEval.setCondition((ExternalCondition) condition);
if (node.get("value") != null) {
eConditionEval.setValue(node.get("value").textValue());
}
break;
}
case RATE: {
conditionEval = new RateConditionEval();
RateConditionEval rConditionEval = (RateConditionEval) conditionEval;
rConditionEval.setCondition((RateCondition) condition);
if (node.get("time") != null) {
rConditionEval.setTime(node.get("time").longValue());
}
if (node.get("value") != null) {
rConditionEval.setValue(node.get("value").doubleValue());
}
if (node.get("previousTime") != null) {
rConditionEval.setPreviousTime(node.get("previousTime").longValue());
}
if (node.get("previousValue") != null) {
rConditionEval.setPreviousValue(node.get("previousValue").doubleValue());
}
if (node.get("rate") != null) {
rConditionEval.setRate(node.get("rate").doubleValue());
}
break;
}
case RANGE: {
conditionEval = new ThresholdRangeConditionEval();
ThresholdRangeConditionEval rConditionEval = (ThresholdRangeConditionEval) conditionEval;
if (condition instanceof ThresholdRangeCondition) {
rConditionEval.setCondition((ThresholdRangeCondition) condition);
}
rConditionEval.setCondition((ThresholdRangeCondition) condition);
if (node.get("value") != null) {
rConditionEval.setValue(node.get("value").doubleValue());
}
Expand All @@ -135,33 +159,18 @@ public ConditionEval deserialize(JsonParser jp, DeserializationContext ctxt)
case STRING: {
conditionEval = new StringConditionEval();
StringConditionEval sConditionEval = (StringConditionEval) conditionEval;
if (condition instanceof StringCondition) {
sConditionEval.setCondition((StringCondition) condition);
}
sConditionEval.setCondition((StringCondition) condition);
if (node.get("value") != null) {
sConditionEval.setValue(node.get("value").textValue());
}
break;
}
case EXTERNAL: {
conditionEval = new ExternalConditionEval();
ExternalConditionEval eConditionEval = (ExternalConditionEval) conditionEval;
if (condition instanceof ExternalCondition) {
eConditionEval.setCondition((ExternalCondition) condition);
}
if (node.get("value") != null) {
eConditionEval.setValue(node.get("value").textValue());
}
break;
}
case EVENT: {
conditionEval = new EventConditionEval();
EventConditionEval evConditionEval = (EventConditionEval) conditionEval;
if (condition instanceof EventCondition) {
evConditionEval.setCondition((EventCondition) condition);
}
case THRESHOLD: {
conditionEval = new ThresholdConditionEval();
ThresholdConditionEval tConditionEval = (ThresholdConditionEval) conditionEval;
tConditionEval.setCondition((ThresholdCondition) condition);
if (node.get("value") != null) {
evConditionEval.setValue(node.get("value").traverse(objectCodec).readValueAs(Event.class));
tConditionEval.setValue(node.get("value").doubleValue());
}
break;
}
Expand Down Expand Up @@ -312,6 +321,26 @@ public static Condition deserializeCondition(JsonNode node) throws JsonProcessin
}
break;
}
case RATE: {
condition = new RateCondition();
RateCondition rCondition = (RateCondition) condition;
if (node.get("dataId") != null) {
rCondition.setDataId(node.get("dataId").textValue());
}
if (node.get("direction") != null) {
rCondition.setDirection(RateCondition.Direction.valueOf(node.get("direction").textValue()));
}
if (node.get("period") != null) {
rCondition.setPeriod(RateCondition.Period.valueOf(node.get("period").textValue()));
}
if (node.get("operator") != null) {
rCondition.setOperator(RateCondition.Operator.valueOf(node.get("operator").textValue()));
}
if (node.get("threshold") != null) {
rCondition.setThreshold(node.get("threshold").doubleValue());
}
break;
}
default:
throw new ConditionEvalException("Unexpected Condition Type [" + conditionType.name() + "]");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,14 @@
*/
package org.hawkular.alerts.api.model.condition;

import static com.fasterxml.jackson.annotation.JsonInclude.*;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import org.hawkular.alerts.api.model.trigger.Mode;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;

/**
* A base class for condition definition.
Expand All @@ -34,8 +33,10 @@
*/
public abstract class Condition implements Serializable {

private static final long serialVersionUID = 1L;

public enum Type {
AVAILABILITY, COMPARE, STRING, THRESHOLD, RANGE, EXTERNAL, EVENT
AVAILABILITY, COMPARE, STRING, THRESHOLD, RANGE, EXTERNAL, EVENT, RATE
}

@JsonInclude
Expand Down

0 comments on commit d2551a1

Please sign in to comment.