From f96bbb99b9fb084806844425134d0045df72ad97 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 17:27:26 +1300 Subject: [PATCH 01/39] Add todo --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 8d16a1630..750d4c131 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -112,6 +112,7 @@ public class CategorizationFragment extends Fragment { } } + //TODO: Probably add 'suggest from filename' cats here. We want it to be displayed at start, not upon typing /** * Retrieves recently-used categories and nearby categories, and merges them without duplicates. * @return a list containing these categories From 2abe8a279f7ea8a2bd960a21a43a2de65ae6e89d Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 17:29:11 +1300 Subject: [PATCH 02/39] Add more todo --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 750d4c131..623eb57ac 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -113,6 +113,7 @@ public class CategorizationFragment extends Fragment { } //TODO: Probably add 'suggest from filename' cats here. We want it to be displayed at start, not upon typing + //TODO: Search using MethodA query, but can't use MethodAUpdater because we don't want it updating when user types /** * Retrieves recently-used categories and nearby categories, and merges them without duplicates. * @return a list containing these categories From 9d50b4706c8a1e4eef1ecaddf50bcd1c3a858b4d Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 17:53:26 +1300 Subject: [PATCH 03/39] Refactor recentCatQuery into two separate functions --- .../category/CategorizationFragment.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 623eb57ac..2510d3d5e 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -115,12 +115,11 @@ public class CategorizationFragment extends Fragment { //TODO: Probably add 'suggest from filename' cats here. We want it to be displayed at start, not upon typing //TODO: Search using MethodA query, but can't use MethodAUpdater because we don't want it updating when user types /** - * Retrieves recently-used categories and nearby categories, and merges them without duplicates. - * @return a list containing these categories + * Retrieves recently-used categories + * @return a list containing recent categories */ protected ArrayList recentCatQuery() { ArrayList items = new ArrayList(); - Set mergedItems = new LinkedHashSet(); try { Cursor cursor = client.query( @@ -135,21 +134,29 @@ public class CategorizationFragment extends Fragment { items.add(cat.getName()); } cursor.close(); - - if (MwVolleyApi.GpsCatExists.getGpsCatExists() == true) { - //Log.d(TAG, "GPS cats found in CategorizationFragment.java" + MwVolleyApi.getGpsCat().toString()); - List gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); - //Log.d(TAG, "GPS items: " + gpsItems.toString()); - - mergedItems.addAll(gpsItems); - } - - mergedItems.addAll(items); } catch (RemoteException e) { throw new RuntimeException(e); } + return items; + } + + /** + * Merges recently-used categories and nearby categories without duplicates. + * @return a list containing merged categories + */ + protected ArrayList mergeItems() { + Set mergedItems = new LinkedHashSet(); + + if (MwVolleyApi.GpsCatExists.getGpsCatExists()) { + List gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); + mergedItems.addAll(gpsItems); + } + + List recentItems = new ArrayList(recentCatQuery()); + mergedItems.addAll(recentItems); + //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code ArrayList mergedItemsList = new ArrayList(mergedItems); return mergedItemsList; From 2d96091332425f7aad605f98b14e1cae9c02887f Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 17:54:33 +1300 Subject: [PATCH 04/39] Whitespace --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 2510d3d5e..1e00d28e4 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -114,6 +114,7 @@ public class CategorizationFragment extends Fragment { //TODO: Probably add 'suggest from filename' cats here. We want it to be displayed at start, not upon typing //TODO: Search using MethodA query, but can't use MethodAUpdater because we don't want it updating when user types + /** * Retrieves recently-used categories * @return a list containing recent categories From 96eef100cb6b3b89cfd660ab203c672cba8a7365 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 17:58:48 +1300 Subject: [PATCH 05/39] Add call to mergeItems() --- .../main/java/fr/free/nrw/commons/category/MethodAUpdater.java | 2 +- .../main/java/fr/free/nrw/commons/category/PrefixUpdater.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java b/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java index 54f6771fb..5ac3f3bf2 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java +++ b/app/src/main/java/fr/free/nrw/commons/category/MethodAUpdater.java @@ -42,7 +42,7 @@ public class MethodAUpdater extends AsyncTask> { protected ArrayList doInBackground(Void... voids) { //If user hasn't typed anything in yet, get GPS and recent items if(TextUtils.isEmpty(filter)) { - return catFragment.recentCatQuery(); + return catFragment.mergeItems(); } //if user types in something that is in cache, return cached category diff --git a/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java b/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java index 3a4005294..b095bfe6a 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java +++ b/app/src/main/java/fr/free/nrw/commons/category/PrefixUpdater.java @@ -45,7 +45,7 @@ public class PrefixUpdater extends AsyncTask> { protected ArrayList doInBackground(Void... voids) { //If user hasn't typed anything in yet, get GPS and recent items if(TextUtils.isEmpty(filter)) { - return catFragment.recentCatQuery(); + return catFragment.mergeItems(); } //if user types in something that is in cache, return cached category From d61b662f380f8bf06a71474cce0980a8e8bfb4f6 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:01:19 +1300 Subject: [PATCH 06/39] Add new titleCatQuery() function --- .../free/nrw/commons/category/CategorizationFragment.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 1e00d28e4..7aaed9d37 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -114,6 +114,12 @@ public class CategorizationFragment extends Fragment { //TODO: Probably add 'suggest from filename' cats here. We want it to be displayed at start, not upon typing //TODO: Search using MethodA query, but can't use MethodAUpdater because we don't want it updating when user types + protected ArrayList titleCatQuery() { + ArrayList items = new ArrayList(); + + + return items; + } /** * Retrieves recently-used categories From 43ef23103514779d13a0b70193b6d00422a2470f Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:08:20 +1300 Subject: [PATCH 07/39] Store title that was submitted --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 4 ++++ .../java/fr/free/nrw/commons/upload/SingleUploadFragment.java | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 7aaed9d37..001b36d56 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -117,6 +117,10 @@ public class CategorizationFragment extends Fragment { protected ArrayList titleCatQuery() { ArrayList items = new ArrayList(); + SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity()); + //Retrieve the title that was saved when user tapped submit icon + String title = titleDesc.getString("Title", ""); + Log.d(TAG, "Title: " + title); return items; } diff --git a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java index 0d5d4ee3f..6efa05b14 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/SingleUploadFragment.java @@ -52,12 +52,13 @@ public class SingleUploadFragment extends Fragment { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { + //What happens when the 'submit' icon is tapped case R.id.menu_upload_single: String title = titleEdit.getText().toString(); String desc = descEdit.getText().toString(); - //Save the values of these fields in short-lived cache so next time this fragment is loaded, we can access these + //Save the title/desc in short-lived cache so next time this fragment is loaded, we can access these SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity()); SharedPreferences.Editor editor = titleDesc.edit(); editor.putString("Title", title); From af0fed66bc534571ffb410c3d2028766ec12d697 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:08:26 +1300 Subject: [PATCH 08/39] DEBUG MODE --- .../main/java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 049249421..6d95bd717 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -156,7 +156,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 06364111851c431c91a12cf008204bcf62c84fc0 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:10:01 +1300 Subject: [PATCH 09/39] Add titleItems to mergedItems() --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 001b36d56..06293604d 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -168,6 +168,9 @@ public class CategorizationFragment extends Fragment { List recentItems = new ArrayList(recentCatQuery()); mergedItems.addAll(recentItems); + List titleItems = new ArrayList(titleCatQuery()); + mergedItems.addAll(titleItems); + //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code ArrayList mergedItemsList = new ArrayList(mergedItems); return mergedItemsList; From 00b548c2d8d32cc1eac6ffcb31d014fdc78e1836 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:17:41 +1300 Subject: [PATCH 10/39] Add API query bare bones --- .../category/CategorizationFragment.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 06293604d..2426f47e1 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -33,6 +33,10 @@ import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; +import org.mediawiki.api.ApiResult; +import org.mediawiki.api.MWApi; + +import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; @@ -43,6 +47,7 @@ import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ScheduledThreadPoolExecutor; +import fr.free.nrw.commons.CommonsApplication; import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.upload.MwVolleyApi; @@ -122,6 +127,37 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); + + MWApi api = CommonsApplication.createMWApi(); + ApiResult result; + + + //URL https://commons.wikimedia.org/w/api.php?action=query&format=xml&list=search&srwhat=text&srenablerewrites=1&srnamespace=14&srlimit=10&srsearch= + try { + result = api.action("query") + .param("format", "xml") + .param("list", "search") + .param("srwhat", "text") + .param("srnamespace", "14") + .param("srlimit", SEARCH_CATS_LIMIT) + .param("srsearch", title) + .get(); + Log.d(TAG, "Searching for cats for title: " + result.toString()); + } catch (IOException e) { + Log.e(TAG, "IO Exception: ", e); + //Return empty arraylist + return items; + } + + ArrayList categoryNodes = result.getNodes("/api/query/search/p/@title"); + for(ApiResult categoryNode: categoryNodes) { + String cat = categoryNode.getDocument().getTextContent(); + String catString = cat.replace("Category:", ""); + items.add(catString); + } + + Log.d(TAG, "Title cat query results: " + items); + return items; } From 859e78fc6dfadcf6aefb43883ea3091f80f03344 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:20:42 +1300 Subject: [PATCH 11/39] Displays title category suggestions properly --- .../free/nrw/commons/category/CategorizationFragment.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 2426f47e1..d6bf66049 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -201,12 +201,12 @@ public class CategorizationFragment extends Fragment { mergedItems.addAll(gpsItems); } - List recentItems = new ArrayList(recentCatQuery()); - mergedItems.addAll(recentItems); - List titleItems = new ArrayList(titleCatQuery()); mergedItems.addAll(titleItems); + List recentItems = new ArrayList(recentCatQuery()); + mergedItems.addAll(recentItems); + //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code ArrayList mergedItemsList = new ArrayList(mergedItems); return mergedItemsList; From 21686db31a64e7b929152e088bfaa1b90acf8b90 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:22:59 +1300 Subject: [PATCH 12/39] Add comments --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index d6bf66049..753e2217e 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -132,6 +132,7 @@ public class CategorizationFragment extends Fragment { ApiResult result; + //TODO: Split this into AsyncTask //URL https://commons.wikimedia.org/w/api.php?action=query&format=xml&list=search&srwhat=text&srenablerewrites=1&srnamespace=14&srlimit=10&srsearch= try { result = api.action("query") @@ -190,7 +191,7 @@ public class CategorizationFragment extends Fragment { } /** - * Merges recently-used categories and nearby categories without duplicates. + * Merges nearby categories, categories suggested based on title, and recent categories... without duplicates. * @return a list containing merged categories */ protected ArrayList mergeItems() { From b49a9974aef4d47bc3c6da61beb979c43be4333b Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 8 Oct 2016 18:43:16 +1300 Subject: [PATCH 13/39] Tidy code --- .../free/nrw/commons/category/CategorizationFragment.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 753e2217e..cd42cf15c 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -122,17 +122,16 @@ public class CategorizationFragment extends Fragment { protected ArrayList titleCatQuery() { ArrayList items = new ArrayList(); - SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity()); //Retrieve the title that was saved when user tapped submit icon + SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity()); String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); + //TODO: Split this into AsyncTask MWApi api = CommonsApplication.createMWApi(); ApiResult result; - - - //TODO: Split this into AsyncTask + //URL https://commons.wikimedia.org/w/api.php?action=query&format=xml&list=search&srwhat=text&srenablerewrites=1&srnamespace=14&srlimit=10&srsearch= try { result = api.action("query") From 01bd8845c2a07f1a0bbd5f76823ad51e78fd27e1 Mon Sep 17 00:00:00 2001 From: misaochan Date: Tue, 11 Oct 2016 01:08:26 +1300 Subject: [PATCH 14/39] Split title category code into class that extends AsyncTask --- .../category/CategorizationFragment.java | 32 +-------- .../nrw/commons/category/TitleCategories.java | 65 +++++++++++++++++++ 2 files changed, 66 insertions(+), 31 deletions(-) create mode 100644 app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index cd42cf15c..340624074 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -127,38 +127,8 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); - //TODO: Split this into AsyncTask + //TODO: Add call to TitleCategories AsyncTask here - MWApi api = CommonsApplication.createMWApi(); - ApiResult result; - - //URL https://commons.wikimedia.org/w/api.php?action=query&format=xml&list=search&srwhat=text&srenablerewrites=1&srnamespace=14&srlimit=10&srsearch= - try { - result = api.action("query") - .param("format", "xml") - .param("list", "search") - .param("srwhat", "text") - .param("srnamespace", "14") - .param("srlimit", SEARCH_CATS_LIMIT) - .param("srsearch", title) - .get(); - Log.d(TAG, "Searching for cats for title: " + result.toString()); - } catch (IOException e) { - Log.e(TAG, "IO Exception: ", e); - //Return empty arraylist - return items; - } - - ArrayList categoryNodes = result.getNodes("/api/query/search/p/@title"); - for(ApiResult categoryNode: categoryNodes) { - String cat = categoryNode.getDocument().getTextContent(); - String catString = cat.replace("Category:", ""); - items.add(catString); - } - - Log.d(TAG, "Title cat query results: " + items); - - return items; } /** diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java new file mode 100644 index 000000000..49a938bc1 --- /dev/null +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -0,0 +1,65 @@ +package fr.free.nrw.commons.category; + +import android.os.AsyncTask; +import android.text.TextUtils; +import android.util.Log; +import android.view.View; + +import org.mediawiki.api.ApiResult; +import org.mediawiki.api.MWApi; + +import java.io.IOException; +import java.util.ArrayList; + +import fr.free.nrw.commons.CommonsApplication; + +/** + * Created by misao on 11-Oct-16. + */ + +public class TitleCategories extends AsyncTask> { + + @Override + protected void onPreExecute() { + super.onPreExecute(); + } + + @Override + protected ArrayList doInBackground(Void... voids) { + + + //TODO: Split this into AsyncTask + + MWApi api = CommonsApplication.createMWApi(); + ApiResult result; + + //URL https://commons.wikimedia.org/w/api.php?action=query&format=xml&list=search&srwhat=text&srenablerewrites=1&srnamespace=14&srlimit=10&srsearch= + try { + result = api.action("query") + .param("format", "xml") + .param("list", "search") + .param("srwhat", "text") + .param("srnamespace", "14") + .param("srlimit", SEARCH_CATS_LIMIT) + .param("srsearch", title) + .get(); + Log.d(TAG, "Searching for cats for title: " + result.toString()); + } catch (IOException e) { + Log.e(TAG, "IO Exception: ", e); + //Return empty arraylist + return items; + } + + ArrayList categoryNodes = result.getNodes("/api/query/search/p/@title"); + for(ApiResult categoryNode: categoryNodes) { + String cat = categoryNode.getDocument().getTextContent(); + String catString = cat.replace("Category:", ""); + items.add(catString); + } + + Log.d(TAG, "Title cat query results: " + items); + + return items; + } + +} From 0239bcc092cd379f42da325478714e7e01f84d33 Mon Sep 17 00:00:00 2001 From: misaochan Date: Tue, 11 Oct 2016 01:20:09 +1300 Subject: [PATCH 15/39] Remove comments --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 2 +- .../java/fr/free/nrw/commons/category/TitleCategories.java | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 340624074..51f1e03e0 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -127,7 +127,7 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); - //TODO: Add call to TitleCategories AsyncTask here + //TODO: Add call to TitleCategories AsyncTask here and return ArrayList } diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index 49a938bc1..41eb9ccda 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -13,9 +13,6 @@ import java.util.ArrayList; import fr.free.nrw.commons.CommonsApplication; -/** - * Created by misao on 11-Oct-16. - */ public class TitleCategories extends AsyncTask> { From fcd7c2a0a8caa473c3977b47c178b1d3041e8aaa Mon Sep 17 00:00:00 2001 From: misaochan Date: Wed, 12 Oct 2016 01:14:08 +1300 Subject: [PATCH 16/39] Add TAG and searchcatlimits --- .../java/fr/free/nrw/commons/category/TitleCategories.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index 41eb9ccda..952db7b05 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -16,6 +16,9 @@ import fr.free.nrw.commons.CommonsApplication; public class TitleCategories extends AsyncTask> { + private final static int SEARCH_CATS_LIMIT = 25; + private static final String TAG = TitleCategories.class.getName(); + @Override protected void onPreExecute() { super.onPreExecute(); @@ -25,8 +28,6 @@ public class TitleCategories extends AsyncTask> { protected ArrayList doInBackground(Void... voids) { - //TODO: Split this into AsyncTask - MWApi api = CommonsApplication.createMWApi(); ApiResult result; From 1a833a5412b24bd844a30a901c574dfe6c7db67b Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 13 Oct 2016 13:46:27 +1300 Subject: [PATCH 17/39] Override constructor to add title --- .../fr/free/nrw/commons/category/TitleCategories.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index 952db7b05..b66881f60 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -18,6 +18,14 @@ public class TitleCategories extends AsyncTask> { private final static int SEARCH_CATS_LIMIT = 25; private static final String TAG = TitleCategories.class.getName(); + private String title; + + public TitleCategories(String title) { + super(); + this.title = title; + // do stuff + } + @Override protected void onPreExecute() { From 973914617faf60594aa64a38e4816d173fd7f045 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 13 Oct 2016 13:46:54 +1300 Subject: [PATCH 18/39] Remove comment --- .../main/java/fr/free/nrw/commons/category/TitleCategories.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index b66881f60..f945e5924 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -23,7 +23,6 @@ public class TitleCategories extends AsyncTask> { public TitleCategories(String title) { super(); this.title = title; - // do stuff } From bda5ddddd4b99ec37953b6b8ea386f22a0781e21 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 13 Oct 2016 13:48:13 +1300 Subject: [PATCH 19/39] Define items --- .../main/java/fr/free/nrw/commons/category/TitleCategories.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index f945e5924..ee9b90409 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -37,6 +37,7 @@ public class TitleCategories extends AsyncTask> { MWApi api = CommonsApplication.createMWApi(); ApiResult result; + ArrayList items = new ArrayList<>(); //URL https://commons.wikimedia.org/w/api.php?action=query&format=xml&list=search&srwhat=text&srenablerewrites=1&srnamespace=14&srlimit=10&srsearch= try { From 95ccf0f5e2eb3ff16f52cdc55603c3f315d8af3c Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 13 Oct 2016 13:52:00 +1300 Subject: [PATCH 20/39] Add try-catch framework for getting results from asynctask --- .../nrw/commons/category/CategorizationFragment.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 51f1e03e0..063663380 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -45,6 +45,7 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; import java.util.concurrent.ScheduledThreadPoolExecutor; import fr.free.nrw.commons.CommonsApplication; @@ -127,8 +128,16 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); - //TODO: Add call to TitleCategories AsyncTask here and return ArrayList + //TODO: How to get results? + TitleCategories asyncTask = new TitleCategories(title); + try { + items = asyncTask.execute().get(); + } catch (ExecutionException e) { + + } catch (InterruptedException e) { + } + return items; } /** From dd058f51c6f7b7f302d4e2c29165ea11be4d69f1 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 13 Oct 2016 13:52:33 +1300 Subject: [PATCH 21/39] Comments --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 063663380..32fdcfbd7 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -128,12 +128,12 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); - //TODO: How to get results? + //TODO: How to get results? Maybe change to using onPostExecute instead? TitleCategories asyncTask = new TitleCategories(title); try { items = asyncTask.execute().get(); } catch (ExecutionException e) { - + } catch (InterruptedException e) { } From 9519210ec341fd113ebc1c8d2b9c54b644526ff8 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 13 Oct 2016 13:58:34 +1300 Subject: [PATCH 22/39] Add SO url in comment --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 32fdcfbd7..d476f16ae 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -128,7 +128,8 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); - //TODO: How to get results? Maybe change to using onPostExecute instead? + //TODO: Change to using onPostExecute instead + //See http://stackoverflow.com/questions/10972114/how-to-get-a-string-back-from-asynctask TitleCategories asyncTask = new TitleCategories(title); try { items = asyncTask.execute().get(); From a5f7826b6eebf34d50faaa5fe750af3ccdb1f543 Mon Sep 17 00:00:00 2001 From: misaochan Date: Thu, 20 Oct 2016 16:16:49 +1300 Subject: [PATCH 23/39] Whitespace --- .../main/java/fr/free/nrw/commons/category/TitleCategories.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index ee9b90409..954a1c6c0 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -25,7 +25,6 @@ public class TitleCategories extends AsyncTask> { this.title = title; } - @Override protected void onPreExecute() { super.onPreExecute(); @@ -34,7 +33,6 @@ public class TitleCategories extends AsyncTask> { @Override protected ArrayList doInBackground(Void... voids) { - MWApi api = CommonsApplication.createMWApi(); ApiResult result; ArrayList items = new ArrayList<>(); From 287fd98abb3b756c970736f07b43d182683645fd Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:01:46 +1300 Subject: [PATCH 24/39] Add subclass for titleCategories --- .../commons/category/CategorizationFragment.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index d476f16ae..e7c93cbfa 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -122,6 +122,7 @@ public class CategorizationFragment extends Fragment { //TODO: Search using MethodA query, but can't use MethodAUpdater because we don't want it updating when user types protected ArrayList titleCatQuery() { ArrayList items = new ArrayList(); + TitleCategories titleCategoriesSub; //Retrieve the title that was saved when user tapped submit icon SharedPreferences titleDesc = PreferenceManager.getDefaultSharedPreferences(getActivity()); @@ -132,7 +133,16 @@ public class CategorizationFragment extends Fragment { //See http://stackoverflow.com/questions/10972114/how-to-get-a-string-back-from-asynctask TitleCategories asyncTask = new TitleCategories(title); try { - items = asyncTask.execute().get(); + titleCategoriesSub = new TitleCategories(title) { + @Override + protected void onPostExecute(ArrayList result) { + super.onPostExecute(result); + + } + }; + Utils.executeAsyncTask(titleCategoriesSub); + + //items = asyncTask.execute().get(); } catch (ExecutionException e) { } catch (InterruptedException e) { @@ -141,6 +151,8 @@ public class CategorizationFragment extends Fragment { return items; } + + /** * Retrieves recently-used categories * @return a list containing recent categories From 5ba1d97704ca64e948eca32111b61d0f0aba715f Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:04:36 +1300 Subject: [PATCH 25/39] Add final var titleCatItems to allow inner class access --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index e7c93cbfa..541a88e09 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -76,6 +76,7 @@ public class CategorizationFragment extends Fragment { // LHS guarantees ordered insertions, allowing for prioritized method A results private final Set results = new LinkedHashSet(); + private final ArrayList titleCatItems = new ArrayList(); PrefixUpdater prefixUpdaterSub; MethodAUpdater methodAUpdaterSub; @@ -121,7 +122,7 @@ public class CategorizationFragment extends Fragment { //TODO: Probably add 'suggest from filename' cats here. We want it to be displayed at start, not upon typing //TODO: Search using MethodA query, but can't use MethodAUpdater because we don't want it updating when user types protected ArrayList titleCatQuery() { - ArrayList items = new ArrayList(); + TitleCategories titleCategoriesSub; //Retrieve the title that was saved when user tapped submit icon @@ -137,7 +138,7 @@ public class CategorizationFragment extends Fragment { @Override protected void onPostExecute(ArrayList result) { super.onPostExecute(result); - + titleCatItems.addAll(result); } }; Utils.executeAsyncTask(titleCategoriesSub); From a0042c7233367908f028b2764b39e5f54f48740a Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:05:11 +1300 Subject: [PATCH 26/39] Remove unnecessary try catch block --- .../nrw/commons/category/CategorizationFragment.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 541a88e09..43c10957d 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -133,7 +133,7 @@ public class CategorizationFragment extends Fragment { //TODO: Change to using onPostExecute instead //See http://stackoverflow.com/questions/10972114/how-to-get-a-string-back-from-asynctask TitleCategories asyncTask = new TitleCategories(title); - try { + titleCategoriesSub = new TitleCategories(title) { @Override protected void onPostExecute(ArrayList result) { @@ -142,14 +142,8 @@ public class CategorizationFragment extends Fragment { } }; Utils.executeAsyncTask(titleCategoriesSub); - - //items = asyncTask.execute().get(); - } catch (ExecutionException e) { - - } catch (InterruptedException e) { - - } - return items; + + return titleCatItems; } From 5254f7a808c73b70cab2e987570f1c431021181b Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:06:01 +1300 Subject: [PATCH 27/39] Remove double declaration, indent lines --- .../category/CategorizationFragment.java | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 43c10957d..beef4c899 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -130,19 +130,15 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); - //TODO: Change to using onPostExecute instead - //See http://stackoverflow.com/questions/10972114/how-to-get-a-string-back-from-asynctask - TitleCategories asyncTask = new TitleCategories(title); + titleCategoriesSub = new TitleCategories(title) { + @Override + protected void onPostExecute(ArrayList result) { + super.onPostExecute(result); + titleCatItems.addAll(result); + } + }; + Utils.executeAsyncTask(titleCategoriesSub); - titleCategoriesSub = new TitleCategories(title) { - @Override - protected void onPostExecute(ArrayList result) { - super.onPostExecute(result); - titleCatItems.addAll(result); - } - }; - Utils.executeAsyncTask(titleCategoriesSub); - return titleCatItems; } From fc20178904c17fb2137b2a5fee9eefae9d258c76 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:18:57 +1300 Subject: [PATCH 28/39] Add latch to wait for title results --- .../nrw/commons/category/CategorizationFragment.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index beef4c899..22b4c08b2 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -76,10 +76,12 @@ public class CategorizationFragment extends Fragment { // LHS guarantees ordered insertions, allowing for prioritized method A results private final Set results = new LinkedHashSet(); - private final ArrayList titleCatItems = new ArrayList(); PrefixUpdater prefixUpdaterSub; MethodAUpdater methodAUpdaterSub; + private final ArrayList titleCatItems = new ArrayList(); + final CountDownLatch mergeLatch = new CountDownLatch(2); + private ContentProviderClient client; protected final static int SEARCH_CATS_LIMIT = 25; @@ -135,6 +137,7 @@ public class CategorizationFragment extends Fragment { protected void onPostExecute(ArrayList result) { super.onPostExecute(result); titleCatItems.addAll(result); + mergeLatch.countDown(); } }; Utils.executeAsyncTask(titleCategoriesSub); @@ -169,6 +172,7 @@ public class CategorizationFragment extends Fragment { throw new RuntimeException(e); } + mergeLatch.countDown(); return items; } @@ -177,6 +181,7 @@ public class CategorizationFragment extends Fragment { * @return a list containing merged categories */ protected ArrayList mergeItems() { + Set mergedItems = new LinkedHashSet(); if (MwVolleyApi.GpsCatExists.getGpsCatExists()) { @@ -192,6 +197,11 @@ public class CategorizationFragment extends Fragment { //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code ArrayList mergedItemsList = new ArrayList(mergedItems); + try { + mergeLatch.await(); + } catch (InterruptedException e) { + Log.e(TAG, "Interrupted Exception: ", e); + } return mergedItemsList; } From 2ea7e6e5fe4c036d9d48360e7c41ef132d780865 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:21:14 +1300 Subject: [PATCH 29/39] Add logging --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 22b4c08b2..180a8a4bf 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -184,6 +184,8 @@ public class CategorizationFragment extends Fragment { Set mergedItems = new LinkedHashSet(); + Log.d(TAG, "Merging items..."); + if (MwVolleyApi.GpsCatExists.getGpsCatExists()) { List gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); mergedItems.addAll(gpsItems); @@ -199,6 +201,7 @@ public class CategorizationFragment extends Fragment { ArrayList mergedItemsList = new ArrayList(mergedItems); try { mergeLatch.await(); + Log.d(TAG, "Waited for merge"); } catch (InterruptedException e) { Log.e(TAG, "Interrupted Exception: ", e); } From 82b5904a682ccb3a750cab195a71dd31558adf6f Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:22:28 +1300 Subject: [PATCH 30/39] Changed latch to only wait for titleCats --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 180a8a4bf..895ce4212 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -80,7 +80,7 @@ public class CategorizationFragment extends Fragment { MethodAUpdater methodAUpdaterSub; private final ArrayList titleCatItems = new ArrayList(); - final CountDownLatch mergeLatch = new CountDownLatch(2); + final CountDownLatch mergeLatch = new CountDownLatch(1); private ContentProviderClient client; @@ -171,8 +171,6 @@ public class CategorizationFragment extends Fragment { catch (RemoteException e) { throw new RuntimeException(e); } - - mergeLatch.countDown(); return items; } From fa680f0369e24b0b4479df561c9b9f791ef84856 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:29:03 +1300 Subject: [PATCH 31/39] Moved addAll lines to after latch.await() --- .../category/CategorizationFragment.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 895ce4212..c51394dd4 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -181,28 +181,32 @@ public class CategorizationFragment extends Fragment { protected ArrayList mergeItems() { Set mergedItems = new LinkedHashSet(); + List gpsItems = new ArrayList(); - Log.d(TAG, "Merging items..."); + Log.d(TAG, "Calling APIs for GPS cats, title cats and recent cats..."); if (MwVolleyApi.GpsCatExists.getGpsCatExists()) { - List gpsItems = new ArrayList(MwVolleyApi.getGpsCat()); - mergedItems.addAll(gpsItems); + gpsItems.addAll(MwVolleyApi.getGpsCat()); + } List titleItems = new ArrayList(titleCatQuery()); - mergedItems.addAll(titleItems); - List recentItems = new ArrayList(recentCatQuery()); - mergedItems.addAll(recentItems); - //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code - ArrayList mergedItemsList = new ArrayList(mergedItems); try { mergeLatch.await(); Log.d(TAG, "Waited for merge"); } catch (InterruptedException e) { Log.e(TAG, "Interrupted Exception: ", e); } + + mergedItems.addAll(gpsItems); + mergedItems.addAll(titleItems); + mergedItems.addAll(recentItems); + + //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code + ArrayList mergedItemsList = new ArrayList(mergedItems); + return mergedItemsList; } From 0fcdf4e5f9fd991733aba3a79d81564dd28b6c0d Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:40:37 +1300 Subject: [PATCH 32/39] Move latch to recentCatQuery --- .../category/CategorizationFragment.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index c51394dd4..53e18e810 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -154,6 +154,14 @@ public class CategorizationFragment extends Fragment { protected ArrayList recentCatQuery() { ArrayList items = new ArrayList(); + + try { + mergeLatch.await(); + Log.d(TAG, "Waited for merge"); + } catch (InterruptedException e) { + Log.e(TAG, "Interrupted Exception: ", e); + } + try { Cursor cursor = client.query( CategoryContentProvider.BASE_URI, @@ -188,24 +196,16 @@ public class CategorizationFragment extends Fragment { if (MwVolleyApi.GpsCatExists.getGpsCatExists()) { gpsItems.addAll(MwVolleyApi.getGpsCat()); - } - List titleItems = new ArrayList(titleCatQuery()); List recentItems = new ArrayList(recentCatQuery()); - try { - mergeLatch.await(); - Log.d(TAG, "Waited for merge"); - } catch (InterruptedException e) { - Log.e(TAG, "Interrupted Exception: ", e); - } - mergedItems.addAll(gpsItems); mergedItems.addAll(titleItems); mergedItems.addAll(recentItems); //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code ArrayList mergedItemsList = new ArrayList(mergedItems); + Log.d(TAG, "Merged item list: " + mergedItemsList); return mergedItemsList; } From 32246eebd586a7fdb7fafecf8f6cb8caf6668ee2 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:43:40 +1300 Subject: [PATCH 33/39] Add logs --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 53e18e810..82fac60dc 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -154,7 +154,6 @@ public class CategorizationFragment extends Fragment { protected ArrayList recentCatQuery() { ArrayList items = new ArrayList(); - try { mergeLatch.await(); Log.d(TAG, "Waited for merge"); @@ -195,13 +194,17 @@ public class CategorizationFragment extends Fragment { if (MwVolleyApi.GpsCatExists.getGpsCatExists()) { gpsItems.addAll(MwVolleyApi.getGpsCat()); + } List titleItems = new ArrayList(titleCatQuery()); List recentItems = new ArrayList(recentCatQuery()); mergedItems.addAll(gpsItems); + Log.d(TAG, "Adding GPS items: " + gpsItems); mergedItems.addAll(titleItems); + Log.d(TAG, "Adding title items: " + titleItems); mergedItems.addAll(recentItems); + Log.d(TAG, "Adding recent items: " + recentItems); //Needs to be an ArrayList and not a List unless we want to modify a big portion of preexisting code ArrayList mergedItemsList = new ArrayList(mergedItems); From a04312919e101c70afcedd2b663a5cd6df98bcf3 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:50:26 +1300 Subject: [PATCH 34/39] Add logs --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 82fac60dc..e67db9700 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -136,7 +136,9 @@ public class CategorizationFragment extends Fragment { @Override protected void onPostExecute(ArrayList result) { super.onPostExecute(result); + Log.d(TAG, "Results in onPostExecute: " + result); titleCatItems.addAll(result); + Log.d(TAG, "TitleCatItems in onPostExecute: " + titleCatItems); mergeLatch.countDown(); } }; From b9f6bd55ca89281d9b2aae214415198d0451b7d0 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 17:57:36 +1300 Subject: [PATCH 35/39] Added mergeLatch.await() before titleCatItems are returned --- .../nrw/commons/category/CategorizationFragment.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index e67db9700..ac63141e9 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -142,8 +142,13 @@ public class CategorizationFragment extends Fragment { mergeLatch.countDown(); } }; - Utils.executeAsyncTask(titleCategoriesSub); - + titleCategoriesSub.execute(); + Log.d(TAG, "TitleCatItems in titleCatQuery: " + titleCatItems); + try { + mergeLatch.await(); + } catch (InterruptedException e) { + Log.e(TAG, "Interrupted exception: ", e); + } return titleCatItems; } From 9ea223e32f972f8cb1b73d71031341eb8c8633b1 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 18:04:10 +1300 Subject: [PATCH 36/39] Move mergeLatch.await() to a more sensible location --- .../category/CategorizationFragment.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index ac63141e9..a0dae932c 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -160,14 +160,7 @@ public class CategorizationFragment extends Fragment { */ protected ArrayList recentCatQuery() { ArrayList items = new ArrayList(); - - try { - mergeLatch.await(); - Log.d(TAG, "Waited for merge"); - } catch (InterruptedException e) { - Log.e(TAG, "Interrupted Exception: ", e); - } - + try { Cursor cursor = client.query( CategoryContentProvider.BASE_URI, @@ -195,17 +188,24 @@ public class CategorizationFragment extends Fragment { protected ArrayList mergeItems() { Set mergedItems = new LinkedHashSet(); - List gpsItems = new ArrayList(); Log.d(TAG, "Calling APIs for GPS cats, title cats and recent cats..."); + List gpsItems = new ArrayList(); if (MwVolleyApi.GpsCatExists.getGpsCatExists()) { gpsItems.addAll(MwVolleyApi.getGpsCat()); } - List titleItems = new ArrayList(titleCatQuery()); List recentItems = new ArrayList(recentCatQuery()); + //Await results of titleItems, which is likely to come in last + try { + mergeLatch.await(); + Log.d(TAG, "Waited for merge"); + } catch (InterruptedException e) { + Log.e(TAG, "Interrupted Exception: ", e); + } + mergedItems.addAll(gpsItems); Log.d(TAG, "Adding GPS items: " + gpsItems); mergedItems.addAll(titleItems); From 519afe3f4707e496fce47954f1aca000e4270046 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 18:09:45 +1300 Subject: [PATCH 37/39] Add comments --- .../commons/category/CategorizationFragment.java | 14 +++++++++----- .../free/nrw/commons/category/TitleCategories.java | 6 +++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index a0dae932c..b28c1a04b 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -121,8 +121,10 @@ public class CategorizationFragment extends Fragment { } } - //TODO: Probably add 'suggest from filename' cats here. We want it to be displayed at start, not upon typing - //TODO: Search using MethodA query, but can't use MethodAUpdater because we don't want it updating when user types + /** + * Retrieves category suggestions from title input + * @return a list containing title-related categories + */ protected ArrayList titleCatQuery() { TitleCategories titleCategoriesSub; @@ -132,6 +134,7 @@ public class CategorizationFragment extends Fragment { String title = titleDesc.getString("Title", ""); Log.d(TAG, "Title: " + title); + //Override onPostExecute to access the results of async API call titleCategoriesSub = new TitleCategories(title) { @Override protected void onPostExecute(ArrayList result) { @@ -142,8 +145,11 @@ public class CategorizationFragment extends Fragment { mergeLatch.countDown(); } }; + titleCategoriesSub.execute(); Log.d(TAG, "TitleCatItems in titleCatQuery: " + titleCatItems); + + //Only return titleCatItems after API call has finished try { mergeLatch.await(); } catch (InterruptedException e) { @@ -152,15 +158,13 @@ public class CategorizationFragment extends Fragment { return titleCatItems; } - - /** * Retrieves recently-used categories * @return a list containing recent categories */ protected ArrayList recentCatQuery() { ArrayList items = new ArrayList(); - + try { Cursor cursor = client.query( CategoryContentProvider.BASE_URI, diff --git a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java index 954a1c6c0..7d5a7607e 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java +++ b/app/src/main/java/fr/free/nrw/commons/category/TitleCategories.java @@ -13,7 +13,11 @@ import java.util.ArrayList; import fr.free.nrw.commons.CommonsApplication; - +/** + * Sends asynchronous queries to the Commons MediaWiki API to retrieve categories that are related to + * the title entered in previous screen. The 'srsearch' action-specific parameter is used for this + * purpose. This class should be subclassed in CategorizationFragment.java to add the results to recent and GPS cats. + */ public class TitleCategories extends AsyncTask> { private final static int SEARCH_CATS_LIMIT = 25; From 879b7d326318b3fcc08604999b9b0871b02072ef Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 18:11:35 +1300 Subject: [PATCH 38/39] Switch back to Utils.executeAsyncTask --- .../fr/free/nrw/commons/category/CategorizationFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index b28c1a04b..093984cbf 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -146,7 +146,7 @@ public class CategorizationFragment extends Fragment { } }; - titleCategoriesSub.execute(); + Utils.executeAsyncTask(titleCategoriesSub); Log.d(TAG, "TitleCatItems in titleCatQuery: " + titleCatItems); //Only return titleCatItems after API call has finished From 2496e376ecfeb8289315e1de9a7fa0591377cce8 Mon Sep 17 00:00:00 2001 From: misaochan Date: Fri, 21 Oct 2016 18:19:04 +1300 Subject: [PATCH 39/39] DEBUG MODE OFF --- .../main/java/fr/free/nrw/commons/upload/UploadController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java index 6d95bd717..049249421 100644 --- a/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java +++ b/app/src/main/java/fr/free/nrw/commons/upload/UploadController.java @@ -156,7 +156,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); } });