From e405b67bfb0449aec226ec422fba30252a991006 Mon Sep 17 00:00:00 2001 From: Achal Shantharam Date: Mon, 17 Jul 2017 12:00:20 +0530 Subject: [PATCH] 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)); } }