|
|
|
@ -36,7 +36,6 @@ import org.thingsboard.server.common.data.kv.TsKvEntry; |
|
|
|
import org.thingsboard.server.common.data.plugin.ComponentLifecycleEvent; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.KeyValueProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.KeyValueType; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.SubscriptionMgrMsgProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmDeleteProto; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmUpdateProto; |
|
|
|
@ -54,6 +53,7 @@ import org.thingsboard.server.service.ws.notification.sub.NotificationsSubscript |
|
|
|
import org.thingsboard.server.service.ws.telemetry.sub.AlarmSubscriptionUpdate; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.HashSet; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
@ -62,6 +62,14 @@ import java.util.UUID; |
|
|
|
|
|
|
|
public class TbSubscriptionUtils { |
|
|
|
|
|
|
|
private static final DataType[] dataTypeByProtoNumber; |
|
|
|
|
|
|
|
static { |
|
|
|
int arraySize = Arrays.stream(DataType.values()).mapToInt(DataType::getProtoNumber).max().orElse(0); |
|
|
|
dataTypeByProtoNumber = new DataType[arraySize + 1]; |
|
|
|
Arrays.stream(DataType.values()).forEach(dataType -> dataTypeByProtoNumber[dataType.getProtoNumber()] = dataType); |
|
|
|
} |
|
|
|
|
|
|
|
public static ToCoreMsg toSubEventProto(String serviceId, TbEntitySubEvent event) { |
|
|
|
SubscriptionMgrMsgProto.Builder msgBuilder = SubscriptionMgrMsgProto.newBuilder(); |
|
|
|
var builder = TbEntitySubEventProto.newBuilder() |
|
|
|
@ -235,7 +243,7 @@ public class TbSubscriptionUtils { |
|
|
|
private static TsKvProto.Builder toKeyValueProto(long ts, KvEntry attr) { |
|
|
|
KeyValueProto.Builder dataBuilder = KeyValueProto.newBuilder(); |
|
|
|
dataBuilder.setKey(attr.getKey()); |
|
|
|
dataBuilder.setType(KeyValueType.forNumber(attr.getDataType().ordinal())); |
|
|
|
dataBuilder.setType(toProto(attr.getDataType())); |
|
|
|
switch (attr.getDataType()) { |
|
|
|
case BOOLEAN: |
|
|
|
attr.getBooleanValue().ifPresent(dataBuilder::setBoolV); |
|
|
|
@ -259,7 +267,7 @@ public class TbSubscriptionUtils { |
|
|
|
private static TransportProtos.TsValueProto toTsValueProto(long ts, KvEntry attr) { |
|
|
|
TransportProtos.TsValueProto.Builder dataBuilder = TransportProtos.TsValueProto.newBuilder(); |
|
|
|
dataBuilder.setTs(ts); |
|
|
|
dataBuilder.setType(KeyValueType.forNumber(attr.getDataType().ordinal())); |
|
|
|
dataBuilder.setType(toProto(attr.getDataType())); |
|
|
|
switch (attr.getDataType()) { |
|
|
|
case BOOLEAN: |
|
|
|
attr.getBooleanValue().ifPresent(dataBuilder::setBoolV); |
|
|
|
@ -299,8 +307,7 @@ public class TbSubscriptionUtils { |
|
|
|
|
|
|
|
private static KvEntry getKvEntry(KeyValueProto proto) { |
|
|
|
KvEntry entry = null; |
|
|
|
DataType type = DataType.values()[proto.getType().getNumber()]; |
|
|
|
switch (type) { |
|
|
|
switch (fromProto(proto.getType())) { |
|
|
|
case BOOLEAN: |
|
|
|
entry = new BooleanDataEntry(proto.getKey(), proto.getBoolV()); |
|
|
|
break; |
|
|
|
@ -328,8 +335,7 @@ public class TbSubscriptionUtils { |
|
|
|
|
|
|
|
private static KvEntry getKvEntry(String key, TransportProtos.TsValueProto proto) { |
|
|
|
KvEntry entry = null; |
|
|
|
DataType type = DataType.values()[proto.getType().getNumber()]; |
|
|
|
switch (type) { |
|
|
|
switch (fromProto(proto.getType())) { |
|
|
|
case BOOLEAN: |
|
|
|
entry = new BooleanDataEntry(key, proto.getBoolV()); |
|
|
|
break; |
|
|
|
@ -448,4 +454,12 @@ public class TbSubscriptionUtils { |
|
|
|
return ToCoreNotificationMsg.newBuilder().setToLocalSubscriptionServiceMsg(result).build(); |
|
|
|
} |
|
|
|
|
|
|
|
public static TransportProtos.KeyValueType toProto(DataType dataType) { |
|
|
|
return TransportProtos.KeyValueType.forNumber(dataType.getProtoNumber()); |
|
|
|
} |
|
|
|
|
|
|
|
public static DataType fromProto(TransportProtos.KeyValueType keyValueType) { |
|
|
|
return dataTypeByProtoNumber[keyValueType.getNumber()]; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|