public static ConsumerGroupListSearchCriteria parseTopicCriteria()

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))
        ));
    }