Browse Source

Alarm rules CF: add value type field for condition filter

pull/14223/head
Viacheslav Klimov 11 months ago
parent
commit
aee4b1cee7
  1. 7
      application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java
  2. 3
      application/src/test/java/org/thingsboard/server/cf/AlarmRulesTest.java
  3. 3
      common/data/src/main/java/org/thingsboard/server/common/data/alarm/rule/condition/expression/AlarmConditionFilter.java

7
application/src/main/java/org/thingsboard/server/service/install/DefaultSystemDataLoaderService.java

@ -82,6 +82,7 @@ import org.thingsboard.server.common.data.kv.TimeseriesSaveResult;
import org.thingsboard.server.common.data.mobile.app.MobileApp; import org.thingsboard.server.common.data.mobile.app.MobileApp;
import org.thingsboard.server.common.data.page.PageDataIterable; import org.thingsboard.server.common.data.page.PageDataIterable;
import org.thingsboard.server.common.data.page.PageLink; import org.thingsboard.server.common.data.page.PageLink;
import org.thingsboard.server.common.data.query.EntityKeyValueType;
import org.thingsboard.server.common.data.queue.ProcessingStrategy; import org.thingsboard.server.common.data.queue.ProcessingStrategy;
import org.thingsboard.server.common.data.queue.ProcessingStrategyType; import org.thingsboard.server.common.data.queue.ProcessingStrategyType;
import org.thingsboard.server.common.data.queue.Queue; import org.thingsboard.server.common.data.queue.Queue;
@ -456,6 +457,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
AlarmConditionFilter temperatureAlarmFlagFilter = new AlarmConditionFilter(); AlarmConditionFilter temperatureAlarmFlagFilter = new AlarmConditionFilter();
temperatureAlarmFlagFilter.setArgument("temperatureAlarmFlag"); temperatureAlarmFlagFilter.setArgument("temperatureAlarmFlag");
temperatureAlarmFlagFilter.setValueType(EntityKeyValueType.BOOLEAN);
BooleanFilterPredicate temperatureAlarmFlagAttributePredicate = new BooleanFilterPredicate(); BooleanFilterPredicate temperatureAlarmFlagAttributePredicate = new BooleanFilterPredicate();
temperatureAlarmFlagAttributePredicate.setOperation(BooleanFilterPredicate.BooleanOperation.EQUAL); temperatureAlarmFlagAttributePredicate.setOperation(BooleanFilterPredicate.BooleanOperation.EQUAL);
temperatureAlarmFlagAttributePredicate.setValue(new AlarmConditionValue<>(Boolean.TRUE, null)); temperatureAlarmFlagAttributePredicate.setValue(new AlarmConditionValue<>(Boolean.TRUE, null));
@ -463,6 +465,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
AlarmConditionFilter temperatureFilter = new AlarmConditionFilter(); AlarmConditionFilter temperatureFilter = new AlarmConditionFilter();
temperatureFilter.setArgument("temperature"); temperatureFilter.setArgument("temperature");
temperatureFilter.setValueType(EntityKeyValueType.NUMERIC);
NumericFilterPredicate temperatureFilterPredicate = new NumericFilterPredicate(); NumericFilterPredicate temperatureFilterPredicate = new NumericFilterPredicate();
temperatureFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.GREATER); temperatureFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.GREATER);
temperatureFilterPredicate.setValue(new AlarmConditionValue<>(null, "temperatureAlarmThreshold")); temperatureFilterPredicate.setValue(new AlarmConditionValue<>(null, "temperatureAlarmThreshold"));
@ -479,6 +482,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
AlarmConditionFilter clearTemperatureFilter = new AlarmConditionFilter(); AlarmConditionFilter clearTemperatureFilter = new AlarmConditionFilter();
clearTemperatureFilter.setArgument("temperature"); clearTemperatureFilter.setArgument("temperature");
clearTemperatureFilter.setValueType(EntityKeyValueType.NUMERIC);
NumericFilterPredicate clearTemperatureFilterPredicate = new NumericFilterPredicate(); NumericFilterPredicate clearTemperatureFilterPredicate = new NumericFilterPredicate();
clearTemperatureFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.LESS_OR_EQUAL); clearTemperatureFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.LESS_OR_EQUAL);
clearTemperatureFilterPredicate.setValue(new AlarmConditionValue<>(null, "temperatureAlarmThreshold")); clearTemperatureFilterPredicate.setValue(new AlarmConditionValue<>(null, "temperatureAlarmThreshold"));
@ -517,6 +521,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
AlarmConditionFilter humidityAlarmFlagAttributeFilter = new AlarmConditionFilter(); AlarmConditionFilter humidityAlarmFlagAttributeFilter = new AlarmConditionFilter();
humidityAlarmFlagAttributeFilter.setArgument("humidityAlarmFlag"); humidityAlarmFlagAttributeFilter.setArgument("humidityAlarmFlag");
humidityAlarmFlagAttributeFilter.setValueType(EntityKeyValueType.BOOLEAN);
BooleanFilterPredicate humidityAlarmFlagPredicate = new BooleanFilterPredicate(); BooleanFilterPredicate humidityAlarmFlagPredicate = new BooleanFilterPredicate();
humidityAlarmFlagPredicate.setOperation(BooleanFilterPredicate.BooleanOperation.EQUAL); humidityAlarmFlagPredicate.setOperation(BooleanFilterPredicate.BooleanOperation.EQUAL);
humidityAlarmFlagPredicate.setValue(new AlarmConditionValue<>(Boolean.TRUE, null)); humidityAlarmFlagPredicate.setValue(new AlarmConditionValue<>(Boolean.TRUE, null));
@ -524,6 +529,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
AlarmConditionFilter humidityFilter = new AlarmConditionFilter(); AlarmConditionFilter humidityFilter = new AlarmConditionFilter();
humidityFilter.setArgument("humidity"); humidityFilter.setArgument("humidity");
humidityFilter.setValueType(EntityKeyValueType.NUMERIC);
NumericFilterPredicate humidityFilterPredicate = new NumericFilterPredicate(); NumericFilterPredicate humidityFilterPredicate = new NumericFilterPredicate();
humidityFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.LESS); humidityFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.LESS);
humidityFilterPredicate.setValue(new AlarmConditionValue<>(null, "humidityAlarmThreshold")); humidityFilterPredicate.setValue(new AlarmConditionValue<>(null, "humidityAlarmThreshold"));
@ -540,6 +546,7 @@ public class DefaultSystemDataLoaderService implements SystemDataLoaderService {
AlarmConditionFilter clearHumidityFilter = new AlarmConditionFilter(); AlarmConditionFilter clearHumidityFilter = new AlarmConditionFilter();
clearHumidityFilter.setArgument("humidity"); clearHumidityFilter.setArgument("humidity");
clearHumidityFilter.setValueType(EntityKeyValueType.NUMERIC);
NumericFilterPredicate clearHumidityFilterPredicate = new NumericFilterPredicate(); NumericFilterPredicate clearHumidityFilterPredicate = new NumericFilterPredicate();
clearHumidityFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.GREATER_OR_EQUAL); clearHumidityFilterPredicate.setOperation(NumericFilterPredicate.NumericOperation.GREATER_OR_EQUAL);
clearHumidityFilterPredicate.setValue(new AlarmConditionValue<>(null, "humidityAlarmThreshold")); clearHumidityFilterPredicate.setValue(new AlarmConditionValue<>(null, "humidityAlarmThreshold"));

3
application/src/test/java/org/thingsboard/server/cf/AlarmRulesTest.java

@ -62,6 +62,7 @@ import org.thingsboard.server.common.data.id.CalculatedFieldId;
import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.EventId; import org.thingsboard.server.common.data.id.EventId;
import org.thingsboard.server.common.data.query.EntityKeyValueType;
import org.thingsboard.server.controller.AbstractControllerTest; import org.thingsboard.server.controller.AbstractControllerTest;
import org.thingsboard.server.dao.event.EventDao; import org.thingsboard.server.dao.event.EventDao;
import org.thingsboard.server.dao.service.DaoSqlTest; import org.thingsboard.server.dao.service.DaoSqlTest;
@ -167,6 +168,7 @@ public class AlarmRulesTest extends AbstractControllerTest {
SimpleAlarmConditionExpression simpleExpression = new SimpleAlarmConditionExpression(); SimpleAlarmConditionExpression simpleExpression = new SimpleAlarmConditionExpression();
AlarmConditionFilter filter = new AlarmConditionFilter(); AlarmConditionFilter filter = new AlarmConditionFilter();
filter.setArgument("temperature"); filter.setArgument("temperature");
filter.setValueType(EntityKeyValueType.NUMERIC);
NumericFilterPredicate predicate = new NumericFilterPredicate(); NumericFilterPredicate predicate = new NumericFilterPredicate();
predicate.setOperation(NumericOperation.GREATER_OR_EQUAL); predicate.setOperation(NumericOperation.GREATER_OR_EQUAL);
AlarmConditionValue<Double> thresholdValue = new AlarmConditionValue<>(); AlarmConditionValue<Double> thresholdValue = new AlarmConditionValue<>();
@ -854,6 +856,7 @@ public class AlarmRulesTest extends AbstractControllerTest {
SimpleAlarmConditionExpression simpleExpression = new SimpleAlarmConditionExpression(); SimpleAlarmConditionExpression simpleExpression = new SimpleAlarmConditionExpression();
AlarmConditionFilter filter = new AlarmConditionFilter(); AlarmConditionFilter filter = new AlarmConditionFilter();
filter.setArgument(argument); filter.setArgument(argument);
filter.setValueType(EntityKeyValueType.STRING);
StringFilterPredicate predicate = new StringFilterPredicate(); StringFilterPredicate predicate = new StringFilterPredicate();
predicate.setOperation(stringOperation); predicate.setOperation(stringOperation);
predicate.setValue(conditionValue); predicate.setValue(conditionValue);

3
common/data/src/main/java/org/thingsboard/server/common/data/alarm/rule/condition/expression/AlarmConditionFilter.java

@ -20,6 +20,7 @@ import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import org.thingsboard.server.common.data.alarm.rule.condition.expression.predicate.KeyFilterPredicate; import org.thingsboard.server.common.data.alarm.rule.condition.expression.predicate.KeyFilterPredicate;
import org.thingsboard.server.common.data.query.EntityKeyValueType;
import java.io.Serializable; import java.io.Serializable;
@ -28,6 +29,8 @@ public class AlarmConditionFilter implements Serializable {
@NotBlank @NotBlank
private String argument; private String argument;
@NotNull
private EntityKeyValueType valueType;
@Valid @Valid
@NotNull @NotNull
private KeyFilterPredicate predicate; private KeyFilterPredicate predicate;

Loading…
Cancel
Save