diff --git a/app/src/main/java/org/fdroid/fdroid/data/App.java b/app/src/main/java/org/fdroid/fdroid/data/App.java index c72d184b9..671fca3cd 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/App.java +++ b/app/src/main/java/org/fdroid/fdroid/data/App.java @@ -503,7 +503,7 @@ public class App extends ValueObject implements Comparable, Parcelable { values.put(Cols.SUGGESTED_VERSION_CODE, suggestedVersionCode); values.put(Cols.UPSTREAM_VERSION_NAME, upstreamVersionName); values.put(Cols.UPSTREAM_VERSION_CODE, upstreamVersionCode); - values.put(Cols.Categories.CATEGORIES, Utils.serializeCommaSeparatedString(categories)); + values.put(Cols.ForWriting.Categories.CATEGORIES, Utils.serializeCommaSeparatedString(categories)); values.put(Cols.ANTI_FEATURES, Utils.serializeCommaSeparatedString(antiFeatures)); values.put(Cols.REQUIREMENTS, Utils.serializeCommaSeparatedString(requirements)); values.put(Cols.IS_COMPATIBLE, compatible ? 1 : 0); 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 e063febe6..e59735240 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java @@ -310,9 +310,6 @@ public class AppProvider extends FDroidProvider { case Cols._COUNT: appendCountField(); break; - case Cols.Categories.CATEGORIES: - appendCategoriesField(); - break; default: appendField(field, getTableName()); break; @@ -341,10 +338,6 @@ public class AppProvider extends FDroidProvider { appendField(fieldName, "suggestedApk", alias); } - private void appendCategoriesField() { - appendField("GROUP_CONCAT(" + CategoryTable.NAME + "." + CategoryTable.Cols.NAME + ")", null, Cols.Categories.CATEGORIES); - } - private void addInstalledAppVersionName() { addInstalledAppField( InstalledAppTable.Cols.VERSION_NAME, @@ -862,12 +855,12 @@ public class AppProvider extends FDroidProvider { String[] categories = null; boolean saveCategories = false; - if (values.containsKey(Cols.Categories.CATEGORIES)) { + if (values.containsKey(Cols.ForWriting.Categories.CATEGORIES)) { // Hold onto these categories, so that after we have an ID to reference the newly inserted // app metadata we can then specify its categories. saveCategories = true; - categories = Utils.parseCommaSeparatedString(values.getAsString(Cols.Categories.CATEGORIES)); - values.remove(Cols.Categories.CATEGORIES); + categories = Utils.parseCommaSeparatedString(values.getAsString(Cols.ForWriting.Categories.CATEGORIES)); + values.remove(Cols.ForWriting.Categories.CATEGORIES); } long appMetadataId = db().insertOrThrow(getTableName(), null, values); diff --git a/app/src/main/java/org/fdroid/fdroid/data/Schema.java b/app/src/main/java/org/fdroid/fdroid/data/Schema.java index ea795f7d8..9d1a7a439 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/Schema.java +++ b/app/src/main/java/org/fdroid/fdroid/data/Schema.java @@ -158,8 +158,15 @@ public interface Schema { String PACKAGE_NAME = "package_packageName"; } - interface Categories { - String CATEGORIES = "categories_commaSeparatedCateogryNames"; + /** + * This is to make it explicit that you cannot request the {@link Categories#CATEGORIES} + * field when selecting app metadata from the database. It is only here for the purpose + * of inserting/updating apps. + */ + interface ForWriting { + interface Categories { + String CATEGORIES = "categories_commaSeparatedCateogryNames"; + } } /** @@ -189,7 +196,7 @@ public interface Schema { ANTI_FEATURES, REQUIREMENTS, ICON_URL, ICON_URL_LARGE, SUGGESTED_VERSION_CODE, SuggestedApk.VERSION_NAME, InstalledApp.VERSION_CODE, InstalledApp.VERSION_NAME, - InstalledApp.SIGNATURE, Package.PACKAGE_NAME, Categories.CATEGORIES, + InstalledApp.SIGNATURE, Package.PACKAGE_NAME, }; } } diff --git a/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java index 2770d891e..af0df691a 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java @@ -161,10 +161,10 @@ public class TempAppProvider extends AppProvider { // Package names for apps cannot change... values.remove(Cols.Package.PACKAGE_NAME); - if (values.containsKey(Cols.Categories.CATEGORIES)) { - String[] categories = Utils.parseCommaSeparatedString(values.getAsString(Cols.Categories.CATEGORIES)); + if (values.containsKey(Cols.ForWriting.Categories.CATEGORIES)) { + String[] categories = Utils.parseCommaSeparatedString(values.getAsString(Cols.ForWriting.Categories.CATEGORIES)); ensureCategories(categories, packageName, repoId); - values.remove(Cols.Categories.CATEGORIES); + values.remove(Cols.ForWriting.Categories.CATEGORIES); } int count = db().update(getTableName(), values, query.getSelection(), query.getArgs()); 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 0ef72f44b..ba6bcd48a 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java @@ -154,7 +154,7 @@ public class CategoryProviderTest extends FDroidProviderTest { private void insertAppWithCategory(String id, String name, String categories) { ContentValues values = new ContentValues(1); - values.put(Cols.Categories.CATEGORIES, categories); + values.put(Cols.ForWriting.Categories.CATEGORIES, categories); AppProviderTest.insertApp(contentResolver, context, id, name, values); } }