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
 | 
			
		||||
 * <p>
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * <p>
 | 
			
		||||
 *
 | 
			
		||||
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 * <p>
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
@ -128,10 +128,17 @@ public class DefaultTbCalculatedFieldService extends AbstractTbEntityService imp
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onCalculatedFieldAdded(TransportProtos.CalculatedFieldAddMsgProto proto, TbCallback callback) {
 | 
			
		||||
    public void onCalculatedFieldMsg(TransportProtos.CalculatedFieldMsgProto proto, TbCallback callback) {
 | 
			
		||||
        try {
 | 
			
		||||
            TenantId tenantId = TenantId.fromUUID(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB()));
 | 
			
		||||
            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);
 | 
			
		||||
            List<CalculatedFieldLink> links = calculatedFieldService.findAllCalculatedFieldLinksById(tenantId, calculatedFieldId);
 | 
			
		||||
            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
 | 
			
		||||
    public CalculatedField save(CalculatedField calculatedField, SecurityUser user) throws ThingsboardException {
 | 
			
		||||
        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() {
 | 
			
		||||
        PageDataIterable<CalculatedField> cfs = new PageDataIterable<>(calculatedFieldService::findAllCalculatedFields, initFetchPackSize);
 | 
			
		||||
        cfs.forEach(cf -> calculatedFields.putIfAbsent(cf.getId(), cf));
 | 
			
		||||
        PageDataIterable<CalculatedFieldLink> cfls = new PageDataIterable<>(calculatedFieldService::findAllCalculatedFieldLinks, initFetchPackSize);
 | 
			
		||||
        cfls.forEach(link -> calculatedFieldLinks.computeIfAbsent(link.getCalculatedFieldId(), id -> new ArrayList<>()).add(link));
 | 
			
		||||
        // 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) {
 | 
			
		||||
 | 
			
		||||
@ -24,11 +24,7 @@ import org.thingsboard.server.service.security.model.SecurityUser;
 | 
			
		||||
 | 
			
		||||
public interface TbCalculatedFieldService {
 | 
			
		||||
 | 
			
		||||
    void onCalculatedFieldAdded(TransportProtos.CalculatedFieldAddMsgProto proto, TbCallback callback);
 | 
			
		||||
 | 
			
		||||
    void onCalculatedFieldUpdated(TransportProtos.CalculatedFieldUpdateMsgProto proto, TbCallback callback);
 | 
			
		||||
 | 
			
		||||
    void onCalculatedFieldDeleted(TransportProtos.CalculatedFieldDeleteMsgProto proto, TbCallback callback);
 | 
			
		||||
    void onCalculatedFieldMsg(TransportProtos.CalculatedFieldMsgProto proto, TbCallback callback);
 | 
			
		||||
 | 
			
		||||
    CalculatedField save(CalculatedField calculatedField, SecurityUser user) throws ThingsboardException;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1267,25 +1267,14 @@ message ToDeviceActorNotificationMsgProto {
 | 
			
		||||
  DeviceDeleteMsgProto deviceDeleteMsg = 8;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
message CalculatedFieldAddMsgProto {
 | 
			
		||||
  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 {
 | 
			
		||||
message CalculatedFieldMsgProto {
 | 
			
		||||
  int64 tenantIdMSB = 1;
 | 
			
		||||
  int64 tenantIdLSB = 2;
 | 
			
		||||
  int64 calculatedFieldIdMSB = 3;
 | 
			
		||||
  int64 calculatedFieldIdLSB = 4;
 | 
			
		||||
  bool added = 5;
 | 
			
		||||
  bool updated = 6;
 | 
			
		||||
  bool deleted = 7;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user