private IssueSearcher getSearcher(final TerminalClause clause) { final Collection<IssueSearcher<?>> searchersByClauseName = searchHandlerManager.getSearchersByClauseName(user, clause.getName()); if (searchersByClauseName.size() == 1 ) { return searchersByClauseName.iterator().next(); } log.debug(String.format("Unable to resolve only one searcher for field '%s', found '%d' searchers", clause.getName(), searchersByClauseName.size())); return null; } }
boolean calculateDoesQueryValidationFitFilterForm(final ApplicationUser user, final SearchContext searchContext, final Query query) { final ValidatorVisitor validatorVisitor = validatorVisitorFactory.createVisitor(user, null, query.getWhereClause()); TerminalClauseCollectingVisitor terminalClauseCollectingVisitor = new TerminalClauseCollectingVisitor(); query.getWhereClause().accept(terminalClauseCollectingVisitor); Collection<TerminalClause> clauses = terminalClauseCollectingVisitor.getClauses(); for (TerminalClause clause : clauses) { final Collection<IssueSearcher<?>> issueSearchers = searchHandlerManager.getSearchersByClauseName(user, clause.getName()); for (IssueSearcher<?> issueSearcher : issueSearchers) { if (!checkValidationMatches(user, query, searchContext, clause, issueSearcher, validatorVisitor)) { return false; } } } return true; }