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 ma...@apache.org on 2016/07/26 10:38:37 UTC
[2/2] james-project git commit: JAMES-1807 add notInMailboxes in
MultimailboxesSearchQuery
JAMES-1807 add notInMailboxes in MultimailboxesSearchQuery
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fd37855c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fd37855c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fd37855c
Branch: refs/heads/master
Commit: fd37855cbe2c64d4488b80e24b2697b72c2304f2
Parents: 9af58b7
Author: Matthieu Baechler <ma...@linagora.com>
Authored: Tue Jul 26 10:15:51 2016 +0200
Committer: Matthieu Baechler <ma...@linagora.com>
Committed: Tue Jul 26 12:37:41 2016 +0200
----------------------------------------------------------------------
.../model/MultimailboxesSearchQuery.java | 31 +++++++++++----
.../model/MultimailboxesSearchQueryTest.java | 42 ++++++++++++++++----
...lasticSearchListeningMessageSearchIndex.java | 2 +-
.../lucene/search/LuceneMessageSearchIndex.java | 2 +-
.../store/search/SimpleMessageSearchIndex.java | 4 +-
5 files changed, 63 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/fd37855c/mailbox/api/src/main/java/org/apache/james/mailbox/model/MultimailboxesSearchQuery.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MultimailboxesSearchQuery.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MultimailboxesSearchQuery.java
index 42e667b..b0b867d 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MultimailboxesSearchQuery.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MultimailboxesSearchQuery.java
@@ -36,11 +36,13 @@ public class MultimailboxesSearchQuery {
private final SearchQuery searchQuery;
private ImmutableSet.Builder<MailboxId> mailboxIds;
+ private ImmutableSet.Builder<MailboxId> notInMailboxIds;
private Builder(SearchQuery searchQuery) {
Preconditions.checkNotNull(searchQuery);
this.searchQuery = searchQuery;
this.mailboxIds = ImmutableSet.builder();
+ this.notInMailboxIds = ImmutableSet.builder();
}
public Builder inMailboxes(Collection<MailboxId> mailboxIds) {
@@ -52,23 +54,38 @@ public class MultimailboxesSearchQuery {
return inMailboxes(Arrays.asList(mailboxIds));
}
- public MultimailboxesSearchQuery build() {
- return new MultimailboxesSearchQuery(searchQuery, mailboxIds.build());
+ public Builder notInMailboxes(Collection<MailboxId> mailboxIds) {
+ this.notInMailboxIds.addAll(mailboxIds);
+ return this;
}
+ public Builder notInMailboxes(MailboxId... mailboxIds) {
+ return notInMailboxes(Arrays.asList(mailboxIds));
+ }
+
+ public MultimailboxesSearchQuery build() {
+ return new MultimailboxesSearchQuery(searchQuery, mailboxIds.build(), notInMailboxIds.build());
+ }
+
}
private final SearchQuery searchQuery;
- private final ImmutableSet<MailboxId> mailboxIds;
+ private final ImmutableSet<MailboxId> inMailboxes;
+ private final ImmutableSet<MailboxId> notInMailboxes;
@VisibleForTesting
- MultimailboxesSearchQuery(SearchQuery searchQuery, ImmutableSet<MailboxId> mailboxIds) {
+ MultimailboxesSearchQuery(SearchQuery searchQuery, ImmutableSet<MailboxId> inMailboxes, ImmutableSet<MailboxId> notInMailboxes) {
this.searchQuery = searchQuery;
- this.mailboxIds = mailboxIds;
+ this.inMailboxes = inMailboxes;
+ this.notInMailboxes = notInMailboxes;
}
- public ImmutableSet<MailboxId> getMailboxIds() {
- return mailboxIds;
+ public ImmutableSet<MailboxId> getInMailboxes() {
+ return inMailboxes;
+ }
+
+ public ImmutableSet<MailboxId> getNotInMailboxes() {
+ return notInMailboxes;
}
public SearchQuery getSearchQuery() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/fd37855c/mailbox/api/src/test/java/org/apache/james/mailbox/model/MultimailboxesSearchQueryTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MultimailboxesSearchQueryTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MultimailboxesSearchQueryTest.java
index 92a77a2..867a70d 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MultimailboxesSearchQueryTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MultimailboxesSearchQueryTest.java
@@ -34,30 +34,58 @@ public class MultimailboxesSearchQueryTest {
}
@Test
- public void buildShouldBuildWhenNoMailboxes() {
- MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, ImmutableSet.<MailboxId>of());
+ public void buildShouldBuildWheninMailboxes() {
+ ImmutableSet<MailboxId> inMailboxes = ImmutableSet.<MailboxId>of();
+ ImmutableSet<MailboxId> notInMailboxes = ImmutableSet.<MailboxId>of();
+ MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, inMailboxes, notInMailboxes);
MultimailboxesSearchQuery actual = MultimailboxesSearchQuery.from(EMPTY_QUERY).build();
assertThat(actual).isEqualToComparingFieldByField(expected);
}
@Test
public void buildShouldBuildWhenEmptyMailboxes() {
- MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, ImmutableSet.<MailboxId>of());
+ ImmutableSet<MailboxId> inMailboxes = ImmutableSet.<MailboxId>of();
+ ImmutableSet<MailboxId> notInMailboxes = ImmutableSet.<MailboxId>of();
+ MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, inMailboxes, notInMailboxes);
MultimailboxesSearchQuery actual = MultimailboxesSearchQuery.from(EMPTY_QUERY).inMailboxes().build();
assertThat(actual).isEqualToComparingFieldByField(expected);
}
@Test
+ public void buildShouldBuildWhenEmptyNotInMailboxes() {
+ ImmutableSet<MailboxId> inMailboxes = ImmutableSet.<MailboxId>of();
+ ImmutableSet<MailboxId> notInMailboxes = ImmutableSet.<MailboxId>of();
+ MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, inMailboxes, notInMailboxes);
+ MultimailboxesSearchQuery actual = MultimailboxesSearchQuery.from(EMPTY_QUERY).notInMailboxes().build();
+ assertThat(actual).isEqualToComparingFieldByField(expected);
+ }
+
+
+ @Test
public void buildShouldBuildWhenOneMailbox() {
- MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, ImmutableSet.<MailboxId>of(TestId.of(("id1"))));
+ ImmutableSet<MailboxId> inMailboxes = ImmutableSet.<MailboxId>of(TestId.of(("id1")));
+ ImmutableSet<MailboxId> notInMailboxes = ImmutableSet.<MailboxId>of();
+ MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, inMailboxes, notInMailboxes);
MultimailboxesSearchQuery actual = MultimailboxesSearchQuery.from(EMPTY_QUERY).inMailboxes(TestId.of("id1")).build();
assertThat(actual).isEqualToComparingFieldByField(expected);
}
@Test
- public void buildShouldBuildWhenTwoMailboxes() {
- MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, ImmutableSet.<MailboxId>of(TestId.of("id1"), TestId.of("id2")));
- MultimailboxesSearchQuery actual = MultimailboxesSearchQuery.from(EMPTY_QUERY).inMailboxes(TestId.of("id1"), TestId.of("id2")).build();
+ public void buildShouldBuildWhenOneNotInMailbox() {
+ ImmutableSet<MailboxId> inMailboxes = ImmutableSet.<MailboxId>of();
+ ImmutableSet<MailboxId> notInMailboxes = ImmutableSet.<MailboxId>of(TestId.of(("id1")));
+ MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, inMailboxes, notInMailboxes);
+ MultimailboxesSearchQuery actual = MultimailboxesSearchQuery.from(EMPTY_QUERY).notInMailboxes(TestId.of("id1")).build();
+ assertThat(actual).isEqualToComparingFieldByField(expected);
+ }
+
+
+ @Test
+ public void buildShouldBuildWhenAllDefined() {
+ ImmutableSet<MailboxId> inMailboxes = ImmutableSet.<MailboxId>of(TestId.of("id1"));
+ ImmutableSet<MailboxId> notInMailboxes = ImmutableSet.<MailboxId>of(TestId.of("id2"));
+ MultimailboxesSearchQuery expected = new MultimailboxesSearchQuery(EMPTY_QUERY, inMailboxes, notInMailboxes);
+ MultimailboxesSearchQuery actual = MultimailboxesSearchQuery.from(EMPTY_QUERY).inMailboxes(TestId.of("id1")).notInMailboxes(TestId.of("id2")).build();
assertThat(actual).isEqualToComparingFieldByField(expected);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/fd37855c/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
index 47823db..63f0fec 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
@@ -93,7 +93,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
public Map<MailboxId, Collection<Long>> search(MailboxSession session, MultimailboxesSearchQuery searchQuery)
throws MailboxException {
Preconditions.checkArgument(session != null, "'session' is mandatory");
- return searcher.search(ImmutableList.of(session.getUser()), searchQuery.getMailboxIds(), searchQuery.getSearchQuery()).asMap();
+ return searcher.search(ImmutableList.of(session.getUser()), searchQuery.getInMailboxes(), searchQuery.getSearchQuery()).asMap();
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/fd37855c/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 bc48605..c87e8c2 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
@@ -451,7 +451,7 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
Multimap<MailboxId, Long> results = LinkedHashMultimap.create();
IndexSearcher searcher = null;
- Query inMailboxes = buildQueryFromMailboxes(searchQuery.getMailboxIds());
+ Query inMailboxes = buildQueryFromMailboxes(searchQuery.getInMailboxes());
try {
searcher = new IndexSearcher(IndexReader.open(writer, true));
http://git-wip-us.apache.org/repos/asf/james-project/blob/fd37855c/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
index db16fd7..667f2ab 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
@@ -157,13 +157,13 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex {
public Map<MailboxId, Collection<Long>> search(MailboxSession session, MultimailboxesSearchQuery searchQuery) throws MailboxException {
List<Mailbox> allUserMailboxes = mailboxMapperFactory.getMailboxMapper(session)
.findMailboxWithPathLike(new MailboxPath(session.getPersonalSpace(), session.getUser().getUserName(), WILDCARD));
- if (searchQuery.getMailboxIds().isEmpty()) {
+ if (searchQuery.getInMailboxes().isEmpty()) {
return searchMultimap(session, allUserMailboxes, searchQuery.getSearchQuery())
.asMap();
}
List<Mailbox> queriedMailboxes = new ArrayList<Mailbox>();
for (Mailbox mailbox: allUserMailboxes) {
- if (searchQuery.getMailboxIds().contains(mailbox.getMailboxId())) {
+ if (searchQuery.getInMailboxes().contains(mailbox.getMailboxId())) {
queriedMailboxes.add(mailbox);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org