From 634fe1084a37e956e4f16b994218c8761cf7ebc9 Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Thu, 13 Oct 2016 12:25:16 +1100 Subject: [PATCH] Move category helper functions to CategoryProvider Don't change anything yet, just move them. --- .../org/fdroid/fdroid/data/AppProvider.java | 47 ---------------- .../fdroid/fdroid/data/CategoryProvider.java | 54 +++++++++++++++++++ .../fragments/AvailableAppsFragment.java | 13 ++--- .../fdroid/data/CategoryProviderTest.java | 6 +-- 4 files changed, 64 insertions(+), 56 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java index a04e845f0..e063febe6 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java @@ -10,7 +10,6 @@ import android.text.TextUtils; import android.util.Log; import org.fdroid.fdroid.Preferences; -import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Schema.ApkTable; import org.fdroid.fdroid.data.Schema.AppPrefsTable; @@ -24,7 +23,6 @@ import org.fdroid.fdroid.data.Schema.RepoTable; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -94,51 +92,6 @@ public class AppProvider extends FDroidProvider { return apps; } - public static String getCategoryAll(Context context) { - return context.getString(R.string.category_All); - } - - public static String getCategoryWhatsNew(Context context) { - return context.getString(R.string.category_Whats_New); - } - - public static String getCategoryRecentlyUpdated(Context context) { - return context.getString(R.string.category_Recently_Updated); - } - - public static List categories(Context context) { - final ContentResolver resolver = context.getContentResolver(); - final Uri uri = getContentUri(); - final String[] projection = {Cols.Categories.CATEGORIES}; - final Cursor cursor = resolver.query(uri, projection, null, null, null); - final Set categorySet = new HashSet<>(); - if (cursor != null) { - if (cursor.getCount() > 0) { - cursor.moveToFirst(); - while (!cursor.isAfterLast()) { - final String categoriesString = cursor.getString(0); - String[] categoriesList = Utils.parseCommaSeparatedString(categoriesString); - if (categoriesList != null) { - Collections.addAll(categorySet, categoriesList); - } - cursor.moveToNext(); - } - } - cursor.close(); - } - final List categories = new ArrayList<>(categorySet); - Collections.sort(categories); - - // Populate the category list with the real categories, and the - // locally generated meta-categories for "What's New", "Recently - // Updated" and "All"... - categories.add(0, getCategoryAll(context)); - categories.add(0, getCategoryRecentlyUpdated(context)); - categories.add(0, getCategoryWhatsNew(context)); - - return categories; - } - public static App findHighestPriorityMetadata(ContentResolver resolver, String packageName) { final Uri uri = getHighestPriorityMetadataUri(packageName); return cursorToApp(resolver.query(uri, Cols.ALL, null, null, null)); diff --git a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java index a534d83b2..b185402e2 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java @@ -1,5 +1,6 @@ package org.fdroid.fdroid.data; +import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.UriMatcher; @@ -7,8 +8,16 @@ import android.database.Cursor; import android.net.Uri; import android.support.annotation.NonNull; +import org.fdroid.fdroid.R; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Schema.CategoryTable.Cols; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + public class CategoryProvider extends FDroidProvider { public static final class Helper { @@ -43,6 +52,51 @@ public class CategoryProvider extends FDroidProvider { cursor.close(); } } + + public static String getCategoryAll(Context context) { + return context.getString(R.string.category_All); + } + + public static String getCategoryWhatsNew(Context context) { + return context.getString(R.string.category_Whats_New); + } + + public static String getCategoryRecentlyUpdated(Context context) { + return context.getString(R.string.category_Recently_Updated); + } + + public static List categories(Context context) { + final ContentResolver resolver = context.getContentResolver(); + final Uri uri = AppProvider.getContentUri(); + final String[] projection = {Schema.AppMetadataTable.Cols.Categories.CATEGORIES}; + final Cursor cursor = resolver.query(uri, projection, null, null, null); + final Set categorySet = new HashSet<>(); + if (cursor != null) { + if (cursor.getCount() > 0) { + cursor.moveToFirst(); + while (!cursor.isAfterLast()) { + final String categoriesString = cursor.getString(0); + String[] categoriesList = Utils.parseCommaSeparatedString(categoriesString); + if (categoriesList != null) { + Collections.addAll(categorySet, categoriesList); + } + cursor.moveToNext(); + } + } + cursor.close(); + } + final List categories = new ArrayList<>(categorySet); + Collections.sort(categories); + + // Populate the category list with the real categories, and the + // locally generated meta-categories for "What's New", "Recently + // Updated" and "All"... + categories.add(0, getCategoryAll(context)); + categories.add(0, getCategoryRecentlyUpdated(context)); + categories.add(0, getCategoryWhatsNew(context)); + + return categories; + } } private class Query extends QueryBuilder { diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java index fe770ea66..dfd4587aa 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/AvailableAppsFragment.java @@ -26,6 +26,7 @@ import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.compat.ArrayAdapterCompat; import org.fdroid.fdroid.compat.CursorAdapterCompat; import org.fdroid.fdroid.data.AppProvider; +import org.fdroid.fdroid.data.CategoryProvider; import org.fdroid.fdroid.views.AppListAdapter; import org.fdroid.fdroid.views.AvailableAppListAdapter; @@ -94,7 +95,7 @@ public class AvailableAppsFragment extends AppListFragment implements new AsyncTask>() { @Override protected List doInBackground(Void... params) { - return AppProvider.Helper.categories(activity); + return CategoryProvider.Helper.categories(activity); } @Override @@ -132,7 +133,7 @@ public class AvailableAppsFragment extends AppListFragment implements categorySpinner = spinner; categorySpinner.setId(R.id.category_spinner); - categories = AppProvider.Helper.categories(getActivity()); + categories = CategoryProvider.Helper.categories(getActivity()); ArrayAdapter adapter = new ArrayAdapter<>( getActivity(), android.R.layout.simple_spinner_item, translateCategories(getActivity(), categories)); @@ -163,20 +164,20 @@ public class AvailableAppsFragment extends AppListFragment implements categoryWrapper = view.findViewById(R.id.category_wrapper); setupCategorySpinner((Spinner) view.findViewById(R.id.category_spinner)); - defaultCategory = AppProvider.Helper.getCategoryWhatsNew(getActivity()); + defaultCategory = CategoryProvider.Helper.getCategoryWhatsNew(getActivity()); return view; } @Override protected Uri getDataUri() { - if (currentCategory == null || currentCategory.equals(AppProvider.Helper.getCategoryAll(getActivity()))) { + if (currentCategory == null || currentCategory.equals(CategoryProvider.Helper.getCategoryAll(getActivity()))) { return AppProvider.getContentUri(); } - if (currentCategory.equals(AppProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) { + if (currentCategory.equals(CategoryProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) { return AppProvider.getRecentlyUpdatedUri(); } - if (currentCategory.equals(AppProvider.Helper.getCategoryWhatsNew(getActivity()))) { + if (currentCategory.equals(CategoryProvider.Helper.getCategoryWhatsNew(getActivity()))) { return AppProvider.getNewlyAddedUri(); } return AppProvider.getCategoryUri(currentCategory); diff --git a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java index 2fa3dbe20..0ef72f44b 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java @@ -93,7 +93,7 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.rock", "Rock", "Mineral"); insertAppWithCategory("com.banana", "Banana", "Vegetable"); - List categories = AppProvider.Helper.categories(context); + List categories = CategoryProvider.Helper.categories(context); String[] expected = new String[] { context.getResources().getString(R.string.category_Whats_New), context.getResources().getString(R.string.category_Recently_Updated), @@ -111,7 +111,7 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.dog.rock.apple", "Dog-Rock-Apple", "Animal,Mineral,Vegetable"); insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable"); - List categories = AppProvider.Helper.categories(context); + List categories = CategoryProvider.Helper.categories(context); String[] expected = new String[] { context.getResources().getString(R.string.category_Whats_New), context.getResources().getString(R.string.category_Recently_Updated), @@ -127,7 +127,7 @@ public class CategoryProviderTest extends FDroidProviderTest { "Running,Shooting,Jumping,Bleh,Sneh,Pleh,Blah,Test category," + "The quick brown fox jumps over the lazy dog,With apostrophe's"); - List categoriesLonger = AppProvider.Helper.categories(context); + List categoriesLonger = CategoryProvider.Helper.categories(context); String[] expectedLonger = new String[] { context.getResources().getString(R.string.category_Whats_New), context.getResources().getString(R.string.category_Recently_Updated),