From 30b86a0cde6af06fae380e5036bd7b9d647e800c Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 2 Jan 2016 18:09:17 +1300 Subject: [PATCH] Trying to put category number check in onResponse() --- .../free/nrw/commons/upload/MwVolleyApi.java | 34 +++++++++++-------- .../nrw/commons/upload/ShareActivity.java | 2 +- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java b/commons/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java index c9c78d64c..5bdceb148 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java @@ -29,13 +29,15 @@ public class MwVolleyApi { private static RequestQueue REQUEST_QUEUE; private static final Gson GSON = new GsonBuilder().create(); private Context context; + private String coords; protected static Set categorySet; private static final String MWURL = "https://commons.wikimedia.org/"; - public MwVolleyApi(Context context) { + public MwVolleyApi(Context context, String coords) { this.context = context; + this.coords = coords; categorySet = new HashSet(); } @@ -44,7 +46,7 @@ public class MwVolleyApi { * Example URL: https://commons.wikimedia.org/w/api.php?action=query&prop=categories|coordinates|pageprops&format=json&clshow=!hidden&coprop=type|name|dim|country|region|globe&codistancefrompoint=38.11386944444445|13.356263888888888& * generator=geosearch&redirects=&ggscoord=38.11386944444445|13.356263888888888&ggsradius=100&ggslimit=10&ggsnamespace=6&ggsprop=type|name|dim|country|region|globe&ggsprimary=all&formatversion=2 */ - private String buildUrl (String coords, int ggsradius){ + private static String buildUrl (int ggsradius){ Uri.Builder builder = Uri.parse(MWURL).buildUpon(); @@ -85,22 +87,13 @@ public class MwVolleyApi { return REQUEST_QUEUE; } - public void request(String coords) { + public void request() { //If <10 categories found, repeat API call with incremented radius - for (int radius=100; radius<=10000; radius=radius*10) { - String apiUrl = buildUrl(coords, radius); - Log.d("Repeat", "URL: " + apiUrl); + JsonRequest request = new QueryRequest(apiUrl, new LogResponseListener(), new LogResponseErrorListener()); + getQueue().add(request); - JsonRequest request = new QueryRequest(apiUrl, - new LogResponseListener(), new LogResponseErrorListener()); - getQueue().add(request); - Log.d("Repeat", "Repeating API call with radius " + Integer.toString(radius)); - if (categorySet.size()>=10) { - break; - } - } } private static class LogResponseListener implements Response.Listener { @@ -110,6 +103,19 @@ public class MwVolleyApi { public void onResponse(T response) { Log.d(TAG, response.toString()); Log.d("Repeat", "categorySet contains: " + categorySet.toString()); + + for (int radius=100; radius<=10000; radius=radius*10) { + String apiUrl = buildUrl(radius); + Log.d("Repeat", "URL: " + apiUrl); + Log.d("Repeat", "Repeating API call with radius " + Integer.toString(radius)); + //request(); + + JsonRequest request = new QueryRequest(apiUrl, new LogResponseListener(), new LogResponseErrorListener()); + getQueue().add(request); + + if (categorySet.size()>=10) { + break; + } } } diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java index 369d9b990..52218c577 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/ShareActivity.java @@ -187,7 +187,7 @@ public class ShareActivity if (coords != null) { Log.d("Image", "Coords of image: " + coords); - MwVolleyApi apiCall = new MwVolleyApi(this); + MwVolleyApi apiCall = new MwVolleyApi(this, coords); //asynchronous calls to MediaWiki Commons API to match image coords with nearby Commons categories apiCall.request(coords);