private void addExactTokens() { Matcher matcher = Pattern.compile(QUOTATION_MARK_FIND_REGEX).matcher(rawFilter); while (matcher.find()) { String matched = rawFilter.substring(matcher.start(), matcher.end()); tokens.add(new FilterToken(matched.replace("\"", ""), true)); dynamicFilter = dynamicFilter.replaceFirst(matched, ""); } }
public String get() { return anywhereOrExact(token); }
public List<String> getAllPossibleMatches() { if (exact) { return Collections.singletonList(token); } else { List<String> matches = new ArrayList<>(); matches.add(get()); matches.add(getOnlyNumbersAndLetters()); return matches; } }
private void appendFilterByQuickFilter() { if (ctx.getQuickFilter().hasFilter()) { BooleanBuilder filterBooleanBuilder = new BooleanBuilder(); for (FilterToken token : quickFilter.listFilterTokens()) { BooleanBuilder tokenBooleanBuilder = new BooleanBuilder(); for (String filter : token.getAllPossibleMatches()) { tokenBooleanBuilder.or(buildQuickFilterBooleanExpression($, filter)); } filterBooleanBuilder.and(tokenBooleanBuilder); } query.getQuickFilterWhereClause().or(filterBooleanBuilder); } }
@Override public void extend(@Nonnull RequirementSearchContext context) { QVariableInstanceEntity variableEntity = new QVariableInstanceEntity(variableName); RequirementSearchQuery query = context.getQuery(); RequirementSearchAliases $ = context.getAliases(); createSelect(variableEntity, context); query.leftJoin($.flowInstance.variables, variableEntity).on(variableEntity.name.eq(variableName)); QuickFilter quickFilter = context.getQuickFilter(); if (context.getQuickFilter().hasFilter()) { BooleanBuilder filterBooleanBuilder = new BooleanBuilder(); for (FilterToken token : quickFilter.listFilterTokens()) { BooleanBuilder tokenBooleanBuilder = new BooleanBuilder(); for (String filter : token.getAllPossibleMatches()) { tokenBooleanBuilder.or(toChar(variableEntity).likeIgnoreCase(filter)); } filterBooleanBuilder.and(tokenBooleanBuilder); } query.getQuickFilterWhereClause().or(filterBooleanBuilder); } }
public String getOnlyNumbersAndLetters() { return anywhereOrExact(token.replaceAll("[^\\da-zA-Z]", "")); }