@Override public List<MessageId> search(MailboxSession session, Collection<MailboxId> mailboxIds, SearchQuery searchQuery, long limit) throws MailboxException { throw new UnsupportedSearchException(); } }
private boolean matches(SearchQuery.ModSeqCriterion criterion, MailboxMessage message) throws UnsupportedSearchException { SearchQuery.NumericOperator operator = criterion.getOperator(); long modSeq = message.getModSeq(); long value = operator.getValue(); switch (operator.getType()) { case LESS_THAN: return modSeq < value; case GREATER_THAN: return modSeq > value; case EQUALS: return modSeq == value; default: throw new UnsupportedSearchException(); } }
private boolean matches(SearchQuery.SizeCriterion criterion, MailboxMessage message) throws UnsupportedSearchException { SearchQuery.NumericOperator operator = criterion.getOperator(); long size = message.getFullContentOctets(); long value = operator.getValue(); switch (operator.getType()) { case LESS_THAN: return size < value; case GREATER_THAN: return size > value; case EQUALS: return size == value; default: throw new UnsupportedSearchException(); } }
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(); } }
private boolean matchesInternalDate(SearchQuery.DateOperator operator, MailboxMessage message) throws UnsupportedSearchException { Date date = operator.getDate(); DateResolution dateResultion = operator.getDateResultion(); Date internalDate = message.getInternalDate(); SearchQuery.DateComparator type = operator.getType(); switch (type) { case ON: return on(internalDate, date, dateResultion); case BEFORE: return before(internalDate, date, dateResultion); case AFTER: return after(internalDate, date, dateResultion); default: throw new UnsupportedSearchException(); } }
private boolean matches(SearchQuery.TextCriterion criterion, MailboxMessage message) throws MailboxException { try { final SearchQuery.ContainsOperator operator = criterion.getOperator(); final String value = operator.getValue(); switch (criterion.getType()) { case BODY: return bodyContains(value, message); case TEXT: return textContains(value, message); case FULL: return messageContains(value, message); case ATTACHMENTS: return attachmentsContain(value, message); case ATTACHMENT_FILE_NAME: return hasFileName(value, message); } throw new UnsupportedSearchException(); } catch (IOException | MimeException e) { throw new MailboxException("Unable to parse message", e); } }
private boolean matches(SearchQuery.DateOperator operator, String headerName, MailboxMessage message) throws MailboxException { Date date = operator.getDate(); DateResolution res = operator.getDateResultion(); try { final String value = headerValue(headerName, message); if (value == null) { return false; } else { try { Date isoFieldValue = toISODate(value); SearchQuery.DateComparator type = operator.getType(); switch (type) { case AFTER: return after(isoFieldValue, date, res); case BEFORE: return before(isoFieldValue, date, res); case ON: return on(isoFieldValue, date, res); default: throw new UnsupportedSearchException(); } } catch (ParseException e) { return false; } } } catch (IOException e) { return false; } }
return isMatch(mimeMessageIDCriterion.asHeaderCriterion(), message, recentMessageUids); } else { throw new UnsupportedSearchException();