EDQS - fixed relations query in case multiple previous path are present
This commit is contained in:
		
							parent
							
								
									1eea7e71ec
								
							
						
					
					
						commit
						1692c9b92a
					
				@ -15,6 +15,7 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.edqs.query.processor;
 | 
			
		||||
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import org.thingsboard.server.common.data.permission.QueryContext;
 | 
			
		||||
import org.thingsboard.server.common.data.query.EntityFilter;
 | 
			
		||||
@ -106,7 +107,7 @@ public abstract class AbstractRelationQueryProcessor<T extends EntityFilter> ext
 | 
			
		||||
 | 
			
		||||
    private Set<EntityData<?>> getEntitiesSet(RelationsRepo relations) {
 | 
			
		||||
        Set<EntityData<?>> result = new HashSet<>();
 | 
			
		||||
        Set<UUID> processed = new HashSet<>();
 | 
			
		||||
        Set<RelationSearchTask> processed = new HashSet<>();
 | 
			
		||||
        Queue<RelationSearchTask> tasks = new LinkedList<>();
 | 
			
		||||
        int maxLvl = getMaxLevel() == 0 ? MAXIMUM_QUERY_LEVEL : Math.max(1, getMaxLevel());
 | 
			
		||||
        for (UUID uuid : getRootEntities()) {
 | 
			
		||||
@ -114,7 +115,7 @@ public abstract class AbstractRelationQueryProcessor<T extends EntityFilter> ext
 | 
			
		||||
        }
 | 
			
		||||
        while (!tasks.isEmpty()) {
 | 
			
		||||
            RelationSearchTask task = tasks.poll();
 | 
			
		||||
            if (processed.add(task.entityId)) {
 | 
			
		||||
            if (processed.add(task)) {
 | 
			
		||||
                var entityLvl = task.lvl + 1;
 | 
			
		||||
                Set<RelationInfo> entities = EntitySearchDirection.FROM.equals(getDirection()) ? relations.getFrom(task.entityId) : relations.getTo(task.entityId);
 | 
			
		||||
                if (isFetchLastLevelOnly() && entities.isEmpty() && task.previous != null && check(task.previous)) {
 | 
			
		||||
@ -157,6 +158,7 @@ public abstract class AbstractRelationQueryProcessor<T extends EntityFilter> ext
 | 
			
		||||
    protected abstract boolean check(RelationInfo relationInfo);
 | 
			
		||||
 | 
			
		||||
    @RequiredArgsConstructor
 | 
			
		||||
    @EqualsAndHashCode
 | 
			
		||||
    private static class RelationSearchTask {
 | 
			
		||||
        private final UUID entityId;
 | 
			
		||||
        private final int lvl;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user