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
* @return Filtered category list
*/
private List<String> filterYears(List<String> items) {
private List<String> filterIrrelevantResults(List<String> items) {
Iterator<String> iterator;
@ -62,15 +62,18 @@ public class PrefixUpdater extends AsyncTask<Void, Void, List<String>> {
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<Void, Void, List<String>> {
if (TextUtils.isEmpty(filter)) {
ArrayList<String> 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<String> 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<Void, Void, List<String>> {
}
Timber.d("Found categories from Prefix search, waiting for filter");
return new ArrayList<>(filterYears(categories));
return new ArrayList<>(filterIrrelevantResults(categories));
}
}