Added support for Tenant Entity
This commit is contained in:
		
							parent
							
								
									635086986b
								
							
						
					
					
						commit
						869a492c2c
					
				@ -298,6 +298,12 @@ public final class EdgeGrpcSession implements Closeable {
 | 
				
			|||||||
            case DASHBOARD:
 | 
					            case DASHBOARD:
 | 
				
			||||||
                entityId = new DashboardId(edgeEvent.getEntityId());
 | 
					                entityId = new DashboardId(edgeEvent.getEntityId());
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
 | 
					            case TENANT:
 | 
				
			||||||
 | 
					                entityId = new TenantId(edgeEvent.getEntityId());
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case CUSTOMER:
 | 
				
			||||||
 | 
					                entityId = new CustomerId(edgeEvent.getEntityId());
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (entityId != null) {
 | 
					        if (entityId != null) {
 | 
				
			||||||
            log.debug("Sending telemetry data msg, entityId [{}], body [{}]", edgeEvent.getEntityId(), edgeEvent.getEntityBody());
 | 
					            log.debug("Sending telemetry data msg, entityId [{}], body [{}]", edgeEvent.getEntityId(), edgeEvent.getEntityBody());
 | 
				
			||||||
@ -748,6 +754,10 @@ public final class EdgeGrpcSession implements Closeable {
 | 
				
			|||||||
                return new EntityViewId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
 | 
					                return new EntityViewId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
 | 
				
			||||||
            case DASHBOARD:
 | 
					            case DASHBOARD:
 | 
				
			||||||
                return new DashboardId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
 | 
					                return new DashboardId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
 | 
				
			||||||
 | 
					            case TENANT:
 | 
				
			||||||
 | 
					                return new TenantId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
 | 
				
			||||||
 | 
					            case CUSTOMER:
 | 
				
			||||||
 | 
					                return new CustomerId(new UUID(entityData.getEntityIdMSB(), entityData.getEntityIdLSB()));
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                log.warn("Unsupported entity type [{}] during construct of entity id. EntityDataProto [{}]", entityData.getEntityType(), entityData);
 | 
					                log.warn("Unsupported entity type [{}] during construct of entity id. EntityDataProto [{}]", entityData.getEntityType(), entityData);
 | 
				
			||||||
                return null;
 | 
					                return null;
 | 
				
			||||||
 | 
				
			|||||||
@ -39,6 +39,10 @@ public final class EdgeUtils {
 | 
				
			|||||||
                return EdgeEventType.USER;
 | 
					                return EdgeEventType.USER;
 | 
				
			||||||
            case ALARM:
 | 
					            case ALARM:
 | 
				
			||||||
                return EdgeEventType.ALARM;
 | 
					                return EdgeEventType.ALARM;
 | 
				
			||||||
 | 
					            case TENANT:
 | 
				
			||||||
 | 
					                return EdgeEventType.TENANT;
 | 
				
			||||||
 | 
					            case CUSTOMER:
 | 
				
			||||||
 | 
					                return EdgeEventType.CUSTOMER;
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                return null;
 | 
					                return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
@ -26,5 +26,6 @@ public enum EdgeEventType {
 | 
				
			|||||||
    EDGE,
 | 
					    EDGE,
 | 
				
			||||||
    USER,
 | 
					    USER,
 | 
				
			||||||
    CUSTOMER,
 | 
					    CUSTOMER,
 | 
				
			||||||
    RELATION
 | 
					    RELATION,
 | 
				
			||||||
 | 
					    TENANT
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -33,11 +33,15 @@ import org.thingsboard.server.common.data.DataConstants;
 | 
				
			|||||||
import org.thingsboard.server.common.data.EdgeUtils;
 | 
					import org.thingsboard.server.common.data.EdgeUtils;
 | 
				
			||||||
import org.thingsboard.server.common.data.EntityType;
 | 
					import org.thingsboard.server.common.data.EntityType;
 | 
				
			||||||
import org.thingsboard.server.common.data.audit.ActionType;
 | 
					import org.thingsboard.server.common.data.audit.ActionType;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.edge.Edge;
 | 
				
			||||||
import org.thingsboard.server.common.data.edge.EdgeEvent;
 | 
					import org.thingsboard.server.common.data.edge.EdgeEvent;
 | 
				
			||||||
import org.thingsboard.server.common.data.edge.EdgeEventType;
 | 
					import org.thingsboard.server.common.data.edge.EdgeEventType;
 | 
				
			||||||
import org.thingsboard.server.common.data.id.EdgeId;
 | 
					import org.thingsboard.server.common.data.id.EdgeId;
 | 
				
			||||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
					import org.thingsboard.server.common.data.id.EntityId;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.id.IdBased;
 | 
				
			||||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
					import org.thingsboard.server.common.data.id.TenantId;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.page.TextPageData;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.page.TextPageLink;
 | 
				
			||||||
import org.thingsboard.server.common.data.plugin.ComponentType;
 | 
					import org.thingsboard.server.common.data.plugin.ComponentType;
 | 
				
			||||||
import org.thingsboard.server.common.data.relation.EntityRelation;
 | 
					import org.thingsboard.server.common.data.relation.EntityRelation;
 | 
				
			||||||
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
 | 
					import org.thingsboard.server.common.data.relation.RelationTypeGroup;
 | 
				
			||||||
@ -46,10 +50,12 @@ import org.thingsboard.server.common.msg.TbMsg;
 | 
				
			|||||||
import org.thingsboard.server.common.msg.session.SessionMsgType;
 | 
					import org.thingsboard.server.common.msg.session.SessionMsgType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Nullable;
 | 
					import javax.annotation.Nullable;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					import java.util.stream.Collectors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
 | 
					import static org.thingsboard.rule.engine.api.TbRelationTypes.SUCCESS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -84,10 +90,12 @@ public class TbMsgPushToEdgeNode implements TbNode {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        if (isSupportedOriginator(msg.getOriginator().getEntityType())) {
 | 
					        if (isSupportedOriginator(msg.getOriginator().getEntityType())) {
 | 
				
			||||||
            if (isSupportedMsgType(msg.getType())) {
 | 
					            if (isSupportedMsgType(msg.getType())) {
 | 
				
			||||||
                ListenableFuture<EdgeId> getEdgeIdFuture = getEdgeIdByOriginatorId(ctx, ctx.getTenantId(), msg.getOriginator());
 | 
					                ListenableFuture<List<EdgeId>> getEdgeIdsFuture = getEdgeIdsByOriginatorId(ctx, ctx.getTenantId(), msg.getOriginator());
 | 
				
			||||||
                Futures.addCallback(getEdgeIdFuture, new FutureCallback<EdgeId>() {
 | 
					                Futures.addCallback(getEdgeIdsFuture, new FutureCallback<List<EdgeId>>() {
 | 
				
			||||||
                    @Override
 | 
					                    @Override
 | 
				
			||||||
                    public void onSuccess(@Nullable EdgeId edgeId) {
 | 
					                    public void onSuccess(@Nullable List<EdgeId> edgeIds) {
 | 
				
			||||||
 | 
					                        if (edgeIds != null && !edgeIds.isEmpty()) {
 | 
				
			||||||
 | 
					                            for (EdgeId edgeId : edgeIds) {
 | 
				
			||||||
                                try {
 | 
					                                try {
 | 
				
			||||||
                                    EdgeEvent edgeEvent = buildEdgeEvent(msg, ctx);
 | 
					                                    EdgeEvent edgeEvent = buildEdgeEvent(msg, ctx);
 | 
				
			||||||
                                    if (edgeEvent == null) {
 | 
					                                    if (edgeEvent == null) {
 | 
				
			||||||
@ -114,6 +122,8 @@ public class TbMsgPushToEdgeNode implements TbNode {
 | 
				
			|||||||
                                    ctx.tellFailure(msg, e);
 | 
					                                    ctx.tellFailure(msg, e);
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    @Override
 | 
					                    @Override
 | 
				
			||||||
                    public void onFailure(Throwable t) {
 | 
					                    public void onFailure(Throwable t) {
 | 
				
			||||||
@ -201,6 +211,8 @@ public class TbMsgPushToEdgeNode implements TbNode {
 | 
				
			|||||||
            case ASSET:
 | 
					            case ASSET:
 | 
				
			||||||
            case ENTITY_VIEW:
 | 
					            case ENTITY_VIEW:
 | 
				
			||||||
            case DASHBOARD:
 | 
					            case DASHBOARD:
 | 
				
			||||||
 | 
					            case TENANT:
 | 
				
			||||||
 | 
					            case CUSTOMER:
 | 
				
			||||||
                return true;
 | 
					                return true;
 | 
				
			||||||
            default:
 | 
					            default:
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
@ -215,16 +227,21 @@ public class TbMsgPushToEdgeNode implements TbNode {
 | 
				
			|||||||
                || DataConstants.ALARM.equals(msgType);
 | 
					                || DataConstants.ALARM.equals(msgType);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private ListenableFuture<EdgeId> getEdgeIdByOriginatorId(TbContext ctx, TenantId tenantId, EntityId originatorId) {
 | 
					    private ListenableFuture<List<EdgeId>> getEdgeIdsByOriginatorId(TbContext ctx, TenantId tenantId, EntityId originatorId) {
 | 
				
			||||||
 | 
					        if (EntityType.TENANT.equals(originatorId.getEntityType())) {
 | 
				
			||||||
 | 
					            TextPageData<Edge> edgesByTenantId = ctx.getEdgeService().findEdgesByTenantId(tenantId, new TextPageLink(Integer.MAX_VALUE));
 | 
				
			||||||
 | 
					            return Futures.immediateFuture(edgesByTenantId.getData().stream().map(IdBased::getId).collect(Collectors.toList()));
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
            ListenableFuture<List<EntityRelation>> future = ctx.getRelationService().findByToAndTypeAsync(tenantId, originatorId, EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE);
 | 
					            ListenableFuture<List<EntityRelation>> future = ctx.getRelationService().findByToAndTypeAsync(tenantId, originatorId, EntityRelation.CONTAINS_TYPE, RelationTypeGroup.EDGE);
 | 
				
			||||||
            return Futures.transform(future, relations -> {
 | 
					            return Futures.transform(future, relations -> {
 | 
				
			||||||
 | 
					                List<EdgeId> result = new ArrayList<>();
 | 
				
			||||||
                if (relations != null && relations.size() > 0) {
 | 
					                if (relations != null && relations.size() > 0) {
 | 
				
			||||||
                return new EdgeId(relations.get(0).getFrom().getId());
 | 
					                    result.add(new EdgeId(relations.get(0).getFrom().getId()));
 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return null;
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					                return result;
 | 
				
			||||||
            }, ctx.getDbCallbackExecutor());
 | 
					            }, ctx.getDbCallbackExecutor());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void destroy() {
 | 
					    public void destroy() {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user