[MediaWiki-commits] [Gerrit] Use new continuation API for full text search - change (apps...wikipedia)

2014-11-18 Thread Dbrant (Code Review)
Dbrant has submitted this change and it was merged.

Change subject: Use new continuation API for full text search
..


Use new continuation API for full text search

Mainly to future-proof, and to avoid the API sending us this
warning for every query we make:
  Formatting of continuation data will be changing soon.
  To continue using the current formatting, use the 'rawcontinue' parameter.
  To begin using the new format, pass an
  empty string for 'continue' in the initial query.

I found some hints for the new continuation API here:
http://www.mediawiki.org/wiki/API%3aQuery#Continuing_queries
Still, the documentation could have been better there if it had use actual
HTTP requests as examples.

Change-Id: I705f4db4855db4de4d062aa2ac808fcfe0cecb99
---
M wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
M wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
2 files changed, 46 insertions(+), 21 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved



diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java 
b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
index 28ffe7a..08d5bda 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
@@ -24,9 +24,9 @@
 
 private final Site site;
 private final String searchTerm;
-private final int continueOffset;
+private final ContinueOffset continueOffset;
 
-public FullSearchArticlesTask(Api api, Site site, String searchTerm, int 
continueOffset) {
+public FullSearchArticlesTask(Api api, Site site, String searchTerm, 
ContinueOffset continueOffset) {
 super(LOW_CONCURRENCY, api);
 this.site = site;
 this.searchTerm = searchTerm;
@@ -35,8 +35,7 @@
 
 @Override
 public RequestBuilder buildRequest(Api api) {
-final String offset = Integer.toString(continueOffset);
-return api.action(query)
+final RequestBuilder req = api.action(query)
 .param(prop, pageprops|pageimages)
 .param(ppprop, wikibase_item) // only interested in 
wikibase_item
 .param(generator, search)
@@ -45,7 +44,6 @@
 .param(gsrwhat, text)
 .param(gsrinfo, )
 .param(gsrprop, redirecttitle)
-.param(gsroffset, offset)
 .param(gsrlimit, NUM_RESULTS_PER_QUERY)
 .param(list, search) // for correct order
 .param(srsearch, searchTerm)
@@ -53,11 +51,22 @@
 .param(srwhat, text)
 .param(srinfo, suggestion)
 .param(srprop, )
-.param(sroffset, offset)
 .param(srlimit, NUM_RESULTS_PER_QUERY)
 .param(piprop, thumbnail) // for thumbnail URLs
 .param(pithumbsize, 
Integer.toString(WikipediaApp.PREFERRED_THUMB_SIZE))
 .param(pilimit, NUM_RESULTS_PER_QUERY);
+if (continueOffset != null) {
+req.param(continue, continueOffset.cont);
+if (continueOffset.sroffset  0) {
+req.param(sroffset, 
Integer.toString(continueOffset.sroffset));
+}
+if (continueOffset.gsroffset  0) {
+req.param(gsroffset, 
Integer.toString(continueOffset.gsroffset));
+}
+} else {
+req.param(continue, ); // add empty continue to avoid the API 
warning
+}
+return req;
 }
 
 @Override
@@ -74,9 +83,13 @@
 }
 }
 
-int newOffset = 0;
-if (data.has(query-continue)) {
-newOffset = 
data.getJSONObject(query-continue).getJSONObject(search).getInt(gsroffset);
+ContinueOffset nextContinueOffset = null;
+final JSONObject continueData = data.optJSONObject(continue);
+if (continueData != null) {
+String continueString = continueData.optString(continue, null);
+Integer sroffset = continueData.optInt(sroffset);
+Integer gsroffset = continueData.optInt(gsroffset);
+nextContinueOffset = new ContinueOffset(continueString, sroffset, 
gsroffset);
 }
 
 JSONObject queryResult = data.optJSONObject(query);
@@ -134,20 +147,20 @@
 
resultList.add(map.get(search.getJSONObject(i).getString(title)));
 }
 
