void appendFilters(List<FilterOption> filters, SearchFields multipleFilter, boolean enableWordSearch) { final Set<String> specificFilters = new HashSet<>(filters.size()); if (!filters.isEmpty()) { FilterOption previousFilter = null; if (!this.stringQueryBuilder.toString().contains("WHERE")) { stringQueryBuilder.append(" WHERE ("); } else { stringQueryBuilder.append(" AND ("); } for (final FilterOption filterOption : filters) { if (previousFilter != null) { final FilterOperationType prevOp = previousFilter.getFilterOperationType(); final FilterOperationType currOp = filterOption.getFilterOperationType(); // Auto add AND if previous operator was normal op or ')' and that current op is normal op or '(' : if ((isNormalOperator(prevOp) || prevOp == R_PARENTHESIS) && (isNormalOperator(currOp) || currOp == L_PARENTHESIS)) { stringQueryBuilder.append(" AND "); } } final StringBuilder aliasBuilder = appendFilterClause(stringQueryBuilder, filterOption); if (aliasBuilder != null) { specificFilters.add(aliasBuilder.toString()); } previousFilter = filterOption; } stringQueryBuilder.append(")"); } if (multipleFilter != null && multipleFilter.getTerms() != null && !multipleFilter.getTerms().isEmpty()) { handleMultipleFilters(stringQueryBuilder, multipleFilter, specificFilters, enableWordSearch); } }
void appendFilters(List<FilterOption> filters, SearchFields multipleFilter, boolean enableWordSearch) { final Set<String> specificFilters = new HashSet<>(filters.size()); if (!filters.isEmpty()) { FilterOption previousFilter = null; if (!this.stringQueryBuilder.toString().contains("WHERE")) { stringQueryBuilder.append(" WHERE ("); } else { stringQueryBuilder.append(" AND ("); } for (final FilterOption filterOption : filters) { if (previousFilter != null) { final FilterOperationType prevOp = previousFilter.getFilterOperationType(); final FilterOperationType currOp = filterOption.getFilterOperationType(); // Auto add AND if previous operator was normal op or ')' and that current op is normal op or '(' : if ((isNormalOperator(prevOp) || prevOp == R_PARENTHESIS) && (isNormalOperator(currOp) || currOp == L_PARENTHESIS)) { stringQueryBuilder.append(" AND "); } } final StringBuilder aliasBuilder = appendFilterClause(stringQueryBuilder, filterOption); if (aliasBuilder != null) { specificFilters.add(aliasBuilder.toString()); } previousFilter = filterOption; } stringQueryBuilder.append(")"); } if (multipleFilter != null && multipleFilter.getTerms() != null && !multipleFilter.getTerms().isEmpty()) { handleMultipleFilters(stringQueryBuilder, multipleFilter, specificFilters, enableWordSearch); } }
private StringBuilder appendFilterClause(final StringBuilder clause, final FilterOption filterOption) { final FilterOperationType type = filterOption.getFilterOperationType(); StringBuilder completeField = null; if (filterOption.getPersistentClass() != null) {
private StringBuilder appendFilterClause(final StringBuilder clause, final FilterOption filterOption) { final FilterOperationType type = filterOption.getFilterOperationType(); StringBuilder completeField = null; if (filterOption.getPersistentClass() != null) {