|
|
|
@ -33,6 +33,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.ArgumentIntervalProt |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.CalculatedFieldEntityCtxIdProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.CalculatedFieldIdProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.CalculatedFieldStateProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.EntityIdProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.GeofencingArgumentProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.GeofencingZoneProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.SingleValueArgumentProto; |
|
|
|
@ -57,9 +58,11 @@ import org.thingsboard.server.service.cf.ctx.state.alarm.AlarmRuleState; |
|
|
|
import org.thingsboard.server.service.cf.ctx.state.geofencing.GeofencingArgumentEntry; |
|
|
|
import org.thingsboard.server.service.cf.ctx.state.geofencing.GeofencingCalculatedFieldState; |
|
|
|
import org.thingsboard.server.service.cf.ctx.state.geofencing.GeofencingZoneState; |
|
|
|
import org.thingsboard.server.service.cf.ctx.state.propagation.PropagationArgumentEntry; |
|
|
|
import org.thingsboard.server.service.cf.ctx.state.propagation.PropagationCalculatedFieldState; |
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Optional; |
|
|
|
import java.util.TreeMap; |
|
|
|
@ -67,6 +70,8 @@ import java.util.UUID; |
|
|
|
import java.util.function.Function; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import static org.thingsboard.server.common.data.cf.configuration.PropagationCalculatedFieldConfiguration.PROPAGATION_CONFIG_ARGUMENT; |
|
|
|
|
|
|
|
public class CalculatedFieldUtils { |
|
|
|
|
|
|
|
public static CalculatedFieldIdProto toProto(CalculatedFieldId cfId) { |
|
|
|
@ -105,6 +110,7 @@ public class CalculatedFieldUtils { |
|
|
|
case SINGLE_VALUE -> builder.addSingleValueArguments(toSingleValueArgumentProto(argName, (SingleValueArgumentEntry) argEntry)); |
|
|
|
case TS_ROLLING -> builder.addRollingValueArguments(toRollingArgumentProto(argName, (TsRollingArgumentEntry) argEntry)); |
|
|
|
case GEOFENCING -> builder.addGeofencingArguments(toGeofencingArgumentProto(argName, (GeofencingArgumentEntry) argEntry)); |
|
|
|
case PROPAGATION -> builder.addAllPropagationEntityIds(toPropagationEntityIdsProto((PropagationArgumentEntry) argEntry)); |
|
|
|
case RELATED_ENTITIES -> { |
|
|
|
RelatedEntitiesArgumentEntry relatedEntitiesArgumentEntry = (RelatedEntitiesArgumentEntry) argEntry; |
|
|
|
relatedEntitiesArgumentEntry.getEntityInputs() |
|
|
|
@ -133,6 +139,10 @@ public class CalculatedFieldUtils { |
|
|
|
return builder.build(); |
|
|
|
} |
|
|
|
|
|
|
|
private static List<EntityIdProto> toPropagationEntityIdsProto(PropagationArgumentEntry argEntry) { |
|
|
|
return argEntry.getPropagationEntityIds().stream().map(ProtoUtils::toProto).collect(Collectors.toList()); |
|
|
|
} |
|
|
|
|
|
|
|
private static AlarmRuleStateProto toAlarmRuleStateProto(AlarmRuleState ruleState) { |
|
|
|
return AlarmRuleStateProto.newBuilder() |
|
|
|
.setSeverity(Optional.ofNullable(ruleState.getSeverity()).map(Enum::name).orElse("")) |
|
|
|
@ -269,6 +279,10 @@ public class CalculatedFieldUtils { |
|
|
|
proto.getGeofencingArgumentsList().forEach(argProto -> |
|
|
|
state.getArguments().put(argProto.getArgName(), fromGeofencingArgumentProto(argProto))); |
|
|
|
} |
|
|
|
case PROPAGATION -> { |
|
|
|
List<EntityId> propagationEntityIds = proto.getPropagationEntityIdsList().stream().map(ProtoUtils::fromProto).toList(); |
|
|
|
state.getArguments().put(PROPAGATION_CONFIG_ARGUMENT, new PropagationArgumentEntry(propagationEntityIds)); |
|
|
|
} |
|
|
|
case ALARM -> { |
|
|
|
AlarmCalculatedFieldState alarmState = (AlarmCalculatedFieldState) state; |
|
|
|
AlarmStateProto alarmStateProto = proto.getAlarmState(); |
|
|
|
|