From e405b67bfb0449aec226ec422fba30252a991006 Mon Sep 17 00:00:00 2001 From: Achal Shantharam Date: Mon, 17 Jul 2017 12:00:20 +0530 Subject: [PATCH 1/3] Fix for issue #750 irrelevant categories --- .../nrw/commons/category/PrefixUpdater.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) 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 121ae5a1c..18c29b1b8 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 @@ -47,7 +47,7 @@ public class PrefixUpdater extends AsyncTask> { * @param items Unfiltered list of categories * @return Filtered category list */ - private List filterYears(List items) { + private List filterIrrelevantResults(List items) { Iterator iterator; @@ -62,15 +62,18 @@ public class PrefixUpdater extends AsyncTask> { Timber.d("Previous year: %s", prevYearInString); //Copy to Iterator to prevent ConcurrentModificationException when removing item - for (iterator = items.iterator(); iterator.hasNext(); ) { + for(iterator = items.iterator(); iterator.hasNext();) { String s = iterator.next(); //Check if s contains a 4-digit word anywhere within the string (.* is wildcard) //And that s does not equal the current year or previous year - if (s.matches(".*(19|20)\\d{2}.*") && !s.contains(yearInString) && !s.contains(prevYearInString)) { - Timber.d("Filtering out year %s", s); + //And if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750) + if(s.matches(".*(19|20)\\d{2}.*") && !s.contains(yearInString) && !s.contains(prevYearInString) + ||s.matches("(.*)needing(.*)")||s.matches("(.*)taken on(.*)")) { + Timber.d("Filtering out irrelevant result: %s", s); iterator.remove(); } + } Timber.d("Items: %s", items); @@ -83,14 +86,14 @@ public class PrefixUpdater extends AsyncTask> { if (TextUtils.isEmpty(filter)) { ArrayList mergedItems = new ArrayList<>(catFragment.mergeItems()); Timber.d("Merged items, waiting for filter"); - return new ArrayList<>(filterYears(mergedItems)); + return new ArrayList<>(filterIrrelevantResults(mergedItems)); } //if user types in something that is in cache, return cached category if (catFragment.categoriesCache.containsKey(filter)) { ArrayList cachedItems = new ArrayList<>(catFragment.categoriesCache.get(filter)); Timber.d("Found cache items, waiting for filter"); - return new ArrayList<>(filterYears(cachedItems)); + return new ArrayList<>(filterIrrelevantResults(cachedItems)); } //otherwise if user has typed something in that isn't in cache, search API for matching categories @@ -107,6 +110,6 @@ public class PrefixUpdater extends AsyncTask> { } Timber.d("Found categories from Prefix search, waiting for filter"); - return new ArrayList<>(filterYears(categories)); + return new ArrayList<>(filterIrrelevantResults(categories)); } } From 3681176f54d1fbd00408216a4ed5641b583d3054 Mon Sep 17 00:00:00 2001 From: Achal Shantharam Date: Mon, 17 Jul 2017 12:03:13 +0530 Subject: [PATCH 2/3] Fix for issue #750 irrelevant categories --- .../main/java/fr/free/nrw/commons/category/PrefixUpdater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 18c29b1b8..af470f0b3 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 @@ -68,7 +68,7 @@ public class PrefixUpdater extends AsyncTask> { //Check if s contains a 4-digit word anywhere within the string (.* is wildcard) //And that s does not equal the current year or previous year //And if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750) - if(s.matches(".*(19|20)\\d{2}.*") && !s.contains(yearInString) && !s.contains(prevYearInString) + if((s.matches(".*(19|20)\\d{2}.*") && !s.contains(yearInString) && !s.contains(prevYearInString)) ||s.matches("(.*)needing(.*)")||s.matches("(.*)taken on(.*)")) { Timber.d("Filtering out irrelevant result: %s", s); iterator.remove(); From e46588e3369db0edaf224414f27180015766bba1 Mon Sep 17 00:00:00 2001 From: Achal Shantharam Date: Mon, 17 Jul 2017 17:03:18 +0530 Subject: [PATCH 3/3] Adding whitespaces --- .../java/fr/free/nrw/commons/category/PrefixUpdater.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 af470f0b3..773f758d0 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 @@ -62,14 +62,14 @@ public class PrefixUpdater extends AsyncTask> { Timber.d("Previous year: %s", prevYearInString); //Copy to Iterator to prevent ConcurrentModificationException when removing item - for(iterator = items.iterator(); iterator.hasNext();) { + for (iterator = items.iterator(); iterator.hasNext();) { String s = iterator.next(); //Check if s contains a 4-digit word anywhere within the string (.* is wildcard) //And that s does not equal the current year or previous year //And if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750) - if((s.matches(".*(19|20)\\d{2}.*") && !s.contains(yearInString) && !s.contains(prevYearInString)) - ||s.matches("(.*)needing(.*)")||s.matches("(.*)taken on(.*)")) { + if ((s.matches(".*(19|20)\\d{2}.*") && !s.contains(yearInString) && !s.contains(prevYearInString)) + || s.matches("(.*)needing(.*)")||s.matches("(.*)taken on(.*)")) { Timber.d("Filtering out irrelevant result: %s", s); iterator.remove(); }