Fix for issue#750
This commit is contained in:
Josephine Lim 2017-07-18 17:20:24 +10:00 committed by GitHub
commit 3db421ad8c

View file

@ -47,7 +47,7 @@ public class PrefixUpdater extends AsyncTask<Void, Void, List<String>> {
* @param items Unfiltered list of categories * @param items Unfiltered list of categories
* @return Filtered category list * @return Filtered category list
*/ */
private List<String> filterYears(List<String> items) { private List<String> filterIrrelevantResults(List<String> items) {
Iterator<String> iterator; Iterator<String> iterator;
@ -62,15 +62,18 @@ public class PrefixUpdater extends AsyncTask<Void, Void, List<String>> {
Timber.d("Previous year: %s", prevYearInString); Timber.d("Previous year: %s", prevYearInString);
//Copy to Iterator to prevent ConcurrentModificationException when removing item //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(); String s = iterator.next();
//Check if s contains a 4-digit word anywhere within the string (.* is wildcard) //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 that s does not equal the current year or previous year
if (s.matches(".*(19|20)\\d{2}.*") && !s.contains(yearInString) && !s.contains(prevYearInString)) { //And if it is an irrelevant category such as Media_needing_categories_as_of_16_June_2017(Issue #750)
Timber.d("Filtering out year %s", s); 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(); iterator.remove();
} }
} }
Timber.d("Items: %s", items); Timber.d("Items: %s", items);
@ -83,14 +86,14 @@ public class PrefixUpdater extends AsyncTask<Void, Void, List<String>> {
if (TextUtils.isEmpty(filter)) { if (TextUtils.isEmpty(filter)) {
ArrayList<String> mergedItems = new ArrayList<>(catFragment.mergeItems()); ArrayList<String> mergedItems = new ArrayList<>(catFragment.mergeItems());
Timber.d("Merged items, waiting for filter"); 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 user types in something that is in cache, return cached category
if (catFragment.categoriesCache.containsKey(filter)) { if (catFragment.categoriesCache.containsKey(filter)) {
ArrayList<String> cachedItems = new ArrayList<>(catFragment.categoriesCache.get(filter)); ArrayList<String> cachedItems = new ArrayList<>(catFragment.categoriesCache.get(filter));
Timber.d("Found cache items, waiting for 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 //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<Void, Void, List<String>> {
} }
Timber.d("Found categories from Prefix search, waiting for filter"); Timber.d("Found categories from Prefix search, waiting for filter");
return new ArrayList<>(filterYears(categories)); return new ArrayList<>(filterIrrelevantResults(categories));
} }
} }