Browse Source

Merge pull request #14223 from irynamatveieva/fix/propagation-cf

Replaced direction and relationType with RelationPathLevel in Propagation CF config
pull/14226/head
Viacheslav Klimov 9 months ago
committed by GitHub
parent
commit
c748cf83b1
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      application/src/test/java/org/thingsboard/server/cf/CalculatedFieldIntegrationTest.java
  2. 3
      application/src/test/java/org/thingsboard/server/controller/CalculatedFieldControllerTest.java
  3. 4
      application/src/test/java/org/thingsboard/server/service/cf/ctx/state/PropagationCalculatedFieldStateTest.java
  4. 10
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/PropagationCalculatedFieldConfiguration.java
  5. 4
      common/data/src/main/java/org/thingsboard/server/common/data/relation/RelationPathLevel.java
  6. 7
      common/data/src/test/java/org/thingsboard/server/common/data/cf/configuration/PropagationCalculatedFieldConfigurationTest.java

6
application/src/test/java/org/thingsboard/server/cf/CalculatedFieldIntegrationTest.java

@ -1025,8 +1025,7 @@ public class CalculatedFieldIntegrationTest extends CalculatedFieldControllerTes
cf.setConfigurationVersion(1);
PropagationCalculatedFieldConfiguration cfg = new PropagationCalculatedFieldConfiguration();
cfg.setDirection(EntitySearchDirection.TO);
cfg.setRelationType(EntityRelation.CONTAINS_TYPE);
cfg.setRelation(new RelationPathLevel(EntitySearchDirection.TO, EntityRelation.CONTAINS_TYPE));
cfg.setApplyExpressionToResolvedArguments(true);
Argument arg = new Argument();
@ -1105,8 +1104,7 @@ public class CalculatedFieldIntegrationTest extends CalculatedFieldControllerTes
cf.setConfigurationVersion(1);
PropagationCalculatedFieldConfiguration cfg = new PropagationCalculatedFieldConfiguration();
cfg.setDirection(EntitySearchDirection.TO);
cfg.setRelationType(EntityRelation.CONTAINS_TYPE);
cfg.setRelation(new RelationPathLevel(EntitySearchDirection.TO, EntityRelation.CONTAINS_TYPE));
cfg.setApplyExpressionToResolvedArguments(false); // arguments-only mode
Argument arg = new Argument();

3
application/src/test/java/org/thingsboard/server/controller/CalculatedFieldControllerTest.java

@ -271,8 +271,7 @@ public class CalculatedFieldControllerTest extends AbstractControllerTest {
private CalculatedFieldConfiguration getPropagationCalculatedFieldConfig(Map<String, Argument> arguments) {
var config = new PropagationCalculatedFieldConfiguration();
config.setRelationType(EntityRelation.CONTAINS_TYPE);
config.setDirection(EntitySearchDirection.TO);
config.setRelation(new RelationPathLevel(EntitySearchDirection.TO, EntityRelation.CONTAINS_TYPE));
config.setApplyExpressionToResolvedArguments(false);
config.setExpression(null);

4
application/src/test/java/org/thingsboard/server/service/cf/ctx/state/PropagationCalculatedFieldStateTest.java

@ -42,6 +42,7 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.kv.DoubleDataEntry;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.relation.EntitySearchDirection;
import org.thingsboard.server.common.data.relation.RelationPathLevel;
import org.thingsboard.server.common.stats.DefaultStatsFactory;
import org.thingsboard.server.dao.usagerecord.ApiLimitService;
import org.thingsboard.server.service.cf.PropagationCalculatedFieldResult;
@ -222,8 +223,7 @@ public class PropagationCalculatedFieldStateTest {
private CalculatedFieldConfiguration getCalculatedFieldConfig(boolean applyExpressionToResolvedArguments) {
var config = new PropagationCalculatedFieldConfiguration();
config.setDirection(EntitySearchDirection.TO);
config.setRelationType(EntityRelation.CONTAINS_TYPE);
config.setRelation(new RelationPathLevel(EntitySearchDirection.TO, EntityRelation.CONTAINS_TYPE));
config.setApplyExpressionToResolvedArguments(applyExpressionToResolvedArguments);
Argument temperatureArg = new Argument();

10
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/PropagationCalculatedFieldConfiguration.java

@ -15,13 +15,12 @@
*/
package org.thingsboard.server.common.data.cf.configuration;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.thingsboard.server.common.data.StringUtils;
import org.thingsboard.server.common.data.cf.CalculatedFieldType;
import org.thingsboard.server.common.data.relation.EntitySearchDirection;
import org.thingsboard.server.common.data.relation.RelationPathLevel;
import java.util.List;
@ -32,10 +31,9 @@ public class PropagationCalculatedFieldConfiguration extends BaseCalculatedField
public static final String PROPAGATION_CONFIG_ARGUMENT = "propagationCtx";
@Valid
@NotNull
private EntitySearchDirection direction;
@NotBlank
private String relationType;
private RelationPathLevel relation;
private boolean applyExpressionToResolvedArguments;
@ -77,7 +75,7 @@ public class PropagationCalculatedFieldConfiguration extends BaseCalculatedField
public Argument toPropagationArgument() {
var refDynamicSourceConfiguration = new RelationPathQueryDynamicSourceConfiguration();
refDynamicSourceConfiguration.setLevels(List.of(new RelationPathLevel(direction, relationType)));
refDynamicSourceConfiguration.setLevels(List.of(relation));
var propagationArgument = new Argument();
propagationArgument.setRefDynamicSourceConfiguration(refDynamicSourceConfiguration);
return propagationArgument;

4
common/data/src/main/java/org/thingsboard/server/common/data/relation/RelationPathLevel.java

@ -15,9 +15,11 @@
*/
package org.thingsboard.server.common.data.relation;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import org.thingsboard.server.common.data.StringUtils;
public record RelationPathLevel(EntitySearchDirection direction, String relationType) {
public record RelationPathLevel(@NotNull EntitySearchDirection direction, @NotBlank String relationType) {
public void validate() {
if (direction == null) {

7
common/data/src/test/java/org/thingsboard/server/common/data/cf/configuration/PropagationCalculatedFieldConfigurationTest.java

@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.cf.CalculatedFieldType;
import org.thingsboard.server.common.data.id.DeviceId;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.relation.EntitySearchDirection;
import org.thingsboard.server.common.data.relation.RelationPathLevel;
import java.util.Map;
import java.util.UUID;
@ -71,7 +72,7 @@ public class PropagationCalculatedFieldConfigurationTest {
assertThatThrownBy(cfg::validate)
.isInstanceOf(IllegalArgumentException.class)
.hasMessage("At least one argument must be configured with the 'Current entity' " +
"source entity type for 'Expression result' propagation mode!");
"source entity type for 'Expression result' propagation mode!");
}
@Test
@ -95,6 +96,7 @@ public class PropagationCalculatedFieldConfigurationTest {
@Test
void validateShouldThrowWhenReferencedEntityKeyIsNotSet() {
var cfg = new PropagationCalculatedFieldConfiguration();
cfg.setRelation(new RelationPathLevel(EntitySearchDirection.TO, EntityRelation.CONTAINS_TYPE));
Argument argument = new Argument();
cfg.setArguments(Map.of("someArgumentName", argument));
assertThatThrownBy(cfg::validate)
@ -128,8 +130,7 @@ public class PropagationCalculatedFieldConfigurationTest {
@Test
void validateToPropagationArgumentMethodCallReturnCorrectArgument() {
var cfg = new PropagationCalculatedFieldConfiguration();
cfg.setDirection(EntitySearchDirection.TO);
cfg.setRelationType(EntityRelation.CONTAINS_TYPE);
cfg.setRelation(new RelationPathLevel(EntitySearchDirection.TO, EntityRelation.CONTAINS_TYPE));
Argument propagationArgument = cfg.toPropagationArgument();
assertThat(propagationArgument).isNotNull();

Loading…
Cancel
Save