Skip to content

Commit ff1376d

Browse files
authored
BE: Fixed null sorting for connect/schema/quatos (#1348)
1 parent a24a2d2 commit ff1376d

File tree

4 files changed

+57
-15
lines changed

4 files changed

+57
-15
lines changed

api/src/main/java/io/kafbat/ui/controller/ClientQuotasController.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,21 @@
2626
public class ClientQuotasController extends AbstractController implements ClientQuotasApi, McpTool {
2727

2828
private static final Comparator<ClientQuotaRecord> QUOTA_RECORDS_COMPARATOR =
29-
Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::user))
30-
.thenComparing(Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::clientId)))
31-
.thenComparing(Comparator.nullsLast(Comparator.comparing(ClientQuotaRecord::ip)));
29+
Comparator.nullsLast(
30+
Comparator.comparing(ClientQuotaRecord::user, Comparator.nullsLast(String::compareTo))
31+
)
32+
.thenComparing(Comparator.nullsLast(
33+
Comparator.comparing(
34+
ClientQuotaRecord::clientId,
35+
Comparator.nullsLast(String::compareTo)
36+
)
37+
))
38+
.thenComparing(Comparator.nullsLast(
39+
Comparator.comparing(
40+
ClientQuotaRecord::ip,
41+
Comparator.nullsLast(String::compareTo)
42+
)
43+
));
3244

3345
private final ClientQuotaService clientQuotaService;
3446

api/src/main/java/io/kafbat/ui/controller/KafkaConnectController.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,14 +275,26 @@ public Mono<ResponseEntity<ConnectorPluginConfigValidationResponseDTO>> validate
275275
}
276276

277277
private Comparator<FullConnectorInfoDTO> getConnectorsComparator(ConnectorColumnsToSortDTO orderBy) {
278-
var defaultComparator = Comparator.comparing(FullConnectorInfoDTO::getName);
278+
var defaultComparator = Comparator.comparing(
279+
FullConnectorInfoDTO::getName,
280+
Comparator.nullsFirst(Comparator.naturalOrder())
281+
);
279282
if (orderBy == null) {
280283
return defaultComparator;
281284
}
282285
return switch (orderBy) {
283-
case CONNECT -> Comparator.comparing(FullConnectorInfoDTO::getConnect);
284-
case TYPE -> Comparator.comparing(FullConnectorInfoDTO::getType);
285-
case STATUS -> Comparator.comparing(fullConnectorInfoDTO -> fullConnectorInfoDTO.getStatus().getState());
286+
case CONNECT -> Comparator.comparing(
287+
FullConnectorInfoDTO::getConnect,
288+
Comparator.nullsFirst(Comparator.naturalOrder())
289+
);
290+
case TYPE -> Comparator.comparing(
291+
FullConnectorInfoDTO::getType,
292+
Comparator.nullsFirst(Comparator.naturalOrder())
293+
);
294+
case STATUS -> Comparator.comparing(
295+
fullConnectorInfoDTO -> fullConnectorInfoDTO.getStatus().getState(),
296+
Comparator.nullsFirst(Comparator.naturalOrder())
297+
);
286298
default -> defaultComparator;
287299
};
288300
}

api/src/main/java/io/kafbat/ui/controller/SchemasController.java

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public Mono<ResponseEntity<SchemaSubjectsResponseDTO>> getSchemas(String cluster
242242

243243
List<String> subjectsToRetrieve;
244244
boolean paginate = true;
245-
var schemaComparator = Comparator.nullsFirst(getComparatorForSchema(orderBy));
245+
var schemaComparator = getComparatorForSchema(orderBy);
246246
final Comparator<SubjectWithCompatibilityLevel> comparator =
247247
sortOrder == null || !sortOrder.equals(SortOrderDTO.DESC)
248248
? schemaComparator : schemaComparator.reversed();
@@ -286,16 +286,34 @@ private List<SubjectWithCompatibilityLevel> paginateSchemas(
286286

287287
private Comparator<SubjectWithCompatibilityLevel> getComparatorForSchema(
288288
@Valid SchemaColumnsToSortDTO orderBy) {
289-
var defaultComparator = Comparator.comparing(SubjectWithCompatibilityLevel::getSubject);
289+
var defaultComparator = Comparator.comparing(
290+
SubjectWithCompatibilityLevel::getSubject,
291+
Comparator.nullsFirst(Comparator.naturalOrder())
292+
);
290293
if (orderBy == null) {
291294
return defaultComparator;
292295
}
293296
return switch (orderBy) {
294-
case SUBJECT -> Comparator.comparing(SubjectWithCompatibilityLevel::getSubject);
295-
case ID -> Comparator.comparing(SubjectWithCompatibilityLevel::getId);
296-
case TYPE -> Comparator.comparing(SubjectWithCompatibilityLevel::getSchemaType);
297-
case COMPATIBILITY -> Comparator.comparing(SubjectWithCompatibilityLevel::getCompatibility);
298-
case VERSION -> Comparator.nullsLast(Comparator.comparing(SubjectWithCompatibilityLevel::getVersion));
297+
case SUBJECT -> Comparator.comparing(
298+
SubjectWithCompatibilityLevel::getSubject,
299+
Comparator.nullsFirst(Comparator.naturalOrder())
300+
);
301+
case ID -> Comparator.comparing(
302+
SubjectWithCompatibilityLevel::getId,
303+
Comparator.nullsFirst(Integer::compareTo)
304+
);
305+
case TYPE -> Comparator.comparing(
306+
SubjectWithCompatibilityLevel::getSchemaType,
307+
Comparator.nullsFirst(Comparator.naturalOrder())
308+
);
309+
case COMPATIBILITY -> Comparator.comparing(
310+
SubjectWithCompatibilityLevel::getCompatibility,
311+
Comparator.nullsFirst(Comparator.naturalOrder())
312+
);
313+
case VERSION -> Comparator.comparing(
314+
SubjectWithCompatibilityLevel::getVersion,
315+
Comparator.nullsFirst(Comparator.naturalOrder())
316+
);
299317
default -> defaultComparator;
300318
};
301319
}

api/src/main/java/io/kafbat/ui/service/KafkaConnectService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ private List<FullConnectorInfoDTO> filterConnectors(List<FullConnectorInfoDTO> c
161161
ClustersProperties.ClusterFtsProperties fts = clustersProperties.getFts();
162162
KafkaConnectNgramFilter filter =
163163
new KafkaConnectNgramFilter(connectors, fts.isEnabled(), fts.getConnect());
164-
return filter.find(search);
164+
return filter.find(search, false);
165165
}
166166

167167
private Stream<String> getStringsForSearch(FullConnectorInfoDTO fullConnectorInfo) {

0 commit comments

Comments
 (0)