moved logic of cf add/update/delete msg to a single method
This commit is contained in:
parent
88e5da7a14
commit
4d8b62eb21
@ -1,12 +1,12 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright © 2016-2024 The Thingsboard Authors
|
* Copyright © 2016-2024 The Thingsboard Authors
|
||||||
* <p>
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
* <p>
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
* <p>
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
@ -128,10 +128,17 @@ public class DefaultTbCalculatedFieldService extends AbstractTbEntityService imp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCalculatedFieldAdded(TransportProtos.CalculatedFieldAddMsgProto proto, TbCallback callback) {
|
public void onCalculatedFieldMsg(TransportProtos.CalculatedFieldMsgProto proto, TbCallback callback) {
|
||||||
try {
|
try {
|
||||||
TenantId tenantId = TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB()));
|
TenantId tenantId = TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB()));
|
||||||
CalculatedFieldId calculatedFieldId = new CalculatedFieldId(new UUID(proto.getCalculatedFieldIdMSB(), proto.getCalculatedFieldIdLSB()));
|
CalculatedFieldId calculatedFieldId = new CalculatedFieldId(new UUID(proto.getCalculatedFieldIdMSB(), proto.getCalculatedFieldIdLSB()));
|
||||||
|
if (proto.getDeleted()) {
|
||||||
|
onCalculatedFieldDelete(calculatedFieldId, callback);
|
||||||
|
callback.onSuccess();
|
||||||
|
}
|
||||||
|
if (proto.getUpdated()) {
|
||||||
|
onCalculatedFieldDelete(calculatedFieldId, callback);
|
||||||
|
}
|
||||||
CalculatedField cf = calculatedFieldService.findById(tenantId, calculatedFieldId);
|
CalculatedField cf = calculatedFieldService.findById(tenantId, calculatedFieldId);
|
||||||
List<CalculatedFieldLink> links = calculatedFieldService.findAllCalculatedFieldLinksById(tenantId, calculatedFieldId);
|
List<CalculatedFieldLink> links = calculatedFieldService.findAllCalculatedFieldLinksById(tenantId, calculatedFieldId);
|
||||||
if (cf != null) {
|
if (cf != null) {
|
||||||
@ -163,30 +170,6 @@ public class DefaultTbCalculatedFieldService extends AbstractTbEntityService imp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCalculatedFieldUpdated(TransportProtos.CalculatedFieldUpdateMsgProto proto, TbCallback callback) {
|
|
||||||
try {
|
|
||||||
TenantId tenantId = TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB()));
|
|
||||||
CalculatedFieldId calculatedFieldId = new CalculatedFieldId(new UUID(proto.getCalculatedFieldIdMSB(), proto.getCalculatedFieldIdLSB()));
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.trace("Failed to process calculated field update msg: [{}]", proto, e);
|
|
||||||
callback.onFailure(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCalculatedFieldDeleted(TransportProtos.CalculatedFieldDeleteMsgProto proto, TbCallback callback) {
|
|
||||||
try {
|
|
||||||
CalculatedFieldId calculatedFieldId = new CalculatedFieldId(new UUID(proto.getCalculatedFieldIdMSB(), proto.getCalculatedFieldIdLSB()));
|
|
||||||
calculatedFieldLinks.remove(calculatedFieldId);
|
|
||||||
calculatedFields.remove(calculatedFieldId);
|
|
||||||
states.keySet().removeIf(ctxId -> ctxId.startsWith(calculatedFieldId.getId().toString()));
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.trace("Failed to process calculated field delete msg: [{}]", proto, e);
|
|
||||||
callback.onFailure(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CalculatedField save(CalculatedField calculatedField, SecurityUser user) throws ThingsboardException {
|
public CalculatedField save(CalculatedField calculatedField, SecurityUser user) throws ThingsboardException {
|
||||||
ActionType actionType = calculatedField.getId() == null ? ActionType.ADDED : ActionType.UPDATED;
|
ActionType actionType = calculatedField.getId() == null ? ActionType.ADDED : ActionType.UPDATED;
|
||||||
@ -223,13 +206,25 @@ public class DefaultTbCalculatedFieldService extends AbstractTbEntityService imp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void onCalculatedFieldDelete(CalculatedFieldId calculatedFieldId, TbCallback callback) {
|
||||||
|
try {
|
||||||
|
calculatedFieldLinks.remove(calculatedFieldId);
|
||||||
|
calculatedFields.remove(calculatedFieldId);
|
||||||
|
states.keySet().removeIf(ctxId -> ctxId.startsWith(calculatedFieldId.getId().toString()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.trace("Failed to delete calculated field.", e);
|
||||||
|
callback.onFailure(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void fetchCalculatedFields() {
|
private void fetchCalculatedFields() {
|
||||||
PageDataIterable<CalculatedField> cfs = new PageDataIterable<>(calculatedFieldService::findAllCalculatedFields, initFetchPackSize);
|
PageDataIterable<CalculatedField> cfs = new PageDataIterable<>(calculatedFieldService::findAllCalculatedFields, initFetchPackSize);
|
||||||
cfs.forEach(cf -> calculatedFields.putIfAbsent(cf.getId(), cf));
|
cfs.forEach(cf -> calculatedFields.putIfAbsent(cf.getId(), cf));
|
||||||
PageDataIterable<CalculatedFieldLink> cfls = new PageDataIterable<>(calculatedFieldService::findAllCalculatedFieldLinks, initFetchPackSize);
|
PageDataIterable<CalculatedFieldLink> cfls = new PageDataIterable<>(calculatedFieldService::findAllCalculatedFieldLinks, initFetchPackSize);
|
||||||
cfls.forEach(link -> calculatedFieldLinks.computeIfAbsent(link.getCalculatedFieldId(), id -> new ArrayList<>()).add(link));
|
cfls.forEach(link -> calculatedFieldLinks.computeIfAbsent(link.getCalculatedFieldId(), id -> new ArrayList<>()).add(link));
|
||||||
// TODO: read all states(CalculatedFieldCtx)
|
// TODO: read all states(CalculatedFieldCtx)
|
||||||
states.keySet().removeIf(calculatedFieldId -> !calculatedFields.containsKey(calculatedFieldId));
|
states.keySet().removeIf(ctxId -> calculatedFields.keySet().stream().noneMatch(id -> ctxId.startsWith(id.toString())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkEntityExistence(TenantId tenantId, EntityId entityId) {
|
private void checkEntityExistence(TenantId tenantId, EntityId entityId) {
|
||||||
|
|||||||
@ -24,11 +24,7 @@ import org.thingsboard.server.service.security.model.SecurityUser;
|
|||||||
|
|
||||||
public interface TbCalculatedFieldService {
|
public interface TbCalculatedFieldService {
|
||||||
|
|
||||||
void onCalculatedFieldAdded(TransportProtos.CalculatedFieldAddMsgProto proto, TbCallback callback);
|
void onCalculatedFieldMsg(TransportProtos.CalculatedFieldMsgProto proto, TbCallback callback);
|
||||||
|
|
||||||
void onCalculatedFieldUpdated(TransportProtos.CalculatedFieldUpdateMsgProto proto, TbCallback callback);
|
|
||||||
|
|
||||||
void onCalculatedFieldDeleted(TransportProtos.CalculatedFieldDeleteMsgProto proto, TbCallback callback);
|
|
||||||
|
|
||||||
CalculatedField save(CalculatedField calculatedField, SecurityUser user) throws ThingsboardException;
|
CalculatedField save(CalculatedField calculatedField, SecurityUser user) throws ThingsboardException;
|
||||||
|
|
||||||
|
|||||||
@ -1267,25 +1267,14 @@ message ToDeviceActorNotificationMsgProto {
|
|||||||
DeviceDeleteMsgProto deviceDeleteMsg = 8;
|
DeviceDeleteMsgProto deviceDeleteMsg = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
message CalculatedFieldAddMsgProto {
|
message CalculatedFieldMsgProto {
|
||||||
int64 tenantIdMSB = 1;
|
|
||||||
int64 tenantIdLSB = 2;
|
|
||||||
int64 calculatedFieldIdMSB = 3;
|
|
||||||
int64 calculatedFieldIdLSB = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
message CalculatedFieldUpdateMsgProto {
|
|
||||||
int64 tenantIdMSB = 1;
|
|
||||||
int64 tenantIdLSB = 2;
|
|
||||||
int64 calculatedFieldIdMSB = 3;
|
|
||||||
int64 calculatedFieldIdLSB = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
message CalculatedFieldDeleteMsgProto {
|
|
||||||
int64 tenantIdMSB = 1;
|
int64 tenantIdMSB = 1;
|
||||||
int64 tenantIdLSB = 2;
|
int64 tenantIdLSB = 2;
|
||||||
int64 calculatedFieldIdMSB = 3;
|
int64 calculatedFieldIdMSB = 3;
|
||||||
int64 calculatedFieldIdLSB = 4;
|
int64 calculatedFieldIdLSB = 4;
|
||||||
|
bool added = 5;
|
||||||
|
bool updated = 6;
|
||||||
|
bool deleted = 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user