diff --git a/api/src/main/java/io/kafbat/ui/controller/ClientQuotasController.java b/api/src/main/java/io/kafbat/ui/controller/ClientQuotasController.java index e853e5403..c1822d65b 100644 --- a/api/src/main/java/io/kafbat/ui/controller/ClientQuotasController.java +++ b/api/src/main/java/io/kafbat/ui/controller/ClientQuotasController.java @@ -26,9 +26,21 @@ public class ClientQuotasController extends AbstractController implements ClientQuotasApi, McpTool { private static final Comparator QUOTA_RECORDS_COMPARATOR = - Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::user)) - .thenComparing(Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::clientId))) - .thenComparing(Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::ip))); + Comparator.nullsLast( + Comparator.comparing(ClientQuotaRecord::user, Comparator.nullsLast(String::compareTo)) + ) + .thenComparing(Comparator.nullsLast( + Comparator.comparing( + ClientQuotaRecord::clientId, + Comparator.nullsLast(String::compareTo) + ) + )) + .thenComparing(Comparator.nullsLast( + Comparator.comparing( + ClientQuotaRecord::ip, + Comparator.nullsLast(String::compareTo) + ) + )); private final ClientQuotaService clientQuotaService; diff --git a/api/src/main/java/io/kafbat/ui/controller/KafkaConnectController.java b/api/src/main/java/io/kafbat/ui/controller/KafkaConnectController.java index d7c0f4560..2072f0e4c 100644 --- a/api/src/main/java/io/kafbat/ui/controller/KafkaConnectController.java +++ b/api/src/main/java/io/kafbat/ui/controller/KafkaConnectController.java @@ -275,14 +275,26 @@ public Mono> validate } private Comparator getConnectorsComparator(ConnectorColumnsToSortDTO orderBy) { - var defaultComparator = Comparator.comparing(FullConnectorInfoDTO::getName); + var defaultComparator = Comparator.comparing( + FullConnectorInfoDTO::getName, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); if (orderBy == null) { return defaultComparator; } return switch (orderBy) { - case CONNECT -> Comparator.comparing(FullConnectorInfoDTO::getConnect); - case TYPE -> Comparator.comparing(FullConnectorInfoDTO::getType); - case STATUS -> Comparator.comparing(fullConnectorInfoDTO -> fullConnectorInfoDTO.getStatus().getState()); + case CONNECT -> Comparator.comparing( + FullConnectorInfoDTO::getConnect, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); + case TYPE -> Comparator.comparing( + FullConnectorInfoDTO::getType, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); + case STATUS -> Comparator.comparing( + fullConnectorInfoDTO -> fullConnectorInfoDTO.getStatus().getState(), + Comparator.nullsFirst(Comparator.naturalOrder()) + ); default -> defaultComparator; }; } diff --git a/api/src/main/java/io/kafbat/ui/controller/SchemasController.java b/api/src/main/java/io/kafbat/ui/controller/SchemasController.java index 3539b50b3..3421a1563 100644 --- a/api/src/main/java/io/kafbat/ui/controller/SchemasController.java +++ b/api/src/main/java/io/kafbat/ui/controller/SchemasController.java @@ -242,7 +242,7 @@ public Mono> getSchemas(String cluster List subjectsToRetrieve; boolean paginate = true; - var schemaComparator = Comparator.nullsFirst(getComparatorForSchema(orderBy)); + var schemaComparator = getComparatorForSchema(orderBy); final Comparator comparator = sortOrder == null || !sortOrder.equals(SortOrderDTO.DESC) ? schemaComparator : schemaComparator.reversed(); @@ -286,16 +286,34 @@ private List paginateSchemas( private Comparator getComparatorForSchema( @Valid SchemaColumnsToSortDTO orderBy) { - var defaultComparator = Comparator.comparing(SubjectWithCompatibilityLevel::getSubject); + var defaultComparator = Comparator.comparing( + SubjectWithCompatibilityLevel::getSubject, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); if (orderBy == null) { return defaultComparator; } return switch (orderBy) { - case SUBJECT -> Comparator.comparing(SubjectWithCompatibilityLevel::getSubject); - case ID -> Comparator.comparing(SubjectWithCompatibilityLevel::getId); - case TYPE -> Comparator.comparing(SubjectWithCompatibilityLevel::getSchemaType); - case COMPATIBILITY -> Comparator.comparing(SubjectWithCompatibilityLevel::getCompatibility); - case VERSION -> Comparator.nullsLast(Comparator.comparing(SubjectWithCompatibilityLevel::getVersion)); + case SUBJECT -> Comparator.comparing( + SubjectWithCompatibilityLevel::getSubject, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); + case ID -> Comparator.comparing( + SubjectWithCompatibilityLevel::getId, + Comparator.nullsFirst(Integer::compareTo) + ); + case TYPE -> Comparator.comparing( + SubjectWithCompatibilityLevel::getSchemaType, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); + case COMPATIBILITY -> Comparator.comparing( + SubjectWithCompatibilityLevel::getCompatibility, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); + case VERSION -> Comparator.comparing( + SubjectWithCompatibilityLevel::getVersion, + Comparator.nullsFirst(Comparator.naturalOrder()) + ); default -> defaultComparator; }; } diff --git a/api/src/main/java/io/kafbat/ui/service/KafkaConnectService.java b/api/src/main/java/io/kafbat/ui/service/KafkaConnectService.java index 2d6dfae15..43ae253cc 100644 --- a/api/src/main/java/io/kafbat/ui/service/KafkaConnectService.java +++ b/api/src/main/java/io/kafbat/ui/service/KafkaConnectService.java @@ -161,7 +161,7 @@ private List filterConnectors(List c ClustersProperties.ClusterFtsProperties fts = clustersProperties.getFts(); KafkaConnectNgramFilter filter = new KafkaConnectNgramFilter(connectors, fts.isEnabled(), fts.getConnect()); - return filter.find(search); + return filter.find(search, false); } private Stream getStringsForSearch(FullConnectorInfoDTO fullConnectorInfo) {