public SearchFields getEntitySearchTerm(final String searchString) { final StringTokenizer tokens = new StringTokenizer(searchString, " "); final ArrayList<String> terms = new ArrayList<String>(tokens.countTokens()); while (tokens.hasMoreTokens()) { final String term = tokens.nextToken(); terms.add(term); } return new SearchFields(terms, getAllFields()); }
private void handleMultipleFilters(final StringBuilder builder, final SearchFields multipleFilter, final Set<String> specificFilters, final boolean enableWordSearch) { final Map<Class<? extends PersistentObject>, Set<String>> allTextFields = multipleFilter.getFields(); final Set<String> fields = new HashSet<>(); for (final Map.Entry<Class<? extends PersistentObject>, Set<String>> entry : allTextFields.entrySet()) { final String alias = classAliasMappings.get(entry.getKey().getName()); for (final String field : entry.getValue()) { fields.add(alias + '.' + field); } } fields.removeAll(specificFilters); if (!fields.isEmpty()) { final List<String> terms = multipleFilter.getTerms(); applyFiltersOnQuery(builder, fields, terms, 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); } }
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 void handleMultipleFilters(final StringBuilder builder, final SearchFields multipleFilter, final Set<String> specificFilters, final boolean enableWordSearch) { final Map<Class<? extends PersistentObject>, Set<String>> allTextFields = multipleFilter.getFields(); final Set<String> fields = new HashSet<>(); for (final Map.Entry<Class<? extends PersistentObject>, Set<String>> entry : allTextFields.entrySet()) { final String alias = classAliasMappings.get(entry.getKey().getName()); for (final String field : entry.getValue()) { fields.add(alias + '.' + field); } } fields.removeAll(specificFilters); if (!fields.isEmpty()) { final List<String> terms = multipleFilter.getTerms(); applyFiltersOnQuery(builder, fields, terms, enableWordSearch); } }
public SearchFields getEntitySearchTerm(final String searchString) { final StringTokenizer tokens = new StringTokenizer(searchString, " "); final ArrayList<String> terms = new ArrayList<String>(tokens.countTokens()); while (tokens.hasMoreTokens()) { final String term = tokens.nextToken(); terms.add(term); } return new SearchFields(terms, getAllFields()); }