Refactor predicate queries building
This commit is contained in:
		
							parent
							
								
									0aa16d28a4
								
							
						
					
					
						commit
						1b381298fb
					
				@ -16,7 +16,7 @@
 | 
			
		||||
package org.thingsboard.server.dao.sql.query;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import org.springframework.util.StringUtils;
 | 
			
		||||
import org.apache.commons.lang3.StringUtils;
 | 
			
		||||
import org.thingsboard.server.common.data.DataConstants;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.query.BooleanFilterPredicate;
 | 
			
		||||
@ -42,7 +42,6 @@ import java.util.HashMap;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
@ -245,8 +244,9 @@ public class EntityKeyMapping {
 | 
			
		||||
            entityTypeStr = "'" + entityType.name() + "'";
 | 
			
		||||
        }
 | 
			
		||||
        ctx.addStringParameter(alias + "_key_id", entityKey.getKey());
 | 
			
		||||
        String filterQuery = toQueries(ctx, entityFilter.getType()).filter(Objects::nonNull).collect(
 | 
			
		||||
                Collectors.joining(" and "));
 | 
			
		||||
        String filterQuery = toQueries(ctx, entityFilter.getType())
 | 
			
		||||
                .filter(StringUtils::isNotEmpty)
 | 
			
		||||
                .collect(Collectors.joining(" and "));
 | 
			
		||||
        if (StringUtils.isEmpty(filterQuery)) {
 | 
			
		||||
            filterQuery = "";
 | 
			
		||||
        } else {
 | 
			
		||||
@ -293,8 +293,10 @@ public class EntityKeyMapping {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static String buildQuery(QueryContext ctx, List<EntityKeyMapping> mappings, EntityFilterType filterType) {
 | 
			
		||||
        return mappings.stream().flatMap(mapping -> mapping.toQueries(ctx, filterType)).filter(Objects::nonNull).collect(
 | 
			
		||||
                Collectors.joining(" AND "));
 | 
			
		||||
        return mappings.stream()
 | 
			
		||||
                .flatMap(mapping -> mapping.toQueries(ctx, filterType))
 | 
			
		||||
                .filter(StringUtils::isNotEmpty)
 | 
			
		||||
                .collect(Collectors.joining(" AND "));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static List<EntityKeyMapping> prepareKeyMapping(EntityDataQuery query) {
 | 
			
		||||
@ -461,9 +463,8 @@ public class EntityKeyMapping {
 | 
			
		||||
                                              ComplexFilterPredicate predicate, EntityFilterType filterType) {
 | 
			
		||||
        String result = predicate.getPredicates().stream()
 | 
			
		||||
                .map(keyFilterPredicate -> this.buildPredicateQuery(ctx, alias, key, keyFilterPredicate, filterType))
 | 
			
		||||
                .filter(Objects::nonNull).collect(Collectors.joining(
 | 
			
		||||
                        " " + predicate.getOperation().name() + " "
 | 
			
		||||
                ));
 | 
			
		||||
                .filter(StringUtils::isNotEmpty)
 | 
			
		||||
                .collect(Collectors.joining(" " + predicate.getOperation().name() + " "));
 | 
			
		||||
        if (!result.trim().isEmpty()) {
 | 
			
		||||
            result = "( " + result + " )";
 | 
			
		||||
        }
 | 
			
		||||
@ -520,7 +521,7 @@ public class EntityKeyMapping {
 | 
			
		||||
        String paramName = getNextParameterName(field);
 | 
			
		||||
        String value = stringFilterPredicate.getValue().getValue();
 | 
			
		||||
        if (value.isEmpty()) {
 | 
			
		||||
            return null;
 | 
			
		||||
            return "";
 | 
			
		||||
        }
 | 
			
		||||
        String stringOperationQuery = "";
 | 
			
		||||
        if (stringFilterPredicate.isIgnoreCase()) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user