From 54dedf2cfd3bba50cc8ca236629eeae243474366 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 23 Dec 2015 19:58:07 +1300 Subject: [PATCH 01/34] Added synchronized to getQueue() --- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 b835ce1ee..b0a82cd2e 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 @@ -34,7 +34,7 @@ public class MwVolleyApi { getQueue().add(request); } - private RequestQueue getQueue() { + private synchronized RequestQueue getQueue() { return getQueue(context); } From b7ebd202f326e5a3abb3cdc85fb0811c39e934c5 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 23 Dec 2015 20:34:24 +1300 Subject: [PATCH 02/34] Minor fixes --- .../java/fr/free/nrw/commons/upload/MwVolleyApi.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 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 b0a82cd2e..3e1c363ac 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 @@ -130,16 +130,15 @@ public class MwVolleyApi { public String toString() { StringBuilder builder = new StringBuilder("PAGEID=" + pageid + " ns=" + ns + " title=" + title + "\n" + " CATEGORIES= "); - if (categories != null) { + + if (categories == null || categories.length == 0) { + builder.append("no categories exist\n"); + } else { for (Category category : categories) { builder.append(category.toString()); builder.append("\n"); } } - else { - builder.append("no categories exist"); - builder.append("\n"); - } builder.replace(builder.length() - 1, builder.length(), ""); return builder.toString(); From 77b8ab0c4c2cd37343fe6b6bb708f31e24e65468 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 23 Dec 2015 20:57:36 +1300 Subject: [PATCH 03/34] Minor changes As per @Niedzielski's feedback --- .../free/nrw/commons/upload/MwVolleyApi.java | 33 ++++++++++++++++ .../nrw/commons/upload/ShareActivity.java | 38 ++----------------- 2 files changed, 36 insertions(+), 35 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 3e1c363ac..59d3bb153 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 @@ -1,6 +1,7 @@ package fr.free.nrw.commons.upload; import android.content.Context; +import android.net.Uri; import android.util.Log; import com.android.volley.Cache; @@ -28,7 +29,39 @@ public class MwVolleyApi { public MwVolleyApi(Context context) { this.context = context; } + + /** + * Builds URL with image coords for MediaWiki API calls + * 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 + */ + public String buildUrl (String coords){ + + Uri.Builder builder = Uri.parse("https://commons.wikimedia.org/").buildUpon(); + + builder.appendPath("w") + .appendPath("api.php") + .appendQueryParameter("action", "query") + .appendQueryParameter("prop", "categories|coordinates|pageprops") + .appendQueryParameter("format", "json") + .appendQueryParameter("clshow", "!hidden") + .appendQueryParameter("coprop", "type|name|dim|country|region|globe") + .appendQueryParameter("codistancefrompoint", coords) + .appendQueryParameter("generator", "geosearch") + .appendQueryParameter("ggscoord", coords) + .appendQueryParameter("ggsradius", "100") + .appendQueryParameter("ggslimit", "10") + .appendQueryParameter("ggsnamespace", "6") + .appendQueryParameter("ggsprop", "type|name|dim|country|region|globe") + .appendQueryParameter("ggsprimary", "all") + .appendQueryParameter("formatversion", "2"); + + return builder.toString(); + } + + public void request(String apiUrl) { + JsonRequest request = new QueryRequest(apiUrl, new LogResponseListener(), new LogResponseErrorListener()); getQueue().add(request); 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 0ead49cb5..f51c4703c 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 @@ -184,16 +184,15 @@ public class ShareActivity String coords = imageObj.getCoords(); Log.d("Image", "Coords of image: " + coords); + MwVolleyApi apiCall = new MwVolleyApi(this); + //build URL with image coords for MediaWiki API calls - String apiUrl = UrlBuilder.buildUrl(coords); + String apiUrl = apiCall.buildUrl(coords); Log.d("Image", "URL: " + apiUrl); - //asynchronous calls to MediaWiki Commons API to match image coords with nearby Commons categories - MwVolleyApi apiCall = new MwVolleyApi(this); apiCall.request(apiUrl); - ImageLoader.getInstance().displayImage(mediaUriString, backgroundImageView); if(savedInstanceState != null) { @@ -220,35 +219,4 @@ public class ShareActivity return super.onOptionsItemSelected(item); } - /** - * Builds URL with image coords for MediaWiki API calls - * 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 - */ - public static class UrlBuilder { - private static String buildUrl (String coords){ - - Uri.Builder builder = Uri.parse("https://commons.wikimedia.org/").buildUpon(); - - builder.appendPath("w") - .appendPath("api.php") - .appendQueryParameter("action", "query") - .appendQueryParameter("prop", "categories|coordinates|pageprops") - .appendQueryParameter("format", "json") - .appendQueryParameter("clshow", "!hidden") - .appendQueryParameter("coprop", "type|name|dim|country|region|globe") - .appendQueryParameter("codistancefrompoint", coords) - .appendQueryParameter("generator", "geosearch") - .appendQueryParameter("ggscoord", coords) - .appendQueryParameter("ggsradius", "100") - .appendQueryParameter("ggslimit", "10") - .appendQueryParameter("ggsnamespace", "6") - .appendQueryParameter("ggsprop", "type|name|dim|country|region|globe") - .appendQueryParameter("ggsprimary", "all") - .appendQueryParameter("formatversion", "2"); - - return builder.toString(); - } - } - } From 4a400df5dd462dd00188d288ab41d4d2bba3c7c9 Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 23 Dec 2015 22:15:50 +1300 Subject: [PATCH 04/34] Fixes crashes Implements null checking to prevent app from crashing when URI is invalid or when picture has no GPS information --- .../nrw/commons/upload/FilePathConverter.java | 39 ++++++++++++------- .../free/nrw/commons/upload/GPSExtractor.java | 16 ++++++-- .../nrw/commons/upload/ShareActivity.java | 24 +++++++----- 3 files changed, 50 insertions(+), 29 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java b/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java index f8fff7a8a..8d1711f47 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java @@ -23,27 +23,36 @@ public class FilePathConverter { * May return null */ public String getFilePath(){ + String filePath =""; - // Will return "image:x*" - String wholeID = DocumentsContract.getDocumentId(uri); - // Split at colon, use second item in the array - String id = wholeID.split(":")[1]; - String[] column = { MediaStore.Images.Media.DATA }; + try { + // Will return "image:x*" + String wholeID = DocumentsContract.getDocumentId(uri); - // where id is equal to - String sel = MediaStore.Images.Media._ID + "=?"; - Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, - column, sel, new String[]{id}, null); + // Split at colon, use second item in the array + String id = wholeID.split(":")[1]; + String[] column = {MediaStore.Images.Media.DATA}; - int columnIndex = cursor.getColumnIndex(column[0]); + // where id is equal to + String sel = MediaStore.Images.Media._ID + "=?"; + Cursor cursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, + column, sel, new String[]{id}, null); - if (cursor.moveToFirst()) { - filePath = cursor.getString(columnIndex); + int columnIndex = cursor.getColumnIndex(column[0]); + + if (cursor.moveToFirst()) { + filePath = cursor.getString(columnIndex); + } + cursor.close(); + + Log.d("Image", "File path: " + filePath); + return filePath; } - cursor.close(); - Log.d("Image", "File path: " + filePath); - return filePath; + catch (IllegalArgumentException e) { + Log.w("Image", e); + return null; + } } } diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java index d8c6b62e7..a72ae4f4e 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java @@ -26,6 +26,17 @@ public class GPSExtractor { try { exif = new ExifInterface(filePath); + + } catch (IOException e) { + Log.w("Image", e); + return null; + } + + if (exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE) == null) { + Log.w("Image", "Picture has no GPS info"); + return null; + } + else { latitude = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE); latitude_ref = exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF); longitude = exif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); @@ -35,11 +46,8 @@ public class GPSExtractor { Log.d("Image", "Longitude: " + longitude + " " + longitude_ref); decimalCoords = getDecimalCoords(latitude, latitude_ref, longitude, longitude_ref); - - } catch (IOException e) { - Log.w("Image", e); + return decimalCoords; } - return decimalCoords; } //Converts format of coords into decimal coords as required by API for next step 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 f51c4703c..8186481c2 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 @@ -179,19 +179,23 @@ public class ShareActivity FilePathConverter uriObj = new FilePathConverter(this, mediaUri); String filePath = uriObj.getFilePath(); - //extract the coordinates of image in decimal degrees - GPSExtractor imageObj = new GPSExtractor(filePath); - String coords = imageObj.getCoords(); - Log.d("Image", "Coords of image: " + coords); + if (filePath != null) { + //extract the coordinates of image in decimal degrees + GPSExtractor imageObj = new GPSExtractor(filePath); + String coords = imageObj.getCoords(); - MwVolleyApi apiCall = new MwVolleyApi(this); + if (coords != null) { + Log.d("Image", "Coords of image: " + coords); + MwVolleyApi apiCall = new MwVolleyApi(this); - //build URL with image coords for MediaWiki API calls - String apiUrl = apiCall.buildUrl(coords); - Log.d("Image", "URL: " + apiUrl); + //build URL with image coords for MediaWiki API calls + String apiUrl = apiCall.buildUrl(coords); + Log.d("Image", "URL: " + apiUrl); - //asynchronous calls to MediaWiki Commons API to match image coords with nearby Commons categories - apiCall.request(apiUrl); + //asynchronous calls to MediaWiki Commons API to match image coords with nearby Commons categories + apiCall.request(apiUrl); + } + } ImageLoader.getInstance().displayImage(mediaUriString, backgroundImageView); From 38cf720b4b19f71f28cfa8ea91f1be11bca1ce6f Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 24 Dec 2015 14:31:35 +1300 Subject: [PATCH 05/34] Minor refactoring Make buildURL private --- .../free/nrw/commons/upload/MwVolleyApi.java | 20 +++++++++++-------- .../nrw/commons/upload/ShareActivity.java | 6 +----- 2 files changed, 13 insertions(+), 13 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 59d3bb153..53806ae02 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 @@ -30,12 +30,23 @@ public class MwVolleyApi { this.context = context; } + + public void request(String coords) { + + String apiUrl = buildUrl(coords); + Log.d("Image", "URL: " + apiUrl); + + JsonRequest request = new QueryRequest(apiUrl, + new LogResponseListener(), new LogResponseErrorListener()); + getQueue().add(request); + } + /** * Builds URL with image coords for MediaWiki API calls * 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 */ - public String buildUrl (String coords){ + private String buildUrl (String coords){ Uri.Builder builder = Uri.parse("https://commons.wikimedia.org/").buildUpon(); @@ -60,13 +71,6 @@ public class MwVolleyApi { } - public void request(String apiUrl) { - - JsonRequest request = new QueryRequest(apiUrl, - new LogResponseListener(), new LogResponseErrorListener()); - getQueue().add(request); - } - private synchronized RequestQueue getQueue() { return getQueue(context); } 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 8186481c2..2bf8a0fc9 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 @@ -188,12 +188,8 @@ public class ShareActivity Log.d("Image", "Coords of image: " + coords); MwVolleyApi apiCall = new MwVolleyApi(this); - //build URL with image coords for MediaWiki API calls - String apiUrl = apiCall.buildUrl(coords); - Log.d("Image", "URL: " + apiUrl); - //asynchronous calls to MediaWiki Commons API to match image coords with nearby Commons categories - apiCall.request(apiUrl); + apiCall.request(coords); } } From ca87e5a4ef347a5db215f444772e0186122d8482 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 24 Dec 2015 15:18:10 +1300 Subject: [PATCH 06/34] Trying to add categories to HashSet Causes error --- .../free/nrw/commons/upload/MwVolleyApi.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) 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 53806ae02..97fc0d517 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 @@ -19,6 +19,9 @@ import com.google.gson.GsonBuilder; import java.io.UnsupportedEncodingException; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; public class MwVolleyApi { @@ -134,10 +137,11 @@ public class MwVolleyApi { private static class QueryResponse { private Query query; + private Page page; @Override public String toString() { - return "query=" + query.toString(); + return "query=" + query.toString() + "\n" + page.printSet(); } } @@ -163,6 +167,18 @@ public class MwVolleyApi { private Category[] categories; private Category category; + private HashSet categorySet = new HashSet(); + + private String printSet() { + if (categorySet.isEmpty()) { + return "No collection of categories"; + } + else { + String[] categoryArray = categorySet.toArray(new String[0]); + return categoryArray.toString(); + } + } + @Override public String toString() { @@ -174,6 +190,9 @@ public class MwVolleyApi { for (Category category : categories) { builder.append(category.toString()); builder.append("\n"); + if (category != null && category.toString() != null && category.toString() != "") { + categorySet.add(category.toString()); + } } } From fa060bb41e459b415e8d050fef4bc30389c88ec1 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 24 Dec 2015 15:23:11 +1300 Subject: [PATCH 07/34] Minor change --- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 3 +-- 1 file changed, 1 insertion(+), 2 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 97fc0d517..81cfdf86e 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 @@ -174,8 +174,7 @@ public class MwVolleyApi { return "No collection of categories"; } else { - String[] categoryArray = categorySet.toArray(new String[0]); - return categoryArray.toString(); + return categorySet.toString(); } } From 3a455418a39b00bd7fc8864a6a2f054ca460f123 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 24 Dec 2015 17:29:03 +1300 Subject: [PATCH 08/34] Trying to access categorySet --- .../free/nrw/commons/upload/MwVolleyApi.java | 40 ++++++++++++++----- 1 file changed, 31 insertions(+), 9 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 81cfdf86e..0ea09f203 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,6 +29,8 @@ public class MwVolleyApi { private static final Gson GSON = new GsonBuilder().create(); private Context context; + protected HashSet categorySet; + public MwVolleyApi(Context context) { this.context = context; } @@ -135,19 +137,28 @@ public class MwVolleyApi { } } - private static class QueryResponse { - private Query query; + private class QueryResponse { + private Query query = new Query(); private Page page; + public QueryResponse() { + + } + @Override public String toString() { - return "query=" + query.toString() + "\n" + page.printSet(); + return "query=" + query.toString() + "\n" //page.printSet() + ; } } - private static class Query { + private class Query { private Page [] pages; + public Query() { + + } + @Override public String toString() { StringBuilder builder = new StringBuilder("pages=" + "\n"); @@ -156,21 +167,31 @@ public class MwVolleyApi { builder.append("\n"); } builder.replace(builder.length() - 1, builder.length(), ""); + + + if (categorySet == null || categorySet.isEmpty()) { + Log.d("Set", "No category set"); + } + else { + Log.d("Set", categorySet.toString()); + } + return builder.toString(); + } } - private static class Page { + private class Page { private int pageid; private int ns; private String title; private Category[] categories; private Category category; - private HashSet categorySet = new HashSet(); + private String printSet() { - if (categorySet.isEmpty()) { + if (categorySet == null || categorySet.isEmpty()) { return "No collection of categories"; } else { @@ -180,12 +201,13 @@ public class MwVolleyApi { @Override public String toString() { - + categorySet = new HashSet(); StringBuilder builder = new StringBuilder("PAGEID=" + pageid + " ns=" + ns + " title=" + title + "\n" + " CATEGORIES= "); if (categories == null || categories.length == 0) { builder.append("no categories exist\n"); - } else { + } + else { for (Category category : categories) { builder.append(category.toString()); builder.append("\n"); From f5a42ac00b68fadc2b6bc05f85780388955113ce Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 17:53:12 +1300 Subject: [PATCH 09/34] Got categorySet to work categorySet now stores a unique copy of each category found in the query --- .../free/nrw/commons/upload/MwVolleyApi.java | 48 +++++++------------ 1 file changed, 17 insertions(+), 31 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 0ea09f203..470974347 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 @@ -20,8 +20,6 @@ import com.google.gson.GsonBuilder; import java.io.UnsupportedEncodingException; import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.Set; public class MwVolleyApi { @@ -29,13 +27,13 @@ public class MwVolleyApi { private static final Gson GSON = new GsonBuilder().create(); private Context context; - protected HashSet categorySet; + protected static HashSet categorySet; public MwVolleyApi(Context context) { this.context = context; + categorySet = new HashSet(); } - public void request(String coords) { String apiUrl = buildUrl(coords); @@ -75,7 +73,6 @@ public class MwVolleyApi { return builder.toString(); } - private synchronized RequestQueue getQueue() { return getQueue(context); } @@ -122,12 +119,10 @@ public class MwVolleyApi { return Response.success(queryResponse, cacheEntry(response)); } - private Cache.Entry cacheEntry(NetworkResponse response) { return HttpHeaderParser.parseCacheHeaders(response); } - private String parseString(NetworkResponse response) { try { return new String(response.data, HttpHeaderParser.parseCharset(response.headers)); @@ -137,28 +132,27 @@ public class MwVolleyApi { } } - private class QueryResponse { + private static class QueryResponse { private Query query = new Query(); private Page page; - public QueryResponse() { - + private String printSet() { + if (categorySet == null || categorySet.isEmpty()) { + return "No collection of categories"; + } + else { + return categorySet.toString(); + } } - @Override public String toString() { - return "query=" + query.toString() + "\n" //page.printSet() - ; + return "query=" + query.toString() + "\n" + printSet(); } } - private class Query { + private static class Query { private Page [] pages; - public Query() { - - } - @Override public String toString() { StringBuilder builder = new StringBuilder("pages=" + "\n"); @@ -168,7 +162,6 @@ public class MwVolleyApi { } builder.replace(builder.length() - 1, builder.length(), ""); - if (categorySet == null || categorySet.isEmpty()) { Log.d("Set", "No category set"); } @@ -181,7 +174,7 @@ public class MwVolleyApi { } } - private class Page { + private static class Page { private int pageid; private int ns; private String title; @@ -190,18 +183,9 @@ public class MwVolleyApi { - private String printSet() { - if (categorySet == null || categorySet.isEmpty()) { - return "No collection of categories"; - } - else { - return categorySet.toString(); - } - } - @Override public String toString() { - categorySet = new HashSet(); + StringBuilder builder = new StringBuilder("PAGEID=" + pageid + " ns=" + ns + " title=" + title + "\n" + " CATEGORIES= "); if (categories == null || categories.length == 0) { @@ -211,8 +195,10 @@ public class MwVolleyApi { for (Category category : categories) { builder.append(category.toString()); builder.append("\n"); - if (category != null && category.toString() != null && category.toString() != "") { + if (category != null) { categorySet.add(category.toString()); + Log.d("Set", "category added: " + category.toString()); + Log.d("Set", categorySet.toString()); } } } From 4a3a795751dba8d3fbdfcc04b56362d26941d27b Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 17:58:40 +1300 Subject: [PATCH 10/34] Minor changes to remove excessive debugging print --- .../fr/free/nrw/commons/upload/MwVolleyApi.java | 15 +++------------ 1 file changed, 3 insertions(+), 12 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 470974347..91fbe8e1a 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 @@ -141,7 +141,7 @@ public class MwVolleyApi { return "No collection of categories"; } else { - return categorySet.toString(); + return "CATEGORIES FOUND" + categorySet.toString(); } } @Override @@ -162,13 +162,6 @@ public class MwVolleyApi { } builder.replace(builder.length() - 1, builder.length(), ""); - if (categorySet == null || categorySet.isEmpty()) { - Log.d("Set", "No category set"); - } - else { - Log.d("Set", categorySet.toString()); - } - return builder.toString(); } @@ -181,8 +174,6 @@ public class MwVolleyApi { private Category[] categories; private Category category; - - @Override public String toString() { @@ -197,8 +188,8 @@ public class MwVolleyApi { builder.append("\n"); if (category != null) { categorySet.add(category.toString()); - Log.d("Set", "category added: " + category.toString()); - Log.d("Set", categorySet.toString()); + //Log.d("Set", "category added: " + category.toString()); + //Log.d("Set", "Current category Set" + categorySet.toString()); } } } From 47b24f96035846828e1b913d4ced5b68e5e75308 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 18:05:12 +1300 Subject: [PATCH 11/34] Removed ns field There does not seem to be a need to display that --- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 3 +-- 1 file changed, 1 insertion(+), 2 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 91fbe8e1a..bf8f241bd 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 @@ -200,12 +200,11 @@ public class MwVolleyApi { } private static class Category { - private int ns; private String title; @Override public String toString() { - return " ns=" + ns + " title=" + title; + return " title=" + title; } } } From 0f50fc790e65331008e7e56d4a73835599499fcb Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 18:10:08 +1300 Subject: [PATCH 12/34] Stripped superfluous "title=" output --- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bf8f241bd..3151c46bb 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 @@ -204,7 +204,7 @@ public class MwVolleyApi { @Override public String toString() { - return " title=" + title; + return title; } } } From d7bc2310930c427c8059952e22de2c54ee17a673 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 18:32:38 +1300 Subject: [PATCH 13/34] Strips "Category:" from category strings --- .../main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 3151c46bb..23e6a54a5 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 @@ -28,6 +28,7 @@ public class MwVolleyApi { private Context context; protected static HashSet categorySet; + protected static String categorySetString; public MwVolleyApi(Context context) { this.context = context; @@ -141,7 +142,9 @@ public class MwVolleyApi { return "No collection of categories"; } else { - return "CATEGORIES FOUND" + categorySet.toString(); + categorySetString = categorySet.toString(); + categorySetString = categorySetString.replace("Category:", ""); + return "CATEGORIES FOUND" + categorySetString; } } @Override From 37e76461faea0585b66f81d88e218de532619606 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 18:34:59 +1300 Subject: [PATCH 14/34] Stripped strings before adding to Set Instead of doing it after --- .../java/fr/free/nrw/commons/upload/MwVolleyApi.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 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 23e6a54a5..ee0b48a85 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 @@ -28,7 +28,6 @@ public class MwVolleyApi { private Context context; protected static HashSet categorySet; - protected static String categorySetString; public MwVolleyApi(Context context) { this.context = context; @@ -142,9 +141,8 @@ public class MwVolleyApi { return "No collection of categories"; } else { - categorySetString = categorySet.toString(); - categorySetString = categorySetString.replace("Category:", ""); - return "CATEGORIES FOUND" + categorySetString; + + return "CATEGORIES FOUND" + categorySet.toString(); } } @Override @@ -190,7 +188,8 @@ public class MwVolleyApi { builder.append(category.toString()); builder.append("\n"); if (category != null) { - categorySet.add(category.toString()); + String categoryString = category.toString().replace("Category:", ""); + categorySet.add(categoryString); //Log.d("Set", "category added: " + category.toString()); //Log.d("Set", "Current category Set" + categorySet.toString()); } From 7c40e74f25ad41e9bf16a534fafc05b634b78b62 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 18:56:22 +1300 Subject: [PATCH 15/34] Put in basic accessor method for categories --- .../java/fr/free/nrw/commons/upload/MwVolleyApi.java | 9 +++++++++ 1 file changed, 9 insertions(+) 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 ee0b48a85..7c55e1f57 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 @@ -19,7 +19,9 @@ import com.google.gson.GsonBuilder; import java.io.UnsupportedEncodingException; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; public class MwVolleyApi { @@ -34,6 +36,13 @@ public class MwVolleyApi { categorySet = new HashSet(); } + //To get the list of categories for display + public ArrayList getCategoriesGps() { + ArrayList list = new ArrayList(categorySet); + return list; + } + + public void request(String coords) { String apiUrl = buildUrl(coords); From d73cbc3eb884f21a632d38ccf52fba39f797807e Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 19:06:05 +1300 Subject: [PATCH 16/34] Checks for whether any nearby categories found --- .../java/fr/free/nrw/commons/upload/MwVolleyApi.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 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 7c55e1f57..1f4f0cb5f 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 @@ -30,6 +30,8 @@ public class MwVolleyApi { private Context context; protected static HashSet categorySet; + //To check later on whether any nearby categories were found + public static boolean gpsCatExists; public MwVolleyApi(Context context) { this.context = context; @@ -37,7 +39,7 @@ public class MwVolleyApi { } //To get the list of categories for display - public ArrayList getCategoriesGps() { + public ArrayList getGpsCat() { ArrayList list = new ArrayList(categorySet); return list; } @@ -147,10 +149,13 @@ public class MwVolleyApi { private String printSet() { if (categorySet == null || categorySet.isEmpty()) { + gpsCatExists = false; + Log.d("Cat", "gpsCatExists=" + gpsCatExists); return "No collection of categories"; } else { - + gpsCatExists = true; + Log.d("Cat", "gpsCatExists=" + gpsCatExists); return "CATEGORIES FOUND" + categorySet.toString(); } } From 9756513a893538b54d4e63d0f0f25edc3ffcb299 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 19:18:56 +1300 Subject: [PATCH 17/34] Debugging stuff, revert later --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 5 +++++ .../main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 1 + .../java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index c5ecdafa8..22d5dc232 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -8,6 +8,7 @@ import android.os.*; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; +import android.util.Log; import android.view.*; import android.widget.*; import com.actionbarsherlock.app.SherlockFragment; @@ -112,6 +113,10 @@ public class CategorizationFragment extends SherlockFragment{ items.add(new CategoryItem(category, false)); } } + + //TODO: Remove this later + Log.d("Cat", "I am still called when upload is commented out"); + categoriesAdapter.setItems(items); categoriesAdapter.notifyDataSetInvalidated(); categoriesSearchInProgress.setVisibility(View.GONE); 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 1f4f0cb5f..dba1f4e50 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 @@ -30,6 +30,7 @@ public class MwVolleyApi { private Context context; protected static HashSet categorySet; + //To check later on whether any nearby categories were found public static boolean gpsCatExists; diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 0826aef5f..58665dae2 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,7 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); - uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }); From 7034f628dee42ce291afb2c36f061fd848a32057 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 19:44:10 +1300 Subject: [PATCH 18/34] Attempt at adding new category list to adapter Doesn't seem to show up. Might be adding in wrong place --- .../category/CategorizationFragment.java | 18 ++++++++++++++++-- .../free/nrw/commons/upload/MwVolleyApi.java | 2 +- .../nrw/commons/upload/UploadController.java | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 22d5dc232..376e1b1f4 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -19,6 +19,7 @@ import org.mediawiki.api.ApiResult; import org.mediawiki.api.MWApi; import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.R; +import fr.free.nrw.commons.upload.MwVolleyApi; import java.io.IOException; import java.util.ArrayList; @@ -117,6 +118,7 @@ public class CategorizationFragment extends SherlockFragment{ //TODO: Remove this later Log.d("Cat", "I am still called when upload is commented out"); + categoriesAdapter.setItems(items); categoriesAdapter.notifyDataSetInvalidated(); categoriesSearchInProgress.setVisibility(View.GONE); @@ -137,6 +139,8 @@ public class CategorizationFragment extends SherlockFragment{ protected ArrayList doInBackground(Void... voids) { if(TextUtils.isEmpty(filter)) { ArrayList items = new ArrayList(); + ArrayList mergedItems= new ArrayList(); + try { Cursor cursor = client.query( CategoryContentProvider.BASE_URI, @@ -149,11 +153,21 @@ public class CategorizationFragment extends SherlockFragment{ Category cat = Category.fromCursor(cursor); items.add(cat.getName()); } - } catch (RemoteException e) { + + if (MwVolleyApi.gpsCatExists){ + Log.d("Cat", "GPS cats found in CategorizationFragment.java" + MwVolleyApi.getGpsCat().toString()); + ArrayList gpsItems = new ArrayList(); + + mergedItems.addAll(items); + mergedItems.addAll(gpsItems); + } + + } + catch (RemoteException e) { // faaaail throw new RuntimeException(e); } - return items; + return mergedItems; } if(categoriesCache.containsKey(filter)) { return categoriesCache.get(filter); 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 dba1f4e50..f91d55f93 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 @@ -40,7 +40,7 @@ public class MwVolleyApi { } //To get the list of categories for display - public ArrayList getGpsCat() { + public static ArrayList getGpsCat() { ArrayList list = new ArrayList(categorySet); return list; } diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 58665dae2..0826aef5f 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,7 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); - //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }); From 8c979cf751cfa30cdbc88234eb21eef25d1e8665 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 19:49:21 +1300 Subject: [PATCH 19/34] Displays categories in CategorizationFragment.java --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 4 +++- .../java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 376e1b1f4..6233bf5a7 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -156,10 +156,12 @@ public class CategorizationFragment extends SherlockFragment{ if (MwVolleyApi.gpsCatExists){ Log.d("Cat", "GPS cats found in CategorizationFragment.java" + MwVolleyApi.getGpsCat().toString()); - ArrayList gpsItems = new ArrayList(); + ArrayList gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); + Log.d("Cat", "GPS items: " + gpsItems.toString()); mergedItems.addAll(items); mergedItems.addAll(gpsItems); + Log.d("Cat", "Merged items: " + mergedItems.toString()); } } diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 0826aef5f..58665dae2 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,7 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); - uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }); From 8d4787e493218fc52deb5149367f8727d389336c Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 20:09:01 +1300 Subject: [PATCH 20/34] Minor changes --- .../free/nrw/commons/category/CategorizationFragment.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 6233bf5a7..f2e79010e 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -154,23 +154,24 @@ public class CategorizationFragment extends SherlockFragment{ items.add(cat.getName()); } + mergedItems.addAll(items); + if (MwVolleyApi.gpsCatExists){ Log.d("Cat", "GPS cats found in CategorizationFragment.java" + MwVolleyApi.getGpsCat().toString()); ArrayList gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); Log.d("Cat", "GPS items: " + gpsItems.toString()); - mergedItems.addAll(items); mergedItems.addAll(gpsItems); - Log.d("Cat", "Merged items: " + mergedItems.toString()); } - } catch (RemoteException e) { // faaaail throw new RuntimeException(e); } + Log.d("Cat", "Merged items: " + mergedItems.toString()); return mergedItems; } + if(categoriesCache.containsKey(filter)) { return categoriesCache.get(filter); } From 640ff499c6179aa9514df2aed7f2d58a0979c9a6 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 25 Dec 2015 20:12:53 +1300 Subject: [PATCH 21/34] Minor changes 2 --- .../free/nrw/commons/category/CategorizationFragment.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index f2e79010e..b6c844783 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -114,11 +114,7 @@ public class CategorizationFragment extends SherlockFragment{ items.add(new CategoryItem(category, false)); } } - - //TODO: Remove this later - Log.d("Cat", "I am still called when upload is commented out"); - - + categoriesAdapter.setItems(items); categoriesAdapter.notifyDataSetInvalidated(); categoriesSearchInProgress.setVisibility(View.GONE); From 7273958b8ee91d49f7eb11921c2fc8938eb3e520 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 27 Dec 2015 14:13:39 +1300 Subject: [PATCH 22/34] Implemented check for null query, other minor changes --- .../nrw/commons/category/CategorizationFragment.java | 2 +- .../java/fr/free/nrw/commons/upload/GPSExtractor.java | 2 +- .../java/fr/free/nrw/commons/upload/MwVolleyApi.java | 9 ++++++++- .../java/fr/free/nrw/commons/upload/ShareActivity.java | 1 + .../fr/free/nrw/commons/upload/UploadController.java | 2 +- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index b6c844783..8e85f64a4 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -114,7 +114,7 @@ public class CategorizationFragment extends SherlockFragment{ items.add(new CategoryItem(category, false)); } } - + categoriesAdapter.setItems(items); categoriesAdapter.notifyDataSetInvalidated(); categoriesSearchInProgress.setVisibility(View.GONE); diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java index a72ae4f4e..9b3ce8516 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java @@ -33,7 +33,7 @@ public class GPSExtractor { } if (exif.getAttribute(ExifInterface.TAG_GPS_LATITUDE) == null) { - Log.w("Image", "Picture has no GPS info"); + Log.d("Image", "Picture has no GPS info"); return null; } else { 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 f91d55f93..2c23cf5b5 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 @@ -28,6 +28,7 @@ public class MwVolleyApi { private static RequestQueue REQUEST_QUEUE; private static final Gson GSON = new GsonBuilder().create(); private Context context; + private static String coordsLog; protected static HashSet categorySet; @@ -48,6 +49,7 @@ public class MwVolleyApi { public void request(String coords) { + coordsLog = coords; String apiUrl = buildUrl(coords); Log.d("Image", "URL: " + apiUrl); @@ -162,7 +164,12 @@ public class MwVolleyApi { } @Override public String toString() { - return "query=" + query.toString() + "\n" + printSet(); + if (query!=null) { + return "query=" + query.toString() + "\n" + printSet(); + } + else { + return "No pages found near " + coordsLog; + } } } 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 2bf8a0fc9..369d9b990 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 @@ -181,6 +181,7 @@ public class ShareActivity if (filePath != null) { //extract the coordinates of image in decimal degrees + Log.d("Image", "Calling GPSExtractor"); GPSExtractor imageObj = new GPSExtractor(filePath); String coords = imageObj.getCoords(); diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 58665dae2..0826aef5f 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -140,7 +140,7 @@ public class UploadController { @Override protected void onPostExecute(Contribution contribution) { super.onPostExecute(contribution); - //uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); + uploadService.queue(UploadService.ACTION_UPLOAD_FILE, contribution); onComplete.onUploadStarted(contribution); } }); From 5fe43284ee07c58710ea8e58f2a451c3b761b3d7 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 27 Dec 2015 14:17:18 +1300 Subject: [PATCH 23/34] Displays nearby categories on top instead of below recent ones --- .../free/nrw/commons/category/CategorizationFragment.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 8e85f64a4..afedc0ff2 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -149,9 +149,7 @@ public class CategorizationFragment extends SherlockFragment{ Category cat = Category.fromCursor(cursor); items.add(cat.getName()); } - - mergedItems.addAll(items); - + if (MwVolleyApi.gpsCatExists){ Log.d("Cat", "GPS cats found in CategorizationFragment.java" + MwVolleyApi.getGpsCat().toString()); ArrayList gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); @@ -159,6 +157,8 @@ public class CategorizationFragment extends SherlockFragment{ mergedItems.addAll(gpsItems); } + + mergedItems.addAll(items); } catch (RemoteException e) { // faaaail From dbf4d37624e7309c68bd6e38d8057283d6cae889 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 27 Dec 2015 15:19:37 +1300 Subject: [PATCH 24/34] Adding version for release --- commons/AndroidManifest.xml | 4 ++-- .../fr/free/nrw/commons/category/CategorizationFragment.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/commons/AndroidManifest.xml b/commons/AndroidManifest.xml index 7fed5543f..de1e407dc 100644 --- a/commons/AndroidManifest.xml +++ b/commons/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="21" + android:versionName="1.5" > gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); From 95720c2a899d62512d36662189951476b381da19 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 27 Dec 2015 15:23:01 +1300 Subject: [PATCH 25/34] Added changelog entry --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 530cfb01c..fee424026 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Wikimedia Commons for Android +## v1.5 +- New feature: App detects nearby Commons categories based on GPS info of photos +- Displays nearby categories + ## v1.3 - Removed 'send usage reports' setting - Fixed package naming issue From 424d952349d77bf1361065760dc9db15cb047b7b Mon Sep 17 00:00:00 2001 From: misaochan Date: Sun, 27 Dec 2015 15:36:37 +1300 Subject: [PATCH 26/34] Fixed versions, prev one was wrong Whoops, got confused. Checked the Google Play store and the actual current production version is 19 (1.31). --- commons/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commons/AndroidManifest.xml b/commons/AndroidManifest.xml index de1e407dc..7fed5543f 100644 --- a/commons/AndroidManifest.xml +++ b/commons/AndroidManifest.xml @@ -1,7 +1,7 @@ + android:versionCode="20" + android:versionName="1.4" > Date: Mon, 28 Dec 2015 14:51:13 +1300 Subject: [PATCH 27/34] Edited changelog.md --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fee424026..6255cd920 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,7 @@ # Wikimedia Commons for Android ## v1.5 -- New feature: App detects nearby Commons categories based on GPS info of photos -- Displays nearby categories +- New feature: Suggests nearby Commons categories ## v1.3 - Removed 'send usage reports' setting From 38cdf79bbb2eb8e551ec4166fbb0cd15cea5a807 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 1 Jan 2016 19:07:44 +1300 Subject: [PATCH 28/34] Minor fixes --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 3 ++- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 8cedc9aa3..a76fe8d15 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.concurrent.ScheduledThreadPoolExecutor; public class CategorizationFragment extends SherlockFragment{ @@ -152,7 +153,7 @@ public class CategorizationFragment extends SherlockFragment{ if (MwVolleyApi.gpsCatExists){ Log.d("Cat", "GPS cats found in CategorizationFragment.java" + MwVolleyApi.getGpsCat().toString()); - ArrayList gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); + List gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); Log.d("Cat", "GPS items: " + gpsItems.toString()); mergedItems.addAll(gpsItems); 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 2c23cf5b5..b3d21ac76 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 @@ -22,6 +22,7 @@ import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Set; public class MwVolleyApi { @@ -30,7 +31,7 @@ public class MwVolleyApi { private Context context; private static String coordsLog; - protected static HashSet categorySet; + protected static Set categorySet; //To check later on whether any nearby categories were found public static boolean gpsCatExists; From 7e6b13b1028dacf86017012ad062aad0b80d12c0 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 1 Jan 2016 19:11:41 +1300 Subject: [PATCH 29/34] Minor fixes 2 --- .../main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 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 b3d21ac76..84a57ddf8 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 @@ -42,8 +42,8 @@ public class MwVolleyApi { } //To get the list of categories for display - public static ArrayList getGpsCat() { - ArrayList list = new ArrayList(categorySet); + public static List getGpsCat() { + List list = new ArrayList(categorySet); return list; } @@ -163,9 +163,10 @@ public class MwVolleyApi { return "CATEGORIES FOUND" + categorySet.toString(); } } + @Override public String toString() { - if (query!=null) { + if (query != null) { return "query=" + query.toString() + "\n" + printSet(); } else { From 512ddfdd7df95f71aab4cbd3b0d1c64b02dadae0 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 1 Jan 2016 19:15:40 +1300 Subject: [PATCH 30/34] Minor fixes 3 --- .../fr/free/nrw/commons/upload/FilePathConverter.java | 4 +--- .../java/fr/free/nrw/commons/upload/GPSExtractor.java | 1 - .../java/fr/free/nrw/commons/upload/MwVolleyApi.java | 11 +++-------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java b/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java index 8d1711f47..9267bf9f8 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/FilePathConverter.java @@ -48,9 +48,7 @@ public class FilePathConverter { Log.d("Image", "File path: " + filePath); return filePath; - } - - catch (IllegalArgumentException e) { + } catch (IllegalArgumentException e) { Log.w("Image", e); return null; } diff --git a/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java index 9b3ce8516..88191b894 100644 --- a/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java +++ b/commons/src/main/java/fr/free/nrw/commons/upload/GPSExtractor.java @@ -26,7 +26,6 @@ public class GPSExtractor { try { exif = new ExifInterface(filePath); - } catch (IOException e) { Log.w("Image", e); return null; 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 84a57ddf8..7a79062d7 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 @@ -156,8 +156,7 @@ public class MwVolleyApi { gpsCatExists = false; Log.d("Cat", "gpsCatExists=" + gpsCatExists); return "No collection of categories"; - } - else { + } else { gpsCatExists = true; Log.d("Cat", "gpsCatExists=" + gpsCatExists); return "CATEGORIES FOUND" + categorySet.toString(); @@ -168,8 +167,7 @@ public class MwVolleyApi { public String toString() { if (query != null) { return "query=" + query.toString() + "\n" + printSet(); - } - else { + } else { return "No pages found near " + coordsLog; } } @@ -206,16 +204,13 @@ public class MwVolleyApi { if (categories == null || categories.length == 0) { builder.append("no categories exist\n"); - } - else { + } else { for (Category category : categories) { builder.append(category.toString()); builder.append("\n"); if (category != null) { String categoryString = category.toString().replace("Category:", ""); categorySet.add(categoryString); - //Log.d("Set", "category added: " + category.toString()); - //Log.d("Set", "Current category Set" + categorySet.toString()); } } } From c385b54d448963e554bea15dad1c63665a0e7df9 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 1 Jan 2016 19:33:43 +1300 Subject: [PATCH 31/34] Fixed unnecessary use of static variable --- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 7a79062d7..094d1a08b 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,7 +29,7 @@ public class MwVolleyApi { private static RequestQueue REQUEST_QUEUE; private static final Gson GSON = new GsonBuilder().create(); private Context context; - private static String coordsLog; + private String coordsLog; protected static Set categorySet; @@ -168,7 +168,7 @@ public class MwVolleyApi { if (query != null) { return "query=" + query.toString() + "\n" + printSet(); } else { - return "No pages found near " + coordsLog; + return "No pages found"; } } } From b3de1951760e2ddba29f4d5eeedd3aa8398b790c Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 1 Jan 2016 19:37:31 +1300 Subject: [PATCH 32/34] Added API url as string constant --- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 094d1a08b..62c62a0a7 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 @@ -35,6 +35,7 @@ public class MwVolleyApi { //To check later on whether any nearby categories were found public static boolean gpsCatExists; + public static final String MWURL = "https://commons.wikimedia.org/"; public MwVolleyApi(Context context) { this.context = context; @@ -66,7 +67,7 @@ public class MwVolleyApi { */ private String buildUrl (String coords){ - Uri.Builder builder = Uri.parse("https://commons.wikimedia.org/").buildUpon(); + Uri.Builder builder = Uri.parse(MWURL).buildUpon(); builder.appendPath("w") .appendPath("api.php") From 681cde18e89f34a3d3942bc95626b7759a9050bd Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 1 Jan 2016 20:07:23 +1300 Subject: [PATCH 33/34] Added getters/setters for GpsCatExists --- .../category/CategorizationFragment.java | 2 +- .../free/nrw/commons/upload/MwVolleyApi.java | 23 +++++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index a76fe8d15..e5491c27f 100644 --- a/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/commons/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -151,7 +151,7 @@ public class CategorizationFragment extends SherlockFragment{ items.add(cat.getName()); } - if (MwVolleyApi.gpsCatExists){ + if (MwVolleyApi.GpsCatExists.getGpsCatExists() == true){ Log.d("Cat", "GPS cats found in CategorizationFragment.java" + MwVolleyApi.getGpsCat().toString()); List gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); Log.d("Cat", "GPS items: " + gpsItems.toString()); 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 62c62a0a7..db4090d33 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 @@ -33,8 +33,6 @@ public class MwVolleyApi { protected static Set categorySet; - //To check later on whether any nearby categories were found - public static boolean gpsCatExists; public static final String MWURL = "https://commons.wikimedia.org/"; public MwVolleyApi(Context context) { @@ -147,19 +145,30 @@ public class MwVolleyApi { } } } + + public static class GpsCatExists { + private static boolean gpsCatExists; + + public static void setGpsCatExists(boolean gpsCat) { + gpsCatExists = gpsCat; + } + + public static boolean getGpsCatExists() { + return gpsCatExists; + } + } private static class QueryResponse { private Query query = new Query(); - private Page page; private String printSet() { if (categorySet == null || categorySet.isEmpty()) { - gpsCatExists = false; - Log.d("Cat", "gpsCatExists=" + gpsCatExists); + GpsCatExists.setGpsCatExists(false); + Log.d("Cat", "gpsCatExists=" + GpsCatExists.getGpsCatExists()); return "No collection of categories"; } else { - gpsCatExists = true; - Log.d("Cat", "gpsCatExists=" + gpsCatExists); + GpsCatExists.setGpsCatExists(true); + Log.d("Cat", "gpsCatExists=" + GpsCatExists.getGpsCatExists()); return "CATEGORIES FOUND" + categorySet.toString(); } } From 4758d65c4c2f06f0ef148f443dd2e7ac87bc051a Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 1 Jan 2016 23:05:20 +1300 Subject: [PATCH 34/34] Made URL constant private --- .../src/main/java/fr/free/nrw/commons/upload/MwVolleyApi.java | 4 ++-- 1 file changed, 2 insertions(+), 2 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 db4090d33..e3c69d2b4 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 @@ -33,7 +33,7 @@ public class MwVolleyApi { protected static Set categorySet; - public static final String MWURL = "https://commons.wikimedia.org/"; + private static final String MWURL = "https://commons.wikimedia.org/"; public MwVolleyApi(Context context) { this.context = context; @@ -145,7 +145,7 @@ public class MwVolleyApi { } } } - + public static class GpsCatExists { private static boolean gpsCatExists;