-return new FullSearchResults(resultList, newOffset, suggestion);
+return new FullSearchResults(resultList, nextContinueOffset, 
suggestion);
 }
 
 private FullSearchResults emptyResults() {
-return new 
FullSearchResults(Collections.FullSearchResultemptyList(), 0, );
+return new 
FullSearchResults(Collections.FullSearchResultemptyList(), null, );
 }
 
 public class FullSearchResults {
-private int 

[MediaWiki-commits] [Gerrit] Use new continuation API for full text search - change (apps...wikipedia)

2014-11-17 Thread BearND (Code Review)
BearND has uploaded a new change for review.

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

Change subject: Use new continuation API for full text search
..

Use new continuation API for full text search

Mainly to future-proof, and to avoid the API sending us this
warning for every query we make:
  Formatting of continuation data will be changing soon.
  To continue using the current formatting, use the 'rawcontinue' parameter.
  To begin using the new format, pass an
  empty string for 'continue' in the initial query.

I found some hints for the new continuation API here:
http://www.mediawiki.org/wiki/API%3aQuery#Continuing_queries
Still, the documentation could have been better there if it had use actual
HTTP requests as examples.

Change-Id: I705f4db4855db4de4d062aa2ac808fcfe0cecb99
---
M wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
M wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
2 files changed, 46 insertions(+), 21 deletions(-)


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

diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java 
b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
index 28ffe7a..1aac1d3 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchArticlesTask.java
@@ -24,9 +24,9 @@
 
 private final Site site;
 private final String searchTerm;
-private final int continueOffset;
+private final ContinueOffset continueOffset;
 
-public FullSearchArticlesTask(Api api, Site site, String searchTerm, int 
continueOffset) {
+public FullSearchArticlesTask(Api api, Site site, String searchTerm, 
ContinueOffset continueOffset) {
 super(LOW_CONCURRENCY, api);
 this.site = site;
 this.searchTerm = searchTerm;
@@ -35,8 +35,7 @@
 
 @Override
 public RequestBuilder buildRequest(Api api) {
-final String offset = Integer.toString(continueOffset);
-return api.action(query)
+final RequestBuilder req = api.action(query)
 .param(prop, pageprops|pageimages)
 .param(ppprop, wikibase_item) // only interested in 
wikibase_item
 .param(generator, search)
@@ -45,7 +44,6 @@
 .param(gsrwhat, text)
 .param(gsrinfo, )
 .param(gsrprop, redirecttitle)
-.param(gsroffset, offset)
 .param(gsrlimit, NUM_RESULTS_PER_QUERY)
 .param(list, search) // for correct order
 .param(srsearch, searchTerm)
@@ -53,11 +51,22 @@
 .param(srwhat, text)
 .param(srinfo, suggestion)
 .param(srprop, )
-.param(sroffset, offset)
 .param(srlimit, NUM_RESULTS_PER_QUERY)
 .param(piprop, thumbnail) // for thumbnail URLs
 .param(pithumbsize, 
Integer.toString(WikipediaApp.PREFERRED_THUMB_SIZE))
 .param(pilimit, NUM_RESULTS_PER_QUERY);
+if (continueOffset != null) {
+req.param(continue, continueOffset.cont);
+if (continueOffset.gsroffset  0) {
+req.param(sroffset, 
Integer.toString(continueOffset.sroffset));
+}
+if (continueOffset.gsroffset  0) {
+req.param(gsroffset, 
Integer.toString(continueOffset.gsroffset));
+}
+} else {
+req.param(continue, ); // add empty continue to avoid the API 
warning
+}
+return req;
 }
 
 @Override
@@ -74,9 +83,13 @@
 }
 }
 
-int newOffset = 0;
-if (data.has(query-continue)) {
-newOffset = 
data.getJSONObject(query-continue).getJSONObject(search).getInt(gsroffset);
+ContinueOffset nextContinueOffset = null;
+final JSONObject continueData = data.optJSONObject(continue);
+if (continueData != null) {
+String continueString = continueData.optString(continue, null);
+Integer sroffset = continueData.optInt(sroffset);
+Integer gsroffset = continueData.optInt(gsroffset);
+nextContinueOffset = new ContinueOffset(continueString, sroffset, 
gsroffset);
 }
 
 JSONObject queryResult = data.optJSONObject(query);
@@ -134,20 +147,20 @@
 
resultList.add(map.get(search.getJSONObject(i).getString(title)));
 }
 
-return new FullSearchResults(resultList, newOffset, suggestion);
+return new FullSearchResults(resultList, nextContinueOffset, 
suggestion);
 }
 
 private FullSearchResults emptyResults() {
-return new 
FullSearchResults(Collections.FullSearchResultemptyList(), 0, );
+return new 
FullSearchResults(Collections.FullSearchResultemptyList(),