in src/main/java/com/epam/digital/data/platform/generator/factory/impl/SearchHandlerScopeFactory.java [179:279]
private SearchOperation getSearchOperation(
String operationName,
Map<String, SearchType> columnToSearchTypeMap,
SearchConditionOperation.LogicOperator currentCondition,
Table table) {
var equalFields =
currentCondition.getColumns().stream()
.filter(column -> SearchType.EQUAL.equals(columnToSearchTypeMap.get(column)))
.map(
column ->
new SearchConditionField(
getPropertyName(column), column, isIgnoreCase(column, table)))
.collect(toList());
var notEqualFields =
currentCondition.getColumns()
.stream()
.filter(column -> SearchType.NOT_EQUAL.equals(columnToSearchTypeMap.get(column)))
.map(
column ->
new SearchConditionField(
getPropertyName(column), column, isIgnoreCase(column, table)))
.collect(toList());
var containsFields =
currentCondition.getColumns()
.stream()
.filter(column -> SearchType.CONTAINS.equals(columnToSearchTypeMap.get(column)))
.map(column -> new SearchConditionField(getPropertyName(column), column, true))
.collect(toList());
var startsWithFields =
currentCondition.getColumns()
.stream()
.filter(column -> SearchType.STARTS_WITH.equals(columnToSearchTypeMap.get(column)))
.map(column -> new SearchConditionField(getPropertyName(column), column, true))
.collect(toList());
var startsWithArrayFields =
currentCondition.getColumns()
.stream()
.filter(column -> SearchType.STARTS_WITH_ARRAY.equals(columnToSearchTypeMap.get(column)))
.map(column -> new SearchConditionField(getPropertyName(column), column, true))
.collect(toList());
var inFields =
currentCondition.getColumns()
.stream()
.filter(column -> SearchType.IN.equals(columnToSearchTypeMap.get(column)))
.map(
column ->
new SearchConditionField(
getPropertyName(column), column, isIgnoreCase(column, table)))
.collect(toList());
var notInFields =
currentCondition.getColumns()
.stream()
.filter(column -> SearchType.NOT_IN.equals(columnToSearchTypeMap.get(column)))
.map(
column ->
new SearchConditionField(
getPropertyName(column), column, isIgnoreCase(column, table)))
.collect(toList());
var betweenFields =
currentCondition.getColumns()
.stream()
.filter(column -> SearchType.BETWEEN.equals(columnToSearchTypeMap.get(column)))
.map(
column ->
new SearchConditionField(
getPropertyName(column), column, isIgnoreCase(column, table)))
.collect(toList());
var nestedSearchOperations =
Optional.ofNullable(currentCondition.getLogicOperators())
.orElse(Collections.emptyList())
.stream()
.map(
innerLogicOperator -> {
var columnsAppendix =
innerLogicOperator.getColumns().stream()
.map(this::getSchemaName)
.collect(Collectors.joining());
var randomSuffixAppendix = RandomStringUtils.randomNumeric(5);
var name =
innerLogicOperator.getType().toString().toLowerCase()
+ columnsAppendix
+ randomSuffixAppendix;
return getSearchOperation(name, columnToSearchTypeMap, innerLogicOperator, table);
})
.collect(toList());
var searchOperation = new SearchOperation();
searchOperation.setOperator(currentCondition.getType());
searchOperation.setOperationName(operationName);
searchOperation.setEqualFields(equalFields);
searchOperation.setNotEqualFields(notEqualFields);
searchOperation.setContainsFields(containsFields);
searchOperation.setStartsWithFields(startsWithFields);
searchOperation.setStartsWithArrayFields(startsWithArrayFields);
searchOperation.setInFields(inFields);
searchOperation.setNotInFields(notInFields);
searchOperation.setBetweenFields(betweenFields);
searchOperation.setNestedSearchOperations(nestedSearchOperations);
return searchOperation;
}