@Test public void convertToSortsShouldSupportTo() { assertThat(SortConverter.convertToSorts(ImmutableList.of("to desc"))) .containsExactly(new Sort(SortClause.MailboxTo, Order.REVERSE)); }
private static Comparator<MailboxMessage> toComparator(Sort sort) { switch (sort.getSortClause()) { case Arrival: return InternalDateComparator.INTERNALDATE; case MailboxCc: return HeaderMailboxComparator.CC_COMPARATOR; case MailboxFrom: return HeaderMailboxComparator.FROM_COMPARATOR; case Size: return SizeComparator.SIZE; case BaseSubject: return BaseSubjectComparator.BASESUBJECT; case MailboxTo: return HeaderMailboxComparator.TO_COMPARATOR; case Uid: return UidComparator.UID; case SentDate: return SentDateComparator.SENTDATE; case DisplayFrom: return HeaderDisplayComparator.FROM_COMPARATOR; case DisplayTo: return HeaderDisplayComparator.TO_COMPARATOR; case Id: return MessageIdComparator.MESSAGE_ID_COMPARATOR; default: throw new NotImplementedException("Combined comparator does not support sort " + sort.getSortClause()); } }
private static Function<Sort, Comparator<MailboxMessage>> toComparator() { return sort -> optionalResverse(toComparator(sort), sort.isReverse()); }
@Test public void convertToSortsShouldSupportDate() { assertThat(SortConverter.convertToSorts(ImmutableList.of("date desc"))) .containsExactly(new Sort(SortClause.SentDate, Order.REVERSE)); }
private static SortOrder getOrder(SearchQuery.Sort sort) { if (sort.isReverse()) { return SortOrder.DESC; } else { return SortOrder.ASC; } } }
@Test public void convertToSortsShouldSupportAscOrder() { assertThat(SortConverter.convertToSorts(ImmutableList.of("date asc"))) .containsExactly(new Sort(SortClause.SentDate, Order.NATURAL)); }
private static Sort toSort(String jmapSort) { Preconditions.checkNotNull(jmapSort); List<String> splitToList = Splitter.on(SEPARATOR).splitToList(jmapSort); checkField(splitToList); return new SearchQuery.Sort(getSortClause(splitToList.get(0)), isReverse(splitToList)); }
public static FieldSortBuilder convertSort(SearchQuery.Sort sort) { return getSortClause(sort.getSortClause()) .order(getOrder(sort)) .sortMode(MIN); }
@Test public void convertToSortsShouldSupportFrom() { assertThat(SortConverter.convertToSorts(ImmutableList.of("from desc"))) .containsExactly(new Sort(SortClause.MailboxFrom, Order.REVERSE)); }
@Test public void convertToSortsShouldSupportSize() { assertThat(SortConverter.convertToSorts(ImmutableList.of("size desc"))) .containsExactly(new Sort(SortClause.Size, Order.REVERSE)); } }
@Test public void convertToSortsShouldSupportSubject() { assertThat(SortConverter.convertToSorts(ImmutableList.of("subject desc"))) .containsExactly(new Sort(SortClause.BaseSubject, Order.REVERSE)); }
@Test public void convertToSortsShouldBeDescWhenNoOrderClause() { assertThat(SortConverter.convertToSorts(ImmutableList.of("date"))) .containsExactly(new Sort(SortClause.SentDate, Order.REVERSE)); }
@Test public void convertToSortsShouldSupportId() { assertThat(SortConverter.convertToSorts(ImmutableList.of("id desc"))) .containsExactly(new Sort(SortClause.Id, Order.REVERSE)); }