BearND has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/174293

Change subject: Allow caller to specify maxResults in FullSearchTask
......................................................................

Allow caller to specify maxResults in FullSearchTask

Also fix the related tests.

Change-Id: Ic887b9acd041284c80c279f5cb5c7a05f11f3024
---
M wikipedia-it/src/main/java/org/wikipedia/test/FullSearchTaskTests.java
M wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
M wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
3 files changed, 20 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/93/174293/1

diff --git 
a/wikipedia-it/src/main/java/org/wikipedia/test/FullSearchTaskTests.java 
b/wikipedia-it/src/main/java/org/wikipedia/test/FullSearchTaskTests.java
index 5b7e999..f3322d1 100644
--- a/wikipedia-it/src/main/java/org/wikipedia/test/FullSearchTaskTests.java
+++ b/wikipedia-it/src/main/java/org/wikipedia/test/FullSearchTaskTests.java
@@ -14,7 +14,7 @@
  */
 public class FullSearchTaskTests extends 
ActivityUnitTestCase<TestDummyActivity> {
     private static final int TASK_COMPLETION_TIMEOUT = 20000;
-    private static final int NUM_RESULTS_REQUESTED = 12;
+    private static final int BATCH_SIZE = 12;
     private static final Site SITE = new Site("test.wikipedia.org");
 
     public FullSearchTaskTests() {
@@ -28,13 +28,13 @@
             @Override
             public void run() {
                 final WikipediaApp app = (WikipediaApp) 
getInstrumentation().getTargetContext().getApplicationContext();
-                new FullSearchArticlesTask(app.getAPIForSite(SITE), SITE, 
"test", 0) {
+                new FullSearchArticlesTask(app.getAPIForSite(SITE), SITE, 
"test", BATCH_SIZE, null) {
                     @Override
                     public void onFinish(FullSearchResults results) {
                         assertNotNull(results);
-                        assertEquals(results.getResults().size(), 
NUM_RESULTS_REQUESTED);
+                        assertEquals(results.getResults().size(), BATCH_SIZE);
                         assertEquals(results.getSuggestion(), "");
-                        assertEquals(results.getContinueOffset(), 
NUM_RESULTS_REQUESTED);
+                        assertNotNull(results.getContinueOffset());
 
                         for (FullSearchResult result : results.getResults()) {
                             if 
(result.getTitle().getPrefixedText().equals("Test")) {
@@ -56,7 +56,7 @@
             @Override
             public void run() {
                 final WikipediaApp app = (WikipediaApp) 
getInstrumentation().getTargetContext().getApplicationContext();
-                new FullSearchArticlesTask(app.getAPIForSite(SITE), SITE, 
"teest", 0) { // small typo should produce a suggestion
+                new FullSearchArticlesTask(app.getAPIForSite(SITE), SITE, 
"teest", BATCH_SIZE, null) { // small typo should produce a suggestion
                     @Override
                     public void onFinish(FullSearchResults results) {
                         assertNotNull(results);
@@ -76,13 +76,13 @@
             @Override
             public void run() {
                 final WikipediaApp app = (WikipediaApp) 
getInstrumentation().getTargetContext().getApplicationContext();
-                new FullSearchArticlesTask(app.getAPIForSite(SITE), SITE, 
"jkfsdfpefdsfwoirpoik", 0) { // toal gibberish, should not exist on testwiki
+                new FullSearchArticlesTask(app.getAPIForSite(SITE), SITE, 
"jkfsdfpefdsfwoirpoik", BATCH_SIZE, null) { // total gibberish, should not 
exist on testwiki
                     @Override
                     public void onFinish(FullSearchResults results) {
                         assertNotNull(results);
                         assertEquals(results.getResults().size(), 0);
                         assertEquals(results.getSuggestion(), "");
-                        assertEquals(results.getContinueOffset(), 0);
+                        assertNull(results.getContinueOffset());
                         completionLatch.countDown();
                     }
                 }.execute();
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java 
b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
index 08d5bda..17c4d4c 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
@@ -19,22 +19,22 @@
 import java.util.Map;
 
 public class FullSearchArticlesTask extends 
ApiTask<FullSearchArticlesTask.FullSearchResults> {
-    private static final int MAX_RESULTS = 12;
-    private static final String NUM_RESULTS_PER_QUERY = 
Integer.toString(MAX_RESULTS);
-
     private final Site site;
     private final String searchTerm;
+    private final int maxResults;
     private final ContinueOffset continueOffset;
 
-    public FullSearchArticlesTask(Api api, Site site, String searchTerm, 
ContinueOffset continueOffset) {
+    public FullSearchArticlesTask(Api api, Site site, String searchTerm, int 
maxResults, ContinueOffset continueOffset) {
         super(LOW_CONCURRENCY, api);
         this.site = site;
         this.searchTerm = searchTerm;
+        this.maxResults = maxResults;
         this.continueOffset = continueOffset;
     }
 
     @Override
     public RequestBuilder buildRequest(Api api) {
+        final String maxResultsString = Integer.toString(maxResults);
         final RequestBuilder req = api.action("query")
                 .param("prop", "pageprops|pageimages")
                 .param("ppprop", "wikibase_item") // only interested in 
wikibase_item
@@ -44,17 +44,17 @@
                 .param("gsrwhat", "text")
                 .param("gsrinfo", "")
                 .param("gsrprop", "redirecttitle")
-                .param("gsrlimit", NUM_RESULTS_PER_QUERY)
+                .param("gsrlimit", maxResultsString)
                 .param("list", "search") // for correct order
                 .param("srsearch", searchTerm)
                 .param("srnamespace", "0")
                 .param("srwhat", "text")
                 .param("srinfo", "suggestion")
                 .param("srprop", "")
-                .param("srlimit", NUM_RESULTS_PER_QUERY)
+                .param("srlimit", maxResultsString)
                 .param("piprop", "thumbnail") // for thumbnail URLs
                 .param("pithumbsize", 
Integer.toString(WikipediaApp.PREFERRED_THUMB_SIZE))
-                .param("pilimit", NUM_RESULTS_PER_QUERY);
+                .param("pilimit", maxResultsString);
         if (continueOffset != null) {
             req.param("continue", continueOffset.cont);
             if (continueOffset.sroffset > 0) {
@@ -119,7 +119,7 @@
         */
 
         // build a map of full result objects
-        Map<String, FullSearchResult> map = new HashMap<String, 
FullSearchResult>(MAX_RESULTS + 1, 1.0f);
+        Map<String, FullSearchResult> map = new HashMap<String, 
FullSearchResult>(maxResults + 1, 1.0f);
         Iterator<String> keys = pages.keys();
         while (keys.hasNext()) {
             String key = keys.next();
@@ -180,12 +180,12 @@
         }
     }
 
-    class ContinueOffset {
+    public class ContinueOffset {
         private String cont;
         private int sroffset;
         private int gsroffset;
 
-        ContinueOffset(String cont, int sroffset, int gsroffset) {
+        private ContinueOffset(String cont, int sroffset, int gsroffset) {
             this.cont = cont;
             this.sroffset = sroffset;
             this.gsroffset = gsroffset;
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java 
b/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
index 1a38c9c..9730129 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
@@ -27,6 +27,7 @@
 import java.util.Map;
 
 public class FullSearchFragment extends Fragment {
+    private static final int BATCH_SIZE = 12;
     private static final int DELAY_MILLIS = 1000;
     private static final int MESSAGE_SEARCH = 1;
 
@@ -158,8 +159,8 @@
         }
     }
 
-    private void doSearch(final String searchTerm, final 
FullSearchArticlesTask.ContinueOffset continueOffset) {
-        (new FullSearchArticlesTask(app.getAPIForSite(app.getPrimarySite()), 
app.getPrimarySite(), searchTerm, continueOffset) {
+    private void doSearch(final String searchTerm, final 
FullSearchArticlesTask.ContinueOffset continueOffset) {        final int 
maxResults = 12;
+        (new FullSearchArticlesTask(app.getAPIForSite(app.getPrimarySite()), 
app.getPrimarySite(), searchTerm, BATCH_SIZE, continueOffset) {
             @Override
             public void onFinish(FullSearchResults results) {
                 if (!isAdded()) {

-- 
To view, visit https://gerrit.wikimedia.org/r/174293
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic887b9acd041284c80c279f5cb5c7a05f11f3024
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <bsitzm...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to