fixed buildEntityDataQuery for AlarmDataQuery, key filtering for string null values

This commit is contained in:
dashevchenko 2025-02-19 12:05:05 +02:00
parent 52a6540e5a
commit 2580f4d3e5
2 changed files with 5 additions and 4 deletions

View File

@ -359,7 +359,7 @@ public class TbAlarmDataSubCtx extends TbAbstractDataSubCtx<AlarmDataQuery> {
EntityDataSortOrder sortOrder = query.getPageLink().getSortOrder(); EntityDataSortOrder sortOrder = query.getPageLink().getSortOrder();
EntityDataSortOrder entitiesSortOrder; EntityDataSortOrder entitiesSortOrder;
if (sortOrder == null || sortOrder.getKey().getType().equals(EntityKeyType.ALARM_FIELD)) { if (sortOrder == null || sortOrder.getKey().getType().equals(EntityKeyType.ALARM_FIELD)) {
entitiesSortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ENTITY_FIELD, ModelConstants.CREATED_TIME_PROPERTY)); entitiesSortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ENTITY_FIELD, "createdTime"));
} else { } else {
entitiesSortOrder = sortOrder; entitiesSortOrder = sortOrder;
} }

View File

@ -54,6 +54,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Stream; import java.util.stream.Stream;
@ -66,10 +67,10 @@ import static org.thingsboard.server.common.data.query.ComplexFilterPredicate.Co
@Slf4j @Slf4j
public class RepositoryUtils { public class RepositoryUtils {
public static final Comparator<SortableEntityData> SORT_ASC = Comparator.comparing(SortableEntityData::getSortValue) public static final Comparator<SortableEntityData> SORT_ASC = Comparator.comparing((SortableEntityData sed) -> Optional.ofNullable(sed.getSortValue()).orElse(""))
.thenComparing(sp -> sp.getId().toString()); .thenComparing(sp -> sp.getId().toString());
public static final Comparator<SortableEntityData> SORT_DESC = Comparator.comparing(SortableEntityData::getSortValue) public static final Comparator<SortableEntityData> SORT_DESC = Comparator.comparing((SortableEntityData sed) -> Optional.ofNullable(sed.getSortValue()).orElse(""))
.thenComparing(sp -> sp.getId().toString()).reversed(); .thenComparing(sp -> sp.getId().toString()).reversed();
public static EntityType resolveEntityType(EntityFilter entityFilter) { public static EntityType resolveEntityType(EntityFilter entityFilter) {
@ -210,7 +211,7 @@ public class RepositoryUtils {
boolean checkResult = switch (valueType) { boolean checkResult = switch (valueType) {
case STRING -> { case STRING -> {
String str = dp != null ? dp.valueToString() : null; String str = dp != null ? dp.valueToString() : null;
yield StringUtils.isEmpty(str) || checkKeyFilter(str, keyFilter.predicate()); yield str != null && checkKeyFilter(str, keyFilter.predicate());
} }
case BOOLEAN -> { case BOOLEAN -> {
Boolean booleanValue = dp != null ? dp.getBool() : null; Boolean booleanValue = dp != null ? dp.getBool() : null;