in commons/src/main/java/com/epam/eco/kafkamanager/ConsumerGroupListSearchCriteria.java [56:103]
public static ConsumerGroupListSearchCriteria parseTopicCriteria(Map<String, ?> map) {
Set<SingleClause<String>> groupNameClauses = new HashSet<>();
Set<SingleClause<ConsumerGroupState>> stateClauses = new HashSet<>();
Set<SingleClause<ConsumerGroupInfo.StorageType>> storageClauses = new HashSet<>();
Set<SingleClause<String>> topicsClauses = new HashSet<>();
Set<SingleClause<Integer>> topicsCountClauses = new HashSet<>();
Set<SingleClause<String>> membersClauses = new HashSet<>();
Set<SingleClause<Integer>> membersCountClauses = new HashSet<>();
Set<SingleClause<String>> descriptionClauses = new HashSet<>();
for(String key : map.keySet()) {
if(ifKeyExists(key) && key.indexOf(OPERATION_SEPARATOR) > 0) {
String filterColumn = key.substring(0, key.indexOf(OPERATION_SEPARATOR));
String rawOperation = key.substring(key.indexOf(OPERATION_SEPARATOR) + 1);
Operation filterOperation = Operation.valueOf(rawOperation);
switch (filterColumn) {
case GROUP_NAME_ATTR -> groupNameClauses.add(new SingleClause<>((String) map.get(key), filterOperation));
case STATE_ATTR -> stateClauses.add(new SingleClause<>(ConsumerGroupState.valueOf((String) map.get(key)), filterOperation));
case STORAGE_ATTR -> storageClauses.add(new SingleClause<>(ConsumerGroupInfo.StorageType.valueOf((String)map.get(key)), filterOperation));
case TOPICS_ATTR -> topicsClauses.add(new SingleClause<>((String) map.get(key), filterOperation));
case TOPICS_COUNT_ATTR -> topicsCountClauses.add(new SingleClause<>(Integer.valueOf((String) map.get(key)), filterOperation));
case MEMBERS_ATTR -> membersClauses.add(new SingleClause<>((String) map.get(key), filterOperation));
case MEMBERS_COUNT_ATTR -> membersCountClauses.add(new SingleClause<>(Integer.valueOf((String) map.get(key)), filterOperation));
case DESCRIPTION_ATTR -> descriptionClauses.add(new SingleClause<>((String) map.get(key), filterOperation));
default -> {
}
}
}
}
return new ConsumerGroupListSearchCriteria(
Set.of(new ClausesWithHandler<>(groupNameClauses, stringClausesHandler, ConsumerGroupInfo::getName),
new ClausesWithHandler<ConsumerGroupInfo.StorageType, ConsumerGroupInfo, ConsumerGroupInfo>(storageClauses, storageClausesHandler,
consumerGroupInfo -> consumerGroupInfo),
new ClausesWithHandler<ConsumerGroupState,ConsumerGroupInfo,ConsumerGroupInfo>(stateClauses, stateClausesHandler, consumerGroupInfo -> consumerGroupInfo),
new ClausesWithHandler<String,ConsumerGroupInfo,ConsumerGroupInfo>(topicsClauses, topicsClausesHandler, consumerGroupInfo -> consumerGroupInfo),
new ClausesWithHandler<Integer,Integer,ConsumerGroupInfo>(topicsCountClauses, numericClausesHandler, consumerInfo->consumerInfo.getTopicNames().size()),
new ClausesWithHandler<String,ConsumerGroupInfo,ConsumerGroupInfo>(membersClauses, membersClausesHandler, groupInfo -> groupInfo),
new ClausesWithHandler<Integer,Integer,ConsumerGroupInfo>(membersCountClauses, numericClausesHandler, consumerInfo->consumerInfo.getMembers().size()),
new ClausesWithHandler<String,String,ConsumerGroupInfo>(descriptionClauses, stringClausesHandler,
groupInfo -> groupInfo.getMetadata().map(Metadata::getDescription).orElse(null))
));
}