public SearchConditions findFor()

in src/main/java/com/epam/digital/data/platform/generator/metadata/SearchConditionProvider.java [61:100]


  public SearchConditions findFor(String name) {
    var groupedBySearchParam = metadataFacade
        .findByChangeTypeAndChangeName(SEARCH_CONDITION_CHANGE_TYPE, name)
        .collect(groupingBy(
            Metadata::getName,
            mapping(Metadata::getValue,
                toList())));

    var columnToSearchType = metadataFacade
            .findByChangeTypeAndChangeName(SEARCH_CONDITION_CHANGE_TYPE, name)
            .filter(metadata -> SearchType.typeValues().contains(metadata.getName()))
            .collect(toMap(Metadata::getValue, metadata -> SearchType.findByValue(metadata.getName())));

    var returningColumns = metadataFacade.findByChangeType(name)
        .map(Metadata::getValue).collect(toList());

    var searchOperationTree =
        Optional.ofNullable(groupedBySearchParam.get(LOGIC_OPERATOR_ATTRIBUTE_NAME))
            .map(logicOperator -> logicOperator.get(0))
            .map(this::mapLogicOperatorToObj)
            .orElse(null);

    var scParams = new SearchConditions();
    scParams.setColumnToSearchType(columnToSearchType);
    scParams.setSearchOperationTree(searchOperationTree);
    scParams.setReturningColumns(returningColumns);

    var limit = groupedBySearchParam.get(LIMIT_ATTRIBUTE_NAME);
    if (limit != null) {
      scParams.setLimit(Integer.valueOf(limit.get(0)));
    }

    var pagination =
        Optional.ofNullable(groupedBySearchParam.get(PAGINATION_ATTRIBUTE_NAME))
            .map(paginationValue -> paginationValue.get(0))
            .orElse(null);
    scParams.setPagination(SearchConditionPaginationType.findByValue(pagination));

    return scParams;
  }