You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/06/07 10:46:19 UTC
[09/21] james-project git commit: JAMES-2044 Improve Lucene
messageSearchIndex switch clauses
JAMES-2044 Improve Lucene messageSearchIndex switch clauses
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7a7a0a61
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7a7a0a61
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7a7a0a61
Branch: refs/heads/master
Commit: 7a7a0a61769b6408d413ff334becb9c86f716b11
Parents: 5aae15d
Author: benwa <bt...@linagora.com>
Authored: Mon Jun 5 11:42:37 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jun 7 17:34:32 2017 +0700
----------------------------------------------------------------------
.../lucene/search/LuceneMessageSearchIndex.java | 237 ++++++++-----------
1 file changed, 104 insertions(+), 133 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/7a7a0a61/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
index e243052..91b39a6 100644
--- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
+++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
@@ -773,65 +773,45 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
}
private String toSentDateField(DateResolution res) {
- String field;
switch (res) {
- case Year:
- field = SENT_DATE_FIELD_YEAR_RESOLUTION;
- break;
- case Month:
- field = SENT_DATE_FIELD_MONTH_RESOLUTION;
- break;
- case Day:
- field = SENT_DATE_FIELD_DAY_RESOLUTION;
- break;
- case Hour:
- field = SENT_DATE_FIELD_HOUR_RESOLUTION;
- break;
- case Minute:
- field = SENT_DATE_FIELD_MINUTE_RESOLUTION;
- break;
- case Second:
- field = SENT_DATE_FIELD_SECOND_RESOLUTION;
- break;
- default:
- field = SENT_DATE_FIELD_MILLISECOND_RESOLUTION;
- break;
+ case Year:
+ return SENT_DATE_FIELD_YEAR_RESOLUTION;
+ case Month:
+ return SENT_DATE_FIELD_MONTH_RESOLUTION;
+ case Day:
+ return SENT_DATE_FIELD_DAY_RESOLUTION;
+ case Hour:
+ return SENT_DATE_FIELD_HOUR_RESOLUTION;
+ case Minute:
+ return SENT_DATE_FIELD_MINUTE_RESOLUTION;
+ case Second:
+ return SENT_DATE_FIELD_SECOND_RESOLUTION;
+ default:
+ return SENT_DATE_FIELD_MILLISECOND_RESOLUTION;
}
- return field;
}
-
private static Calendar getGMT() {
return Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.US);
}
-
private String toInteralDateField(DateResolution res) {
- String field;
switch (res) {
- case Year:
- field = INTERNAL_DATE_FIELD_YEAR_RESOLUTION;
- break;
- case Month:
- field = INTERNAL_DATE_FIELD_MONTH_RESOLUTION;
- break;
- case Day:
- field = INTERNAL_DATE_FIELD_DAY_RESOLUTION;
- break;
- case Hour:
- field = INTERNAL_DATE_FIELD_HOUR_RESOLUTION;
- break;
- case Minute:
- field = INTERNAL_DATE_FIELD_MINUTE_RESOLUTION;
- break;
- case Second:
- field = INTERNAL_DATE_FIELD_SECOND_RESOLUTION;
- break;
- default:
- field = INTERNAL_DATE_FIELD_MILLISECOND_RESOLUTION;
- break;
+ case Year:
+ return INTERNAL_DATE_FIELD_YEAR_RESOLUTION;
+ case Month:
+ return INTERNAL_DATE_FIELD_MONTH_RESOLUTION;
+ case Day:
+ return INTERNAL_DATE_FIELD_DAY_RESOLUTION;
+ case Hour:
+ return INTERNAL_DATE_FIELD_HOUR_RESOLUTION;
+ case Minute:
+ return INTERNAL_DATE_FIELD_MINUTE_RESOLUTION;
+ case Second:
+ return INTERNAL_DATE_FIELD_SECOND_RESOLUTION;
+ default:
+ return INTERNAL_DATE_FIELD_MILLISECOND_RESOLUTION;
}
- return field;
}
/**
@@ -1059,106 +1039,97 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
}
private Sort createSort(List<SearchQuery.Sort> sorts) {
- Sort sort = new Sort();
List<SortField> fields = new ArrayList<SortField>();
- for (SearchQuery.Sort s : sorts) {
- boolean reverse = s.isReverse();
- SortField sf = null;
-
- switch (s.getSortClause()) {
- case Arrival:
- if (reverse) {
- sf = ARRIVAL_MAILBOX_SORT_REVERSE;
- } else {
- sf = ARRIVAL_MAILBOX_SORT;
- }
- break;
- case SentDate:
- if (reverse) {
- sf = SENT_DATE_SORT_REVERSE;
- } else {
- sf = SENT_DATE_SORT;
- }
- break;
- case MailboxCc:
- if (reverse) {
- sf = FIRST_CC_MAILBOX_SORT_REVERSE;
- } else {
- sf = FIRST_CC_MAILBOX_SORT;
- }
- break;
- case MailboxFrom:
- if (reverse) {
- sf = FIRST_FROM_MAILBOX_SORT_REVERSE;
- } else {
- sf = FIRST_FROM_MAILBOX_SORT;
- }
- break;
- case Size:
- if (reverse) {
- sf = SIZE_SORT_REVERSE;
- } else {
- sf = SIZE_SORT;
- }
- break;
- case BaseSubject:
- if (reverse) {
- sf = BASE_SUBJECT_SORT_REVERSE;
- } else {
- sf = BASE_SUBJECT_SORT;
- }
- break;
- case MailboxTo:
- if (reverse) {
- sf = FIRST_TO_MAILBOX_SORT_REVERSE;
- } else {
- sf = FIRST_TO_MAILBOX_SORT;
- }
- break;
-
- case Uid:
- if (reverse) {
- sf = UID_SORT_REVERSE;
- } else {
- sf = UID_SORT;
- }
- break;
- case DisplayFrom:
- if (reverse) {
- sf = FIRST_FROM_MAILBOX_DISPLAY_SORT_REVERSE;
- } else {
- sf = FIRST_FROM_MAILBOX_DISPLAY_SORT;
- }
- break;
- case DisplayTo:
- if (reverse) {
- sf = FIRST_TO_MAILBOX_DISPLAY_SORT_REVERSE;
- } else {
- sf = FIRST_TO_MAILBOX_DISPLAY_SORT;
- }
- break;
- default:
- break;
- }
- if (sf != null) {
+ for (SearchQuery.Sort sort : sorts) {
+ boolean reverse = sort.isReverse();
+ SortField sortField = createSortField(sort, reverse);
+ if (sortField != null) {
- fields.add(sf);
+ fields.add(sortField);
// Add the uid sort as tie-breaker
- if (sf == SENT_DATE_SORT) {
+ if (sortField == SENT_DATE_SORT) {
fields.add(UID_SORT);
- } else if (sf == SENT_DATE_SORT_REVERSE) {
+ } else if (sortField == SENT_DATE_SORT_REVERSE) {
fields.add(UID_SORT_REVERSE);
}
}
}
// add the uid sorting as last so if no other sorting was able todo the job it will get sorted by the uid
fields.add(UID_SORT);
+ Sort sort = new Sort();
sort.setSort(fields.toArray(new SortField[0]));
return sort;
}
-
+
+ private SortField createSortField(SearchQuery.Sort s, boolean reverse) {
+ switch (s.getSortClause()) {
+ case Arrival:
+ if (reverse) {
+ return ARRIVAL_MAILBOX_SORT_REVERSE;
+ } else {
+ return ARRIVAL_MAILBOX_SORT;
+ }
+ case SentDate:
+ if (reverse) {
+ return SENT_DATE_SORT_REVERSE;
+ } else {
+ return SENT_DATE_SORT;
+ }
+ case MailboxCc:
+ if (reverse) {
+ return FIRST_CC_MAILBOX_SORT_REVERSE;
+ } else {
+ return FIRST_CC_MAILBOX_SORT;
+ }
+ case MailboxFrom:
+ if (reverse) {
+ return FIRST_FROM_MAILBOX_SORT_REVERSE;
+ } else {
+ return FIRST_FROM_MAILBOX_SORT;
+ }
+ case Size:
+ if (reverse) {
+ return SIZE_SORT_REVERSE;
+ } else {
+ return SIZE_SORT;
+ }
+ case BaseSubject:
+ if (reverse) {
+ return BASE_SUBJECT_SORT_REVERSE;
+ } else {
+ return BASE_SUBJECT_SORT;
+ }
+ case MailboxTo:
+ if (reverse) {
+ return FIRST_TO_MAILBOX_SORT_REVERSE;
+ } else {
+ return FIRST_TO_MAILBOX_SORT;
+ }
+ case Uid:
+ if (reverse) {
+ return UID_SORT_REVERSE;
+ } else {
+ return UID_SORT;
+ }
+ case DisplayFrom:
+ if (reverse) {
+ return FIRST_FROM_MAILBOX_DISPLAY_SORT_REVERSE;
+ } else {
+ return FIRST_FROM_MAILBOX_DISPLAY_SORT;
+ }
+ case DisplayTo:
+ if (reverse) {
+ return FIRST_TO_MAILBOX_DISPLAY_SORT_REVERSE;
+ } else {
+ return FIRST_TO_MAILBOX_DISPLAY_SORT;
+ }
+ default:
+ return null;
+ }
+ }
+
/**
* Convert the given {@link Flag} to a String
*
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org