Move category helper functions to CategoryProvider

Don't change anything yet, just move them.
This commit is contained in:
Peter Serwylo 2016-10-13 12:25:16 +11:00
parent a7a7f77b42
commit 634fe1084a
4 changed files with 64 additions and 56 deletions

View File

@ -10,7 +10,6 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Preferences;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.Schema.ApkTable; import org.fdroid.fdroid.data.Schema.ApkTable;
import org.fdroid.fdroid.data.Schema.AppPrefsTable; 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.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -94,51 +92,6 @@ public class AppProvider extends FDroidProvider {
return apps; 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<String> 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<String> 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<String> 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) { public static App findHighestPriorityMetadata(ContentResolver resolver, String packageName) {
final Uri uri = getHighestPriorityMetadataUri(packageName); final Uri uri = getHighestPriorityMetadataUri(packageName);
return cursorToApp(resolver.query(uri, Cols.ALL, null, null, null)); return cursorToApp(resolver.query(uri, Cols.ALL, null, null, null));

View File

@ -1,5 +1,6 @@
package org.fdroid.fdroid.data; package org.fdroid.fdroid.data;
import android.content.ContentResolver;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.UriMatcher; import android.content.UriMatcher;
@ -7,8 +8,16 @@ import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import org.fdroid.fdroid.R;
import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.data.Schema.CategoryTable.Cols; 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 class CategoryProvider extends FDroidProvider {
public static final class Helper { public static final class Helper {
@ -43,6 +52,51 @@ public class CategoryProvider extends FDroidProvider {
cursor.close(); 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<String> 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<String> 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<String> 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 { private class Query extends QueryBuilder {

View File

@ -26,6 +26,7 @@ import org.fdroid.fdroid.Utils;
import org.fdroid.fdroid.compat.ArrayAdapterCompat; import org.fdroid.fdroid.compat.ArrayAdapterCompat;
import org.fdroid.fdroid.compat.CursorAdapterCompat; import org.fdroid.fdroid.compat.CursorAdapterCompat;
import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.data.CategoryProvider;
import org.fdroid.fdroid.views.AppListAdapter; import org.fdroid.fdroid.views.AppListAdapter;
import org.fdroid.fdroid.views.AvailableAppListAdapter; import org.fdroid.fdroid.views.AvailableAppListAdapter;
@ -94,7 +95,7 @@ public class AvailableAppsFragment extends AppListFragment implements
new AsyncTask<Void, Void, List<String>>() { new AsyncTask<Void, Void, List<String>>() {
@Override @Override
protected List<String> doInBackground(Void... params) { protected List<String> doInBackground(Void... params) {
return AppProvider.Helper.categories(activity); return CategoryProvider.Helper.categories(activity);
} }
@Override @Override
@ -132,7 +133,7 @@ public class AvailableAppsFragment extends AppListFragment implements
categorySpinner = spinner; categorySpinner = spinner;
categorySpinner.setId(R.id.category_spinner); categorySpinner.setId(R.id.category_spinner);
categories = AppProvider.Helper.categories(getActivity()); categories = CategoryProvider.Helper.categories(getActivity());
ArrayAdapter<String> adapter = new ArrayAdapter<>( ArrayAdapter<String> adapter = new ArrayAdapter<>(
getActivity(), android.R.layout.simple_spinner_item, translateCategories(getActivity(), categories)); 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); categoryWrapper = view.findViewById(R.id.category_wrapper);
setupCategorySpinner((Spinner) view.findViewById(R.id.category_spinner)); setupCategorySpinner((Spinner) view.findViewById(R.id.category_spinner));
defaultCategory = AppProvider.Helper.getCategoryWhatsNew(getActivity()); defaultCategory = CategoryProvider.Helper.getCategoryWhatsNew(getActivity());
return view; return view;
} }
@Override @Override
protected Uri getDataUri() { protected Uri getDataUri() {
if (currentCategory == null || currentCategory.equals(AppProvider.Helper.getCategoryAll(getActivity()))) { if (currentCategory == null || currentCategory.equals(CategoryProvider.Helper.getCategoryAll(getActivity()))) {
return AppProvider.getContentUri(); return AppProvider.getContentUri();
} }
if (currentCategory.equals(AppProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) { if (currentCategory.equals(CategoryProvider.Helper.getCategoryRecentlyUpdated(getActivity()))) {
return AppProvider.getRecentlyUpdatedUri(); return AppProvider.getRecentlyUpdatedUri();
} }
if (currentCategory.equals(AppProvider.Helper.getCategoryWhatsNew(getActivity()))) { if (currentCategory.equals(CategoryProvider.Helper.getCategoryWhatsNew(getActivity()))) {
return AppProvider.getNewlyAddedUri(); return AppProvider.getNewlyAddedUri();
} }
return AppProvider.getCategoryUri(currentCategory); return AppProvider.getCategoryUri(currentCategory);

View File

@ -93,7 +93,7 @@ public class CategoryProviderTest extends FDroidProviderTest {
insertAppWithCategory("com.rock", "Rock", "Mineral"); insertAppWithCategory("com.rock", "Rock", "Mineral");
insertAppWithCategory("com.banana", "Banana", "Vegetable"); insertAppWithCategory("com.banana", "Banana", "Vegetable");
List<String> categories = AppProvider.Helper.categories(context); List<String> categories = CategoryProvider.Helper.categories(context);
String[] expected = new String[] { String[] expected = new String[] {
context.getResources().getString(R.string.category_Whats_New), context.getResources().getString(R.string.category_Whats_New),
context.getResources().getString(R.string.category_Recently_Updated), 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.dog.rock.apple", "Dog-Rock-Apple", "Animal,Mineral,Vegetable");
insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable"); insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable");
List<String> categories = AppProvider.Helper.categories(context); List<String> categories = CategoryProvider.Helper.categories(context);
String[] expected = new String[] { String[] expected = new String[] {
context.getResources().getString(R.string.category_Whats_New), context.getResources().getString(R.string.category_Whats_New),
context.getResources().getString(R.string.category_Recently_Updated), 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," + "Running,Shooting,Jumping,Bleh,Sneh,Pleh,Blah,Test category," +
"The quick brown fox jumps over the lazy dog,With apostrophe's"); "The quick brown fox jumps over the lazy dog,With apostrophe's");
List<String> categoriesLonger = AppProvider.Helper.categories(context); List<String> categoriesLonger = CategoryProvider.Helper.categories(context);
String[] expectedLonger = new String[] { String[] expectedLonger = new String[] {
context.getResources().getString(R.string.category_Whats_New), context.getResources().getString(R.string.category_Whats_New),
context.getResources().getString(R.string.category_Recently_Updated), context.getResources().getString(R.string.category_Recently_Updated),