in src/main/java/com/epam/digital/data/platform/generator/factory/impl/SearchConditionScopeFactory.java [80:147]
private List<Field> getSearchConditionFields(Table table) {
var searchConditions = searchConditionProvider.findFor(getCutTableName(table));
var columnToSearchTypeMap = searchConditions.getColumnToSearchType();
List<Field> fields = new ArrayList<>();
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.EQUAL)
.map(
sc -> mapColumnConditionToField(table, sc, getPropertyName(sc), this::typeToString))
.collect(toList()));
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.NOT_EQUAL)
.map(
sc -> mapColumnConditionToField(table, sc, getPropertyName(sc), this::typeToString))
.collect(toList()));
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.CONTAINS)
.map(
sc -> mapColumnConditionToField(table, sc, getPropertyName(sc), this::typeToString))
.collect(toList()));
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.STARTS_WITH)
.map(
sc -> mapColumnConditionToField(table, sc, getPropertyName(sc), this::typeToString))
.collect(toList()));
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.STARTS_WITH_ARRAY)
.map(
sc -> mapColumnConditionToField(table, sc, getPropertyName(sc), this::typeToString))
.collect(toList()));
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.IN)
.map(
sc ->
mapColumnConditionToField(
table, sc, getPropertyName(sc), this::getFieldTypeForIn))
.collect(toList()));
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.NOT_IN)
.map(
sc ->
mapColumnConditionToField(
table, sc, getPropertyName(sc), this::getFieldTypeForIn))
.collect(toList()));
fields.addAll(
getColumnsOfSearchType(columnToSearchTypeMap, SearchType.BETWEEN)
.flatMap(
sc ->
Stream.of(
mapColumnConditionToField(
table, sc, getPropertyName(sc) + "From", this::typeToString),
mapColumnConditionToField(
table, sc, getPropertyName(sc) + "To", this::typeToString)))
.collect(toList()));
if (SearchConditionPaginationType.isTypeOffset(searchConditions.getPagination())) {
fields.addAll(
of(
getAuxiliaryField("limit", Integer.class),
getAuxiliaryField("offset", Integer.class)));
} else if (SearchConditionPaginationType.isTypePage(searchConditions.getPagination())) {
fields.addAll(
of(
getAuxiliaryField("pageSize", Integer.class),
getAuxiliaryField("pageNo", Integer.class)));
}
return fields;
}