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