private QueryBuilder convertHeader(SearchQuery.HeaderCriterion headerCriterion) { return headerOperatorConverterMap.get(headerCriterion.getOperator().getClass()) .apply( headerCriterion.getHeaderName().toLowerCase(Locale.US), headerCriterion.getOperator()); }
private boolean matches(SearchQuery.HeaderCriterion criterion, MailboxMessage message) throws MailboxException, IOException { SearchQuery.HeaderOperator operator = criterion.getOperator(); String headerName = criterion.getHeaderName(); if (operator instanceof SearchQuery.DateOperator) { return matches((SearchQuery.DateOperator) operator, headerName, message); } else if (operator instanceof SearchQuery.ContainsOperator) { return matches((SearchQuery.ContainsOperator) operator, headerName, message); } else if (operator instanceof SearchQuery.ExistsOperator) { return exists(headerName, message); } else if (operator instanceof SearchQuery.AddressOperator) { return matchesAddress((SearchQuery.AddressOperator) operator, headerName, message); } else { throw new UnsupportedSearchException(); } }