Merge branch 'master' of github.com:thingsboard/thingsboard
This commit is contained in:
		
						commit
						55fb8d68fd
					
				@ -130,10 +130,8 @@ public class DefaultActorService implements ActorService {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void process(SessionAwareMsg msg) {
 | 
			
		||||
        if (msg instanceof SessionAwareMsg) {
 | 
			
		||||
            log.debug("Processing session aware msg: {}", msg);
 | 
			
		||||
            sessionManagerActor.tell(msg, ActorRef.noSender());
 | 
			
		||||
        }
 | 
			
		||||
        log.debug("Processing session aware msg: {}", msg);
 | 
			
		||||
        sessionManagerActor.tell(msg, ActorRef.noSender());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
@ -50,7 +50,9 @@ public class SessionManagerActor extends ContextAwareActor {
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onReceive(Object msg) throws Exception {
 | 
			
		||||
        if (msg instanceof SessionAwareMsg) {
 | 
			
		||||
        if (msg instanceof SessionCtrlMsg) {
 | 
			
		||||
            onSessionCtrlMsg((SessionCtrlMsg) msg);
 | 
			
		||||
        } else if (msg instanceof SessionAwareMsg) {
 | 
			
		||||
            forwardToSessionActor((SessionAwareMsg) msg);
 | 
			
		||||
        } else if (msg instanceof SessionTerminationMsg) {
 | 
			
		||||
            onSessionTermination((SessionTerminationMsg) msg);
 | 
			
		||||
@ -58,8 +60,6 @@ public class SessionManagerActor extends ContextAwareActor {
 | 
			
		||||
            onTermination((Terminated) msg);
 | 
			
		||||
        } else if (msg instanceof SessionTimeoutMsg) {
 | 
			
		||||
            onSessionTimeout((SessionTimeoutMsg) msg);
 | 
			
		||||
        } else if (msg instanceof SessionCtrlMsg) {
 | 
			
		||||
            onSessionCtrlMsg((SessionCtrlMsg) msg);
 | 
			
		||||
        } else if (msg instanceof ClusterEventMsg) {
 | 
			
		||||
            broadcast(msg);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -102,7 +102,7 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Event> findEvents(UUID tenantId, EntityId entityId, String eventType, TimePageLink pageLink) {
 | 
			
		||||
        Specification<EventEntity> timeSearchSpec = JpaAbstractSearchTimeDao.<EventEntity>getTimeSearchPageSpec(pageLink, "id");
 | 
			
		||||
        Specification<EventEntity> timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "id");
 | 
			
		||||
        Specification<EventEntity> fieldsSpec = getEntityFieldsSpec(tenantId, entityId, eventType);
 | 
			
		||||
        Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC;
 | 
			
		||||
        Pageable pageable = new PageRequest(0, pageLink.getLimit(), sortDirection, ID_PROPERTY);
 | 
			
		||||
@ -129,26 +129,23 @@ public class JpaBaseEventDao extends JpaAbstractSearchTimeDao<EventEntity, Event
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Specification<EventEntity> getEntityFieldsSpec(UUID tenantId, EntityId entityId, String eventType) {
 | 
			
		||||
        return new Specification<EventEntity>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public Predicate toPredicate(Root<EventEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
 | 
			
		||||
                List<Predicate> predicates = new ArrayList<Predicate>();
 | 
			
		||||
                if (tenantId != null) {
 | 
			
		||||
                    Predicate tenantIdPredicate = criteriaBuilder.equal(root.get("tenantId"), UUIDConverter.fromTimeUUID(tenantId));
 | 
			
		||||
                    predicates.add(tenantIdPredicate);
 | 
			
		||||
                }
 | 
			
		||||
                if (entityId != null) {
 | 
			
		||||
                    Predicate entityTypePredicate = criteriaBuilder.equal(root.get("entityType"), entityId.getEntityType());
 | 
			
		||||
                    predicates.add(entityTypePredicate);
 | 
			
		||||
                    Predicate entityIdPredicate = criteriaBuilder.equal(root.get("entityId"), UUIDConverter.fromTimeUUID(entityId.getId()));
 | 
			
		||||
                    predicates.add(entityIdPredicate);
 | 
			
		||||
                }
 | 
			
		||||
                if (eventType != null) {
 | 
			
		||||
                    Predicate eventTypePredicate = criteriaBuilder.equal(root.get("eventType"), eventType);
 | 
			
		||||
                    predicates.add(eventTypePredicate);
 | 
			
		||||
                }
 | 
			
		||||
                return criteriaBuilder.and(predicates.toArray(new Predicate[]{}));
 | 
			
		||||
        return (root, criteriaQuery, criteriaBuilder) -> {
 | 
			
		||||
            List<Predicate> predicates = new ArrayList<>();
 | 
			
		||||
            if (tenantId != null) {
 | 
			
		||||
                Predicate tenantIdPredicate = criteriaBuilder.equal(root.get("tenantId"), UUIDConverter.fromTimeUUID(tenantId));
 | 
			
		||||
                predicates.add(tenantIdPredicate);
 | 
			
		||||
            }
 | 
			
		||||
            if (entityId != null) {
 | 
			
		||||
                Predicate entityTypePredicate = criteriaBuilder.equal(root.get("entityType"), entityId.getEntityType());
 | 
			
		||||
                predicates.add(entityTypePredicate);
 | 
			
		||||
                Predicate entityIdPredicate = criteriaBuilder.equal(root.get("entityId"), UUIDConverter.fromTimeUUID(entityId.getId()));
 | 
			
		||||
                predicates.add(entityIdPredicate);
 | 
			
		||||
            }
 | 
			
		||||
            if (eventType != null) {
 | 
			
		||||
                Predicate eventTypePredicate = criteriaBuilder.equal(root.get("eventType"), eventType);
 | 
			
		||||
                predicates.add(eventTypePredicate);
 | 
			
		||||
            }
 | 
			
		||||
            return criteriaBuilder.and(predicates.toArray(new Predicate[]{}));
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -160,43 +160,36 @@ public class JpaRelationDao extends JpaAbstractDaoListeningExecutorService imple
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ListenableFuture<List<EntityRelation>> findRelations(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType, TimePageLink pageLink) {
 | 
			
		||||
        Specification<RelationEntity> timeSearchSpec = JpaAbstractSearchTimeDao.<RelationEntity>getTimeSearchPageSpec(pageLink, "toId");
 | 
			
		||||
        Specification<RelationEntity> timeSearchSpec = JpaAbstractSearchTimeDao.getTimeSearchPageSpec(pageLink, "toId");
 | 
			
		||||
        Specification<RelationEntity> fieldsSpec = getEntityFieldsSpec(from, relationType, typeGroup, childType);
 | 
			
		||||
        Pageable pageable = new PageRequest(0, pageLink.getLimit(),
 | 
			
		||||
                new Sort(
 | 
			
		||||
                        new Order(ASC, "relationTypeGroup"),
 | 
			
		||||
                        new Order(ASC, "relationType"),
 | 
			
		||||
                        new Order(ASC, "toType"))
 | 
			
		||||
        );
 | 
			
		||||
        Sort.Direction sortDirection = pageLink.isAscOrder() ? Sort.Direction.ASC : Sort.Direction.DESC;
 | 
			
		||||
        Pageable pageable = new PageRequest(0, pageLink.getLimit(), sortDirection, "toId");
 | 
			
		||||
        return service.submit(() ->
 | 
			
		||||
                DaoUtil.convertDataList(relationRepository.findAll(where(timeSearchSpec).and(fieldsSpec), pageable).getContent()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Specification<RelationEntity> getEntityFieldsSpec(EntityId from, String relationType, RelationTypeGroup typeGroup, EntityType childType) {
 | 
			
		||||
        return new Specification<RelationEntity>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public Predicate toPredicate(Root<RelationEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
 | 
			
		||||
                List<Predicate> predicates = new ArrayList<>();
 | 
			
		||||
                if (from != null) {
 | 
			
		||||
                    Predicate fromIdPredicate = criteriaBuilder.equal(root.get("fromId"),  UUIDConverter.fromTimeUUID(from.getId()));
 | 
			
		||||
                    predicates.add(fromIdPredicate);
 | 
			
		||||
                    Predicate fromEntityTypePredicate = criteriaBuilder.equal(root.get("fromType"), from.getEntityType().name());
 | 
			
		||||
                    predicates.add(fromEntityTypePredicate);
 | 
			
		||||
                }
 | 
			
		||||
                if (relationType != null) {
 | 
			
		||||
                    Predicate relationTypePredicate = criteriaBuilder.equal(root.get("relationType"), relationType);
 | 
			
		||||
                    predicates.add(relationTypePredicate);
 | 
			
		||||
                }
 | 
			
		||||
                if (typeGroup != null) {
 | 
			
		||||
                    Predicate typeGroupPredicate = criteriaBuilder.equal(root.get("relationTypeGroup"), typeGroup.name());
 | 
			
		||||
                    predicates.add(typeGroupPredicate);
 | 
			
		||||
                }
 | 
			
		||||
                if (childType != null) {
 | 
			
		||||
                    Predicate childTypePredicate = criteriaBuilder.equal(root.get("toType"), childType.name());
 | 
			
		||||
                    predicates.add(childTypePredicate);
 | 
			
		||||
                }
 | 
			
		||||
                return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
 | 
			
		||||
        return (root, criteriaQuery, criteriaBuilder) -> {
 | 
			
		||||
            List<Predicate> predicates = new ArrayList<>();
 | 
			
		||||
            if (from != null) {
 | 
			
		||||
                Predicate fromIdPredicate = criteriaBuilder.equal(root.get("fromId"),  UUIDConverter.fromTimeUUID(from.getId()));
 | 
			
		||||
                predicates.add(fromIdPredicate);
 | 
			
		||||
                Predicate fromEntityTypePredicate = criteriaBuilder.equal(root.get("fromType"), from.getEntityType().name());
 | 
			
		||||
                predicates.add(fromEntityTypePredicate);
 | 
			
		||||
            }
 | 
			
		||||
            if (relationType != null) {
 | 
			
		||||
                Predicate relationTypePredicate = criteriaBuilder.equal(root.get("relationType"), relationType);
 | 
			
		||||
                predicates.add(relationTypePredicate);
 | 
			
		||||
            }
 | 
			
		||||
            if (typeGroup != null) {
 | 
			
		||||
                Predicate typeGroupPredicate = criteriaBuilder.equal(root.get("relationTypeGroup"), typeGroup.name());
 | 
			
		||||
                predicates.add(typeGroupPredicate);
 | 
			
		||||
            }
 | 
			
		||||
            if (childType != null) {
 | 
			
		||||
                Predicate childTypePredicate = criteriaBuilder.equal(root.get("toType"), childType.name());
 | 
			
		||||
                predicates.add(childTypePredicate);
 | 
			
		||||
            }
 | 
			
		||||
            return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
 | 
			
		||||
        };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user