Update searchMessages API
Change-Id: I90df578a31dfd5df2474dc823a185b45c98f5ef9
diff --git a/src/com/android/exchange/EasSyncService.java b/src/com/android/exchange/EasSyncService.java
index 2bfd45a..78bd632 100644
--- a/src/com/android/exchange/EasSyncService.java
+++ b/src/com/android/exchange/EasSyncService.java
@@ -33,6 +33,7 @@
import com.android.emailcommon.service.EmailServiceConstants;
import com.android.emailcommon.service.EmailServiceProxy;
import com.android.emailcommon.service.EmailServiceStatus;
+import com.android.emailcommon.service.SearchParams;
import com.android.emailcommon.utility.Utility;
import com.android.exchange.CommandStatusException.CommandStatus;
import com.android.exchange.adapter.AbstractSyncAdapter;
@@ -524,13 +525,15 @@
}
}
- public static int searchMessages(Context context, long accountId, long mailboxId,
- boolean includeSubfolders, String query, int numResults, int firstResult,
+ public static int searchMessages(Context context, long accountId, SearchParams searchParams,
long destMailboxId) {
// Sanity check for arguments
- if (numResults < 0 || numResults > MAX_SEARCH_RESULTS || firstResult < 0) return 0;
+ int offset = searchParams.mOffset;
+ int limit = searchParams.mLimit;
+ String filter = searchParams.mFilter;
+ if (limit < 0 || limit > MAX_SEARCH_RESULTS || offset < 0) return 0;
// TODO Should this be checked in UI? Are there guidelines for minimums?
- if (query == null || query.length() < MIN_QUERY_LENGTH) return 0;
+ if (filter == null || filter.length() < MIN_QUERY_LENGTH) return 0;
int res = 0;
Account account = Account.restoreAccountWithId(context, accountId);
@@ -548,17 +551,17 @@
s.data(Tags.SEARCH_NAME, "Mailbox");
s.start(Tags.SEARCH_QUERY).start(Tags.SEARCH_AND);
s.data(Tags.SYNC_CLASS, "Email");
- s.data(Tags.SEARCH_FREE_TEXT, query);
+ s.data(Tags.SEARCH_FREE_TEXT, filter);
s.end().end(); // SEARCH_AND, SEARCH_QUERY
s.start(Tags.SEARCH_OPTIONS);
- if (firstResult == 0) {
+ if (offset == 0) {
s.tag(Tags.SEARCH_REBUILD_RESULTS);
}
- if (includeSubfolders) {
+ if (searchParams.mIncludeChildren) {
s.tag(Tags.SEARCH_DEEP_TRAVERSAL);
}
// Range is sent in the form first-last (e.g. 0-9)
- s.data(Tags.SEARCH_RANGE, firstResult + "-" + (firstResult + numResults - 1));
+ s.data(Tags.SEARCH_RANGE, offset + "-" + (offset + limit - 1));
s.start(Tags.BASE_BODY_PREFERENCE);
s.data(Tags.BASE_TYPE, Eas.BODY_PREFERENCE_HTML);
s.data(Tags.BASE_TRUNCATION_SIZE, "20000");
@@ -570,7 +573,7 @@
if (code == HttpStatus.SC_OK) {
InputStream is = resp.getInputStream();
try {
- new SearchParser(is, svc, query).parse();
+ new SearchParser(is, svc, filter).parse();
} finally {
is.close();
}
diff --git a/src/com/android/exchange/ExchangeService.java b/src/com/android/exchange/ExchangeService.java
index f6c1c0b..f79188e 100644
--- a/src/com/android/exchange/ExchangeService.java
+++ b/src/com/android/exchange/ExchangeService.java
@@ -35,6 +35,7 @@
import com.android.emailcommon.service.IEmailService;
import com.android.emailcommon.service.IEmailServiceCallback;
import com.android.emailcommon.service.PolicyServiceProxy;
+import com.android.emailcommon.service.SearchParams;
import com.android.emailcommon.utility.AccountReconciler;
import com.android.emailcommon.utility.EmailAsyncTask;
import com.android.emailcommon.utility.SSLSocketFactory;
@@ -489,12 +490,11 @@
ExchangeService.deleteAccountPIMData(accountId);
}
- public int searchMessages(long accountId, long mailboxId, boolean includeSubfolders,
- String query, int numResults, int firstResult, long destMailboxId) {
+ public int searchMessages(long accountId, SearchParams searchParams, long destMailboxId) {
ExchangeService exchangeService = INSTANCE;
if (exchangeService == null) return 0;
- return EasSyncService.searchMessages(exchangeService, accountId, mailboxId,
- includeSubfolders, query, numResults, firstResult, destMailboxId);
+ return EasSyncService.searchMessages(exchangeService, accountId, searchParams,
+ destMailboxId);
}
};