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