Extracted AppProvider.DataColumns to Schema.AppTable.Cols
This commit is contained in:
parent
7c13cc26fc
commit
315f20df0c
@ -84,6 +84,7 @@ import org.fdroid.fdroid.data.App;
|
|||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.AppProvider;
|
||||||
import org.fdroid.fdroid.data.InstalledAppProvider;
|
import org.fdroid.fdroid.data.InstalledAppProvider;
|
||||||
import org.fdroid.fdroid.data.RepoProvider;
|
import org.fdroid.fdroid.data.RepoProvider;
|
||||||
|
import org.fdroid.fdroid.data.Schema;
|
||||||
import org.fdroid.fdroid.installer.InstallManagerService;
|
import org.fdroid.fdroid.installer.InstallManagerService;
|
||||||
import org.fdroid.fdroid.installer.Installer;
|
import org.fdroid.fdroid.installer.Installer;
|
||||||
import org.fdroid.fdroid.installer.InstallerFactory;
|
import org.fdroid.fdroid.installer.InstallerFactory;
|
||||||
@ -667,8 +668,8 @@ public class AppDetails extends AppCompatActivity {
|
|||||||
Uri uri = AppProvider.getContentUri(packageName);
|
Uri uri = AppProvider.getContentUri(packageName);
|
||||||
|
|
||||||
ContentValues values = new ContentValues(2);
|
ContentValues values = new ContentValues(2);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_ALLUPDATES, ignoreAll ? 1 : 0);
|
values.put(Schema.AppTable.Cols.IGNORE_ALLUPDATES, ignoreAll ? 1 : 0);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_THISUPDATE, ignoreVersionCode);
|
values.put(Schema.AppTable.Cols.IGNORE_THISUPDATE, ignoreVersionCode);
|
||||||
|
|
||||||
getContentResolver().update(uri, values, null, null);
|
getContentResolver().update(uri, values, null, null);
|
||||||
|
|
||||||
|
@ -47,6 +47,7 @@ import org.fdroid.fdroid.data.App;
|
|||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.AppProvider;
|
||||||
import org.fdroid.fdroid.data.Repo;
|
import org.fdroid.fdroid.data.Repo;
|
||||||
import org.fdroid.fdroid.data.RepoProvider;
|
import org.fdroid.fdroid.data.RepoProvider;
|
||||||
|
import org.fdroid.fdroid.data.Schema;
|
||||||
import org.fdroid.fdroid.installer.InstallManagerService;
|
import org.fdroid.fdroid.installer.InstallManagerService;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
@ -415,7 +416,7 @@ public class UpdateService extends IntentService {
|
|||||||
private void performUpdateNotification() {
|
private void performUpdateNotification() {
|
||||||
Cursor cursor = getContentResolver().query(
|
Cursor cursor = getContentResolver().query(
|
||||||
AppProvider.getCanUpdateUri(),
|
AppProvider.getCanUpdateUri(),
|
||||||
AppProvider.DataColumns.ALL,
|
Schema.AppTable.Cols.ALL,
|
||||||
null, null, null);
|
null, null, null);
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
if (cursor.getCount() > 0) {
|
if (cursor.getCount() > 0) {
|
||||||
@ -461,7 +462,7 @@ public class UpdateService extends IntentService {
|
|||||||
private void autoDownloadUpdates() {
|
private void autoDownloadUpdates() {
|
||||||
Cursor cursor = getContentResolver().query(
|
Cursor cursor = getContentResolver().query(
|
||||||
AppProvider.getCanUpdateUri(),
|
AppProvider.getCanUpdateUri(),
|
||||||
AppProvider.DataColumns.ALL,
|
Schema.AppTable.Cols.ALL,
|
||||||
null, null, null);
|
null, null, null);
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
cursor.moveToFirst();
|
cursor.moveToFirst();
|
||||||
|
@ -32,6 +32,8 @@ import java.util.jar.JarFile;
|
|||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.fdroid.fdroid.data.Schema.AppTable.Cols;
|
||||||
|
|
||||||
public class App extends ValueObject implements Comparable<App> {
|
public class App extends ValueObject implements Comparable<App> {
|
||||||
|
|
||||||
private static final String TAG = "App";
|
private static final String TAG = "App";
|
||||||
@ -151,103 +153,103 @@ public class App extends ValueObject implements Comparable<App> {
|
|||||||
for (int i = 0; i < cursor.getColumnCount(); i++) {
|
for (int i = 0; i < cursor.getColumnCount(); i++) {
|
||||||
String n = cursor.getColumnName(i);
|
String n = cursor.getColumnName(i);
|
||||||
switch (n) {
|
switch (n) {
|
||||||
case AppProvider.DataColumns.IS_COMPATIBLE:
|
case Cols.IS_COMPATIBLE:
|
||||||
compatible = cursor.getInt(i) == 1;
|
compatible = cursor.getInt(i) == 1;
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.PACKAGE_NAME:
|
case Cols.PACKAGE_NAME:
|
||||||
packageName = cursor.getString(i);
|
packageName = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.NAME:
|
case Cols.NAME:
|
||||||
name = cursor.getString(i);
|
name = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.SUMMARY:
|
case Cols.SUMMARY:
|
||||||
summary = cursor.getString(i);
|
summary = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.ICON:
|
case Cols.ICON:
|
||||||
icon = cursor.getString(i);
|
icon = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.DESCRIPTION:
|
case Cols.DESCRIPTION:
|
||||||
description = cursor.getString(i);
|
description = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.LICENSE:
|
case Cols.LICENSE:
|
||||||
license = cursor.getString(i);
|
license = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.AUTHOR:
|
case Cols.AUTHOR:
|
||||||
author = cursor.getString(i);
|
author = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.EMAIL:
|
case Cols.EMAIL:
|
||||||
email = cursor.getString(i);
|
email = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.WEB_URL:
|
case Cols.WEB_URL:
|
||||||
webURL = cursor.getString(i);
|
webURL = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.TRACKER_URL:
|
case Cols.TRACKER_URL:
|
||||||
trackerURL = cursor.getString(i);
|
trackerURL = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.SOURCE_URL:
|
case Cols.SOURCE_URL:
|
||||||
sourceURL = cursor.getString(i);
|
sourceURL = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.CHANGELOG_URL:
|
case Cols.CHANGELOG_URL:
|
||||||
changelogURL = cursor.getString(i);
|
changelogURL = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.DONATE_URL:
|
case Cols.DONATE_URL:
|
||||||
donateURL = cursor.getString(i);
|
donateURL = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.BITCOIN_ADDR:
|
case Cols.BITCOIN_ADDR:
|
||||||
bitcoinAddr = cursor.getString(i);
|
bitcoinAddr = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.LITECOIN_ADDR:
|
case Cols.LITECOIN_ADDR:
|
||||||
litecoinAddr = cursor.getString(i);
|
litecoinAddr = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.FLATTR_ID:
|
case Cols.FLATTR_ID:
|
||||||
flattrID = cursor.getString(i);
|
flattrID = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.SuggestedApk.VERSION_NAME:
|
case Cols.SuggestedApk.VERSION_NAME:
|
||||||
suggestedVersionName = cursor.getString(i);
|
suggestedVersionName = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.SUGGESTED_VERSION_CODE:
|
case Cols.SUGGESTED_VERSION_CODE:
|
||||||
suggestedVersionCode = cursor.getInt(i);
|
suggestedVersionCode = cursor.getInt(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.UPSTREAM_VERSION_CODE:
|
case Cols.UPSTREAM_VERSION_CODE:
|
||||||
upstreamVersionCode = cursor.getInt(i);
|
upstreamVersionCode = cursor.getInt(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.UPSTREAM_VERSION_NAME:
|
case Cols.UPSTREAM_VERSION_NAME:
|
||||||
upstreamVersionName = cursor.getString(i);
|
upstreamVersionName = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.ADDED:
|
case Cols.ADDED:
|
||||||
added = Utils.parseDate(cursor.getString(i), null);
|
added = Utils.parseDate(cursor.getString(i), null);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.LAST_UPDATED:
|
case Cols.LAST_UPDATED:
|
||||||
lastUpdated = Utils.parseDate(cursor.getString(i), null);
|
lastUpdated = Utils.parseDate(cursor.getString(i), null);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.CATEGORIES:
|
case Cols.CATEGORIES:
|
||||||
categories = Utils.parseCommaSeparatedString(cursor.getString(i));
|
categories = Utils.parseCommaSeparatedString(cursor.getString(i));
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.ANTI_FEATURES:
|
case Cols.ANTI_FEATURES:
|
||||||
antiFeatures = Utils.parseCommaSeparatedString(cursor.getString(i));
|
antiFeatures = Utils.parseCommaSeparatedString(cursor.getString(i));
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.REQUIREMENTS:
|
case Cols.REQUIREMENTS:
|
||||||
requirements = Utils.parseCommaSeparatedString(cursor.getString(i));
|
requirements = Utils.parseCommaSeparatedString(cursor.getString(i));
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.IGNORE_ALLUPDATES:
|
case Cols.IGNORE_ALLUPDATES:
|
||||||
ignoreAllUpdates = cursor.getInt(i) == 1;
|
ignoreAllUpdates = cursor.getInt(i) == 1;
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.IGNORE_THISUPDATE:
|
case Cols.IGNORE_THISUPDATE:
|
||||||
ignoreThisUpdate = cursor.getInt(i);
|
ignoreThisUpdate = cursor.getInt(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.ICON_URL:
|
case Cols.ICON_URL:
|
||||||
iconUrl = cursor.getString(i);
|
iconUrl = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.ICON_URL_LARGE:
|
case Cols.ICON_URL_LARGE:
|
||||||
iconUrlLarge = cursor.getString(i);
|
iconUrlLarge = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.InstalledApp.VERSION_CODE:
|
case Cols.InstalledApp.VERSION_CODE:
|
||||||
installedVersionCode = cursor.getInt(i);
|
installedVersionCode = cursor.getInt(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.InstalledApp.VERSION_NAME:
|
case Cols.InstalledApp.VERSION_NAME:
|
||||||
installedVersionName = cursor.getString(i);
|
installedVersionName = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case AppProvider.DataColumns.InstalledApp.SIGNATURE:
|
case Cols.InstalledApp.SIGNATURE:
|
||||||
installedSig = cursor.getString(i);
|
installedSig = cursor.getString(i);
|
||||||
break;
|
break;
|
||||||
case "_id":
|
case "_id":
|
||||||
@ -438,35 +440,35 @@ public class App extends ValueObject implements Comparable<App> {
|
|||||||
public ContentValues toContentValues() {
|
public ContentValues toContentValues() {
|
||||||
|
|
||||||
final ContentValues values = new ContentValues();
|
final ContentValues values = new ContentValues();
|
||||||
values.put(AppProvider.DataColumns.PACKAGE_NAME, packageName);
|
values.put(Cols.PACKAGE_NAME, packageName);
|
||||||
values.put(AppProvider.DataColumns.NAME, name);
|
values.put(Cols.NAME, name);
|
||||||
values.put(AppProvider.DataColumns.SUMMARY, summary);
|
values.put(Cols.SUMMARY, summary);
|
||||||
values.put(AppProvider.DataColumns.ICON, icon);
|
values.put(Cols.ICON, icon);
|
||||||
values.put(AppProvider.DataColumns.ICON_URL, iconUrl);
|
values.put(Cols.ICON_URL, iconUrl);
|
||||||
values.put(AppProvider.DataColumns.ICON_URL_LARGE, iconUrlLarge);
|
values.put(Cols.ICON_URL_LARGE, iconUrlLarge);
|
||||||
values.put(AppProvider.DataColumns.DESCRIPTION, description);
|
values.put(Cols.DESCRIPTION, description);
|
||||||
values.put(AppProvider.DataColumns.LICENSE, license);
|
values.put(Cols.LICENSE, license);
|
||||||
values.put(AppProvider.DataColumns.AUTHOR, author);
|
values.put(Cols.AUTHOR, author);
|
||||||
values.put(AppProvider.DataColumns.EMAIL, email);
|
values.put(Cols.EMAIL, email);
|
||||||
values.put(AppProvider.DataColumns.WEB_URL, webURL);
|
values.put(Cols.WEB_URL, webURL);
|
||||||
values.put(AppProvider.DataColumns.TRACKER_URL, trackerURL);
|
values.put(Cols.TRACKER_URL, trackerURL);
|
||||||
values.put(AppProvider.DataColumns.SOURCE_URL, sourceURL);
|
values.put(Cols.SOURCE_URL, sourceURL);
|
||||||
values.put(AppProvider.DataColumns.CHANGELOG_URL, changelogURL);
|
values.put(Cols.CHANGELOG_URL, changelogURL);
|
||||||
values.put(AppProvider.DataColumns.DONATE_URL, donateURL);
|
values.put(Cols.DONATE_URL, donateURL);
|
||||||
values.put(AppProvider.DataColumns.BITCOIN_ADDR, bitcoinAddr);
|
values.put(Cols.BITCOIN_ADDR, bitcoinAddr);
|
||||||
values.put(AppProvider.DataColumns.LITECOIN_ADDR, litecoinAddr);
|
values.put(Cols.LITECOIN_ADDR, litecoinAddr);
|
||||||
values.put(AppProvider.DataColumns.FLATTR_ID, flattrID);
|
values.put(Cols.FLATTR_ID, flattrID);
|
||||||
values.put(AppProvider.DataColumns.ADDED, Utils.formatDate(added, ""));
|
values.put(Cols.ADDED, Utils.formatDate(added, ""));
|
||||||
values.put(AppProvider.DataColumns.LAST_UPDATED, Utils.formatDate(lastUpdated, ""));
|
values.put(Cols.LAST_UPDATED, Utils.formatDate(lastUpdated, ""));
|
||||||
values.put(AppProvider.DataColumns.SUGGESTED_VERSION_CODE, suggestedVersionCode);
|
values.put(Cols.SUGGESTED_VERSION_CODE, suggestedVersionCode);
|
||||||
values.put(AppProvider.DataColumns.UPSTREAM_VERSION_NAME, upstreamVersionName);
|
values.put(Cols.UPSTREAM_VERSION_NAME, upstreamVersionName);
|
||||||
values.put(AppProvider.DataColumns.UPSTREAM_VERSION_CODE, upstreamVersionCode);
|
values.put(Cols.UPSTREAM_VERSION_CODE, upstreamVersionCode);
|
||||||
values.put(AppProvider.DataColumns.CATEGORIES, Utils.serializeCommaSeparatedString(categories));
|
values.put(Cols.CATEGORIES, Utils.serializeCommaSeparatedString(categories));
|
||||||
values.put(AppProvider.DataColumns.ANTI_FEATURES, Utils.serializeCommaSeparatedString(antiFeatures));
|
values.put(Cols.ANTI_FEATURES, Utils.serializeCommaSeparatedString(antiFeatures));
|
||||||
values.put(AppProvider.DataColumns.REQUIREMENTS, Utils.serializeCommaSeparatedString(requirements));
|
values.put(Cols.REQUIREMENTS, Utils.serializeCommaSeparatedString(requirements));
|
||||||
values.put(AppProvider.DataColumns.IS_COMPATIBLE, compatible ? 1 : 0);
|
values.put(Cols.IS_COMPATIBLE, compatible ? 1 : 0);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_ALLUPDATES, ignoreAllUpdates ? 1 : 0);
|
values.put(Cols.IGNORE_ALLUPDATES, ignoreAllUpdates ? 1 : 0);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_THISUPDATE, ignoreThisUpdate);
|
values.put(Cols.IGNORE_THISUPDATE, ignoreThisUpdate);
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,7 @@ import android.util.Log;
|
|||||||
import org.fdroid.fdroid.Preferences;
|
import org.fdroid.fdroid.Preferences;
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
import org.fdroid.fdroid.Utils;
|
import org.fdroid.fdroid.Utils;
|
||||||
|
import org.fdroid.fdroid.data.Schema.AppTable.Cols;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -30,7 +31,7 @@ public class AppProvider extends FDroidProvider {
|
|||||||
private Helper() { }
|
private Helper() { }
|
||||||
|
|
||||||
public static int count(Context context, Uri uri) {
|
public static int count(Context context, Uri uri) {
|
||||||
final String[] projection = {AppProvider.DataColumns._COUNT};
|
final String[] projection = {Cols._COUNT};
|
||||||
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
|
Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
@ -44,7 +45,7 @@ public class AppProvider extends FDroidProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static List<App> all(ContentResolver resolver) {
|
public static List<App> all(ContentResolver resolver) {
|
||||||
return all(resolver, DataColumns.ALL);
|
return all(resolver, Cols.ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<App> all(ContentResolver resolver, String[] projection) {
|
public static List<App> all(ContentResolver resolver, String[] projection) {
|
||||||
@ -90,7 +91,7 @@ public class AppProvider extends FDroidProvider {
|
|||||||
public static List<String> categories(Context context) {
|
public static List<String> categories(Context context) {
|
||||||
final ContentResolver resolver = context.getContentResolver();
|
final ContentResolver resolver = context.getContentResolver();
|
||||||
final Uri uri = getContentUri();
|
final Uri uri = getContentUri();
|
||||||
final String[] projection = {DataColumns.CATEGORIES};
|
final String[] projection = {Cols.CATEGORIES};
|
||||||
final Cursor cursor = resolver.query(uri, projection, null, null, null);
|
final Cursor cursor = resolver.query(uri, projection, null, null, null);
|
||||||
final Set<String> categorySet = new HashSet<>();
|
final Set<String> categorySet = new HashSet<>();
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
@ -121,7 +122,7 @@ public class AppProvider extends FDroidProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static App findByPackageName(ContentResolver resolver, String packageName) {
|
public static App findByPackageName(ContentResolver resolver, String packageName) {
|
||||||
return findByPackageName(resolver, packageName, DataColumns.ALL);
|
return findByPackageName(resolver, packageName, Cols.ALL);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static App findByPackageName(ContentResolver resolver, String packageName,
|
public static App findByPackageName(ContentResolver resolver, String packageName,
|
||||||
@ -167,63 +168,6 @@ public class AppProvider extends FDroidProvider {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface DataColumns {
|
|
||||||
|
|
||||||
String _ID = "rowid as _id"; // Required for CursorLoaders
|
|
||||||
String _COUNT = "_count";
|
|
||||||
String IS_COMPATIBLE = "compatible";
|
|
||||||
String PACKAGE_NAME = "id";
|
|
||||||
String NAME = "name";
|
|
||||||
String SUMMARY = "summary";
|
|
||||||
String ICON = "icon";
|
|
||||||
String DESCRIPTION = "description";
|
|
||||||
String LICENSE = "license";
|
|
||||||
String AUTHOR = "author";
|
|
||||||
String EMAIL = "email";
|
|
||||||
String WEB_URL = "webURL";
|
|
||||||
String TRACKER_URL = "trackerURL";
|
|
||||||
String SOURCE_URL = "sourceURL";
|
|
||||||
String CHANGELOG_URL = "changelogURL";
|
|
||||||
String DONATE_URL = "donateURL";
|
|
||||||
String BITCOIN_ADDR = "bitcoinAddr";
|
|
||||||
String LITECOIN_ADDR = "litecoinAddr";
|
|
||||||
String FLATTR_ID = "flattrID";
|
|
||||||
String SUGGESTED_VERSION_CODE = "suggestedVercode";
|
|
||||||
String UPSTREAM_VERSION_NAME = "upstreamVersion";
|
|
||||||
String UPSTREAM_VERSION_CODE = "upstreamVercode";
|
|
||||||
String ADDED = "added";
|
|
||||||
String LAST_UPDATED = "lastUpdated";
|
|
||||||
String CATEGORIES = "categories";
|
|
||||||
String ANTI_FEATURES = "antiFeatures";
|
|
||||||
String REQUIREMENTS = "requirements";
|
|
||||||
String IGNORE_ALLUPDATES = "ignoreAllUpdates";
|
|
||||||
String IGNORE_THISUPDATE = "ignoreThisUpdate";
|
|
||||||
String ICON_URL = "iconUrl";
|
|
||||||
String ICON_URL_LARGE = "iconUrlLarge";
|
|
||||||
|
|
||||||
interface SuggestedApk {
|
|
||||||
String VERSION_NAME = "suggestedApkVersion";
|
|
||||||
}
|
|
||||||
|
|
||||||
interface InstalledApp {
|
|
||||||
String VERSION_CODE = "installedVersionCode";
|
|
||||||
String VERSION_NAME = "installedVersionName";
|
|
||||||
String SIGNATURE = "installedSig";
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] ALL = {
|
|
||||||
_ID, IS_COMPATIBLE, PACKAGE_NAME, NAME, SUMMARY, ICON, DESCRIPTION,
|
|
||||||
LICENSE, AUTHOR, EMAIL, WEB_URL, TRACKER_URL, SOURCE_URL,
|
|
||||||
CHANGELOG_URL, DONATE_URL, BITCOIN_ADDR, LITECOIN_ADDR, FLATTR_ID,
|
|
||||||
UPSTREAM_VERSION_NAME, UPSTREAM_VERSION_CODE, ADDED, LAST_UPDATED,
|
|
||||||
CATEGORIES, ANTI_FEATURES, REQUIREMENTS, IGNORE_ALLUPDATES,
|
|
||||||
IGNORE_THISUPDATE, ICON_URL, ICON_URL_LARGE,
|
|
||||||
SUGGESTED_VERSION_CODE, SuggestedApk.VERSION_NAME,
|
|
||||||
InstalledApp.VERSION_CODE, InstalledApp.VERSION_NAME,
|
|
||||||
InstalledApp.SIGNATURE,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A QuerySelection which is aware of the option/need to join onto the
|
* A QuerySelection which is aware of the option/need to join onto the
|
||||||
* installed apps table. Not that the base classes
|
* installed apps table. Not that the base classes
|
||||||
@ -346,23 +290,23 @@ public class AppProvider extends FDroidProvider {
|
|||||||
@Override
|
@Override
|
||||||
public void addField(String field) {
|
public void addField(String field) {
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case DataColumns.SuggestedApk.VERSION_NAME:
|
case Cols.SuggestedApk.VERSION_NAME:
|
||||||
addSuggestedApkVersionField();
|
addSuggestedApkVersionField();
|
||||||
break;
|
break;
|
||||||
case DataColumns.InstalledApp.VERSION_NAME:
|
case Cols.InstalledApp.VERSION_NAME:
|
||||||
addInstalledAppVersionName();
|
addInstalledAppVersionName();
|
||||||
break;
|
break;
|
||||||
case DataColumns.InstalledApp.VERSION_CODE:
|
case Cols.InstalledApp.VERSION_CODE:
|
||||||
addInstalledAppVersionCode();
|
addInstalledAppVersionCode();
|
||||||
break;
|
break;
|
||||||
case DataColumns.InstalledApp.SIGNATURE:
|
case Cols.InstalledApp.SIGNATURE:
|
||||||
addInstalledSig();
|
addInstalledSig();
|
||||||
break;
|
break;
|
||||||
case DataColumns._COUNT:
|
case Cols._COUNT:
|
||||||
appendCountField();
|
appendCountField();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (field.equals(DataColumns.CATEGORIES)) {
|
if (field.equals(Cols.CATEGORIES)) {
|
||||||
categoryFieldAdded = true;
|
categoryFieldAdded = true;
|
||||||
}
|
}
|
||||||
appendField(field, getTableName());
|
appendField(field, getTableName());
|
||||||
@ -372,13 +316,13 @@ public class AppProvider extends FDroidProvider {
|
|||||||
|
|
||||||
private void appendCountField() {
|
private void appendCountField() {
|
||||||
countFieldAppended = true;
|
countFieldAppended = true;
|
||||||
appendField("COUNT( DISTINCT " + getTableName() + ".id ) AS " + DataColumns._COUNT);
|
appendField("COUNT( DISTINCT " + getTableName() + ".id ) AS " + Cols._COUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addSuggestedApkVersionField() {
|
private void addSuggestedApkVersionField() {
|
||||||
addSuggestedApkField(
|
addSuggestedApkField(
|
||||||
ApkProvider.DataColumns.VERSION_NAME,
|
ApkProvider.DataColumns.VERSION_NAME,
|
||||||
DataColumns.SuggestedApk.VERSION_NAME);
|
Cols.SuggestedApk.VERSION_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addSuggestedApkField(String fieldName, String alias) {
|
private void addSuggestedApkField(String fieldName, String alias) {
|
||||||
@ -395,21 +339,21 @@ public class AppProvider extends FDroidProvider {
|
|||||||
private void addInstalledAppVersionName() {
|
private void addInstalledAppVersionName() {
|
||||||
addInstalledAppField(
|
addInstalledAppField(
|
||||||
InstalledAppProvider.DataColumns.VERSION_NAME,
|
InstalledAppProvider.DataColumns.VERSION_NAME,
|
||||||
DataColumns.InstalledApp.VERSION_NAME
|
Cols.InstalledApp.VERSION_NAME
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addInstalledAppVersionCode() {
|
private void addInstalledAppVersionCode() {
|
||||||
addInstalledAppField(
|
addInstalledAppField(
|
||||||
InstalledAppProvider.DataColumns.VERSION_CODE,
|
InstalledAppProvider.DataColumns.VERSION_CODE,
|
||||||
DataColumns.InstalledApp.VERSION_CODE
|
Cols.InstalledApp.VERSION_CODE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addInstalledSig() {
|
private void addInstalledSig() {
|
||||||
addInstalledAppField(
|
addInstalledAppField(
|
||||||
InstalledAppProvider.DataColumns.SIGNATURE,
|
InstalledAppProvider.DataColumns.SIGNATURE,
|
||||||
DataColumns.InstalledApp.SIGNATURE
|
Cols.InstalledApp.SIGNATURE
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -602,7 +546,7 @@ public class AppProvider extends FDroidProvider {
|
|||||||
final String ignoreCurrent = getTableName() + ".ignoreThisUpdate != " + getTableName() + ".suggestedVercode ";
|
final String ignoreCurrent = getTableName() + ".ignoreThisUpdate != " + getTableName() + ".suggestedVercode ";
|
||||||
final String ignoreAll = getTableName() + ".ignoreAllUpdates != 1 ";
|
final String ignoreAll = getTableName() + ".ignoreAllUpdates != 1 ";
|
||||||
final String ignore = " ( " + ignoreCurrent + " AND " + ignoreAll + " ) ";
|
final String ignore = " ( " + ignoreCurrent + " AND " + ignoreAll + " ) ";
|
||||||
final String where = ignore + " AND " + getTableName() + "." + DataColumns.SUGGESTED_VERSION_CODE + " > installed.versionCode";
|
final String where = ignore + " AND " + getTableName() + "." + Cols.SUGGESTED_VERSION_CODE + " > installed.versionCode";
|
||||||
return new AppQuerySelection(where).requireNaturalInstalledTable();
|
return new AppQuerySelection(where).requireNaturalInstalledTable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -821,7 +765,7 @@ public class AppProvider extends FDroidProvider {
|
|||||||
selection = selection.add(queryExcludeSwap());
|
selection = selection.add(queryExcludeSwap());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AppProvider.DataColumns.NAME.equals(sortOrder)) {
|
if (Cols.NAME.equals(sortOrder)) {
|
||||||
sortOrder = getTableName() + "." + sortOrder + " COLLATE LOCALIZED ";
|
sortOrder = getTableName() + "." + sortOrder + " COLLATE LOCALIZED ";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -861,7 +805,7 @@ public class AppProvider extends FDroidProvider {
|
|||||||
if (!isApplyingBatch()) {
|
if (!isApplyingBatch()) {
|
||||||
getContext().getContentResolver().notifyChange(uri, null);
|
getContext().getContentResolver().notifyChange(uri, null);
|
||||||
}
|
}
|
||||||
return getContentUri(values.getAsString(DataColumns.PACKAGE_NAME));
|
return getContentUri(values.getAsString(Cols.PACKAGE_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,8 +32,8 @@ public class RepoPersister {
|
|||||||
* is essentially completely transient, and can be nuked at any time.
|
* is essentially completely transient, and can be nuked at any time.
|
||||||
*/
|
*/
|
||||||
private static final String[] APP_FIELDS_TO_IGNORE = {
|
private static final String[] APP_FIELDS_TO_IGNORE = {
|
||||||
AppProvider.DataColumns.IGNORE_ALLUPDATES,
|
Schema.AppTable.Cols.IGNORE_ALLUPDATES,
|
||||||
AppProvider.DataColumns.IGNORE_THISUPDATE,
|
Schema.AppTable.Cols.IGNORE_THISUPDATE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -214,7 +214,7 @@ public class RepoPersister {
|
|||||||
* array.
|
* array.
|
||||||
*/
|
*/
|
||||||
private boolean isAppInDatabase(App app) {
|
private boolean isAppInDatabase(App app) {
|
||||||
String[] fields = {AppProvider.DataColumns.PACKAGE_NAME};
|
String[] fields = {Schema.AppTable.Cols.PACKAGE_NAME};
|
||||||
App found = AppProvider.Helper.findByPackageName(context.getContentResolver(), app.packageName, fields);
|
App found = AppProvider.Helper.findByPackageName(context.getContentResolver(), app.packageName, fields);
|
||||||
return found != null;
|
return found != null;
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,67 @@ package org.fdroid.fdroid.data;
|
|||||||
* Constants from this interface should be used in preference to string literals when referring to
|
* Constants from this interface should be used in preference to string literals when referring to
|
||||||
* the tables/columns in the database.
|
* the tables/columns in the database.
|
||||||
*/
|
*/
|
||||||
interface Schema {
|
public interface Schema {
|
||||||
|
|
||||||
interface AppTable {
|
interface AppTable {
|
||||||
|
|
||||||
String NAME = DBHelper.TABLE_APP;
|
String NAME = DBHelper.TABLE_APP;
|
||||||
interface Cols extends AppProvider.DataColumns {}
|
|
||||||
|
interface Cols {
|
||||||
|
String _ID = "rowid as _id"; // Required for CursorLoaders
|
||||||
|
String _COUNT = "_count";
|
||||||
|
String IS_COMPATIBLE = "compatible";
|
||||||
|
String PACKAGE_NAME = "id";
|
||||||
|
String NAME = "name";
|
||||||
|
String SUMMARY = "summary";
|
||||||
|
String ICON = "icon";
|
||||||
|
String DESCRIPTION = "description";
|
||||||
|
String LICENSE = "license";
|
||||||
|
String AUTHOR = "author";
|
||||||
|
String EMAIL = "email";
|
||||||
|
String WEB_URL = "webURL";
|
||||||
|
String TRACKER_URL = "trackerURL";
|
||||||
|
String SOURCE_URL = "sourceURL";
|
||||||
|
String CHANGELOG_URL = "changelogURL";
|
||||||
|
String DONATE_URL = "donateURL";
|
||||||
|
String BITCOIN_ADDR = "bitcoinAddr";
|
||||||
|
String LITECOIN_ADDR = "litecoinAddr";
|
||||||
|
String FLATTR_ID = "flattrID";
|
||||||
|
String SUGGESTED_VERSION_CODE = "suggestedVercode";
|
||||||
|
String UPSTREAM_VERSION_NAME = "upstreamVersion";
|
||||||
|
String UPSTREAM_VERSION_CODE = "upstreamVercode";
|
||||||
|
String ADDED = "added";
|
||||||
|
String LAST_UPDATED = "lastUpdated";
|
||||||
|
String CATEGORIES = "categories";
|
||||||
|
String ANTI_FEATURES = "antiFeatures";
|
||||||
|
String REQUIREMENTS = "requirements";
|
||||||
|
String IGNORE_ALLUPDATES = "ignoreAllUpdates";
|
||||||
|
String IGNORE_THISUPDATE = "ignoreThisUpdate";
|
||||||
|
String ICON_URL = "iconUrl";
|
||||||
|
String ICON_URL_LARGE = "iconUrlLarge";
|
||||||
|
|
||||||
|
interface SuggestedApk {
|
||||||
|
String VERSION_NAME = "suggestedApkVersion";
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InstalledApp {
|
||||||
|
String VERSION_CODE = "installedVersionCode";
|
||||||
|
String VERSION_NAME = "installedVersionName";
|
||||||
|
String SIGNATURE = "installedSig";
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] ALL = {
|
||||||
|
_ID, IS_COMPATIBLE, PACKAGE_NAME, NAME, SUMMARY, ICON, DESCRIPTION,
|
||||||
|
LICENSE, AUTHOR, EMAIL, WEB_URL, TRACKER_URL, SOURCE_URL,
|
||||||
|
CHANGELOG_URL, DONATE_URL, BITCOIN_ADDR, LITECOIN_ADDR, FLATTR_ID,
|
||||||
|
UPSTREAM_VERSION_NAME, UPSTREAM_VERSION_CODE, ADDED, LAST_UPDATED,
|
||||||
|
CATEGORIES, ANTI_FEATURES, REQUIREMENTS, IGNORE_ALLUPDATES,
|
||||||
|
IGNORE_THISUPDATE, ICON_URL, ICON_URL_LARGE,
|
||||||
|
SUGGESTED_VERSION_CODE, SuggestedApk.VERSION_NAME,
|
||||||
|
InstalledApp.VERSION_CODE, InstalledApp.VERSION_NAME,
|
||||||
|
InstalledApp.SIGNATURE,
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ApkTable {
|
interface ApkTable {
|
||||||
|
@ -25,7 +25,7 @@ import org.fdroid.fdroid.R;
|
|||||||
import org.fdroid.fdroid.UpdateService;
|
import org.fdroid.fdroid.UpdateService;
|
||||||
import org.fdroid.fdroid.Utils;
|
import org.fdroid.fdroid.Utils;
|
||||||
import org.fdroid.fdroid.data.App;
|
import org.fdroid.fdroid.data.App;
|
||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.Schema.AppTable;
|
||||||
import org.fdroid.fdroid.views.AppListAdapter;
|
import org.fdroid.fdroid.views.AppListAdapter;
|
||||||
|
|
||||||
public abstract class AppListFragment extends ListFragment implements
|
public abstract class AppListFragment extends ListFragment implements
|
||||||
@ -38,24 +38,24 @@ public abstract class AppListFragment extends ListFragment implements
|
|||||||
private static final int REQUEST_APPDETAILS = 0;
|
private static final int REQUEST_APPDETAILS = 0;
|
||||||
|
|
||||||
private static final String[] APP_PROJECTION = {
|
private static final String[] APP_PROJECTION = {
|
||||||
AppProvider.DataColumns._ID, // Required for cursor loader to work.
|
AppTable.Cols._ID, // Required for cursor loader to work.
|
||||||
AppProvider.DataColumns.PACKAGE_NAME,
|
AppTable.Cols.PACKAGE_NAME,
|
||||||
AppProvider.DataColumns.NAME,
|
AppTable.Cols.NAME,
|
||||||
AppProvider.DataColumns.SUMMARY,
|
AppTable.Cols.SUMMARY,
|
||||||
AppProvider.DataColumns.IS_COMPATIBLE,
|
AppTable.Cols.IS_COMPATIBLE,
|
||||||
AppProvider.DataColumns.LICENSE,
|
AppTable.Cols.LICENSE,
|
||||||
AppProvider.DataColumns.ICON,
|
AppTable.Cols.ICON,
|
||||||
AppProvider.DataColumns.ICON_URL,
|
AppTable.Cols.ICON_URL,
|
||||||
AppProvider.DataColumns.InstalledApp.VERSION_CODE,
|
AppTable.Cols.InstalledApp.VERSION_CODE,
|
||||||
AppProvider.DataColumns.InstalledApp.VERSION_NAME,
|
AppTable.Cols.InstalledApp.VERSION_NAME,
|
||||||
AppProvider.DataColumns.SuggestedApk.VERSION_NAME,
|
AppTable.Cols.SuggestedApk.VERSION_NAME,
|
||||||
AppProvider.DataColumns.SUGGESTED_VERSION_CODE,
|
AppTable.Cols.SUGGESTED_VERSION_CODE,
|
||||||
AppProvider.DataColumns.IGNORE_ALLUPDATES,
|
AppTable.Cols.IGNORE_ALLUPDATES,
|
||||||
AppProvider.DataColumns.IGNORE_THISUPDATE,
|
AppTable.Cols.IGNORE_THISUPDATE,
|
||||||
AppProvider.DataColumns.REQUIREMENTS, // Needed for filtering apps that require root.
|
AppTable.Cols.REQUIREMENTS, // Needed for filtering apps that require root.
|
||||||
};
|
};
|
||||||
|
|
||||||
private static final String APP_SORT = AppProvider.DataColumns.NAME;
|
private static final String APP_SORT = AppTable.Cols.NAME;
|
||||||
|
|
||||||
private AppListAdapter appAdapter;
|
private AppListAdapter appAdapter;
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ import org.fdroid.fdroid.data.ApkProvider;
|
|||||||
import org.fdroid.fdroid.data.App;
|
import org.fdroid.fdroid.data.App;
|
||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.AppProvider;
|
||||||
import org.fdroid.fdroid.data.Repo;
|
import org.fdroid.fdroid.data.Repo;
|
||||||
|
import org.fdroid.fdroid.data.Schema;
|
||||||
import org.fdroid.fdroid.localrepo.SwapService;
|
import org.fdroid.fdroid.localrepo.SwapService;
|
||||||
import org.fdroid.fdroid.net.Downloader;
|
import org.fdroid.fdroid.net.Downloader;
|
||||||
import org.fdroid.fdroid.net.DownloaderService;
|
import org.fdroid.fdroid.net.DownloaderService;
|
||||||
@ -104,7 +105,7 @@ public class SwapAppsView extends ListView implements
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
adapter = new AppListAdapter(getContext(), getContext().getContentResolver().query(
|
adapter = new AppListAdapter(getContext(), getContext().getContentResolver().query(
|
||||||
AppProvider.getRepoUri(repo), AppProvider.DataColumns.ALL, null, null, null));
|
AppProvider.getRepoUri(repo), Schema.AppTable.Cols.ALL, null, null, null));
|
||||||
|
|
||||||
setAdapter(adapter);
|
setAdapter(adapter);
|
||||||
|
|
||||||
@ -194,7 +195,7 @@ public class SwapAppsView extends ListView implements
|
|||||||
? AppProvider.getRepoUri(repo)
|
? AppProvider.getRepoUri(repo)
|
||||||
: AppProvider.getSearchUri(repo, mCurrentFilterString);
|
: AppProvider.getSearchUri(repo, mCurrentFilterString);
|
||||||
|
|
||||||
return new CursorLoader(getActivity(), uri, AppProvider.DataColumns.ALL, null, null, AppProvider.DataColumns.NAME);
|
return new CursorLoader(getActivity(), uri, Schema.AppTable.Cols.ALL, null, null, Schema.AppTable.Cols.NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -9,6 +9,8 @@ import junit.framework.AssertionFailedError;
|
|||||||
import org.fdroid.fdroid.data.ApkProvider;
|
import org.fdroid.fdroid.data.ApkProvider;
|
||||||
import org.fdroid.fdroid.data.AppProvider;
|
import org.fdroid.fdroid.data.AppProvider;
|
||||||
import org.fdroid.fdroid.data.InstalledAppProvider;
|
import org.fdroid.fdroid.data.InstalledAppProvider;
|
||||||
|
import org.fdroid.fdroid.data.Schema;
|
||||||
|
import org.fdroid.fdroid.data.Schema.AppTable;
|
||||||
import org.robolectric.shadows.ShadowContentResolver;
|
import org.robolectric.shadows.ShadowContentResolver;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -178,16 +180,16 @@ public class Assert {
|
|||||||
public static void insertApp(ShadowContentResolver resolver, String id, String name, ContentValues additionalValues) {
|
public static void insertApp(ShadowContentResolver resolver, String id, String name, ContentValues additionalValues) {
|
||||||
|
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(AppProvider.DataColumns.PACKAGE_NAME, id);
|
values.put(AppTable.Cols.PACKAGE_NAME, id);
|
||||||
values.put(AppProvider.DataColumns.NAME, name);
|
values.put(AppTable.Cols.NAME, name);
|
||||||
|
|
||||||
// Required fields (NOT NULL in the database).
|
// Required fields (NOT NULL in the database).
|
||||||
values.put(AppProvider.DataColumns.SUMMARY, "test summary");
|
values.put(AppTable.Cols.SUMMARY, "test summary");
|
||||||
values.put(AppProvider.DataColumns.DESCRIPTION, "test description");
|
values.put(AppTable.Cols.DESCRIPTION, "test description");
|
||||||
values.put(AppProvider.DataColumns.LICENSE, "GPL?");
|
values.put(AppTable.Cols.LICENSE, "GPL?");
|
||||||
values.put(AppProvider.DataColumns.IS_COMPATIBLE, 1);
|
values.put(AppTable.Cols.IS_COMPATIBLE, 1);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_ALLUPDATES, 0);
|
values.put(AppTable.Cols.IGNORE_ALLUPDATES, 0);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_THISUPDATE, 0);
|
values.put(AppTable.Cols.IGNORE_THISUPDATE, 0);
|
||||||
|
|
||||||
values.putAll(additionalValues);
|
values.putAll(additionalValues);
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import android.net.Uri;
|
|||||||
|
|
||||||
import org.fdroid.fdroid.BuildConfig;
|
import org.fdroid.fdroid.BuildConfig;
|
||||||
import org.fdroid.fdroid.R;
|
import org.fdroid.fdroid.R;
|
||||||
|
import org.fdroid.fdroid.data.Schema.AppTable.Cols;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
@ -30,7 +31,7 @@ import static org.junit.Assert.assertTrue;
|
|||||||
@RunWith(RobolectricGradleTestRunner.class)
|
@RunWith(RobolectricGradleTestRunner.class)
|
||||||
public class AppProviderTest extends FDroidProviderTest {
|
public class AppProviderTest extends FDroidProviderTest {
|
||||||
|
|
||||||
private static final String[] PROJ = AppProvider.DataColumns.ALL;
|
private static final String[] PROJ = Cols.ALL;
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() {
|
public void setup() {
|
||||||
@ -86,9 +87,9 @@ public class AppProviderTest extends FDroidProviderTest {
|
|||||||
String packageName, int installedVercode, int suggestedVercode,
|
String packageName, int installedVercode, int suggestedVercode,
|
||||||
boolean ignoreAll, int ignoreVercode) {
|
boolean ignoreAll, int ignoreVercode) {
|
||||||
ContentValues values = new ContentValues(3);
|
ContentValues values = new ContentValues(3);
|
||||||
values.put(AppProvider.DataColumns.SUGGESTED_VERSION_CODE, suggestedVercode);
|
values.put(Cols.SUGGESTED_VERSION_CODE, suggestedVercode);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_ALLUPDATES, ignoreAll);
|
values.put(Cols.IGNORE_ALLUPDATES, ignoreAll);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_THISUPDATE, ignoreVercode);
|
values.put(Cols.IGNORE_THISUPDATE, ignoreVercode);
|
||||||
insertApp(packageName, "App: " + packageName, values);
|
insertApp(packageName, "App: " + packageName, values);
|
||||||
|
|
||||||
InstalledAppTestUtils.install(context, packageName, installedVercode, "v" + installedVercode);
|
InstalledAppTestUtils.install(context, packageName, installedVercode, "v" + installedVercode);
|
||||||
@ -135,7 +136,7 @@ public class AppProviderTest extends FDroidProviderTest {
|
|||||||
assertFalse(installedOldIgnoreLatest.canAndWantToUpdate());
|
assertFalse(installedOldIgnoreLatest.canAndWantToUpdate());
|
||||||
assertTrue(installedOldIgnoreNewerNotLatest.canAndWantToUpdate());
|
assertTrue(installedOldIgnoreNewerNotLatest.canAndWantToUpdate());
|
||||||
|
|
||||||
Cursor canUpdateCursor = r.query(AppProvider.getCanUpdateUri(), AppProvider.DataColumns.ALL, null, null, null);
|
Cursor canUpdateCursor = r.query(AppProvider.getCanUpdateUri(), Cols.ALL, null, null, null);
|
||||||
assertNotNull(canUpdateCursor);
|
assertNotNull(canUpdateCursor);
|
||||||
canUpdateCursor.moveToFirst();
|
canUpdateCursor.moveToFirst();
|
||||||
List<String> canUpdateIds = new ArrayList<>(canUpdateCursor.getCount());
|
List<String> canUpdateIds = new ArrayList<>(canUpdateCursor.getCount());
|
||||||
@ -168,7 +169,7 @@ public class AppProviderTest extends FDroidProviderTest {
|
|||||||
|
|
||||||
assertResultCount(contentResolver, 10, AppProvider.getContentUri(), PROJ);
|
assertResultCount(contentResolver, 10, AppProvider.getContentUri(), PROJ);
|
||||||
|
|
||||||
String[] projection = {AppProvider.DataColumns.PACKAGE_NAME};
|
String[] projection = {Cols.PACKAGE_NAME};
|
||||||
List<App> ignoredApps = AppProvider.Helper.findIgnored(context, projection);
|
List<App> ignoredApps = AppProvider.Helper.findIgnored(context, projection);
|
||||||
|
|
||||||
String[] expectedIgnored = {
|
String[] expectedIgnored = {
|
||||||
@ -251,9 +252,9 @@ public class AppProviderTest extends FDroidProviderTest {
|
|||||||
|
|
||||||
private Cursor queryAllApps() {
|
private Cursor queryAllApps() {
|
||||||
String[] projection = new String[] {
|
String[] projection = new String[] {
|
||||||
AppProvider.DataColumns._ID,
|
Cols._ID,
|
||||||
AppProvider.DataColumns.NAME,
|
Cols.NAME,
|
||||||
AppProvider.DataColumns.PACKAGE_NAME,
|
Cols.PACKAGE_NAME,
|
||||||
};
|
};
|
||||||
return contentResolver.query(AppProvider.getContentUri(), projection, null, null, null);
|
return contentResolver.query(AppProvider.getContentUri(), projection, null, null, null);
|
||||||
}
|
}
|
||||||
@ -342,23 +343,23 @@ public class AppProviderTest extends FDroidProviderTest {
|
|||||||
|
|
||||||
private void insertAppWithCategory(String id, String name, String categories) {
|
private void insertAppWithCategory(String id, String name, String categories) {
|
||||||
ContentValues values = new ContentValues(1);
|
ContentValues values = new ContentValues(1);
|
||||||
values.put(AppProvider.DataColumns.CATEGORIES, categories);
|
values.put(Cols.CATEGORIES, categories);
|
||||||
insertApp(id, name, values);
|
insertApp(id, name, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void insertApp(String id, String name, ContentValues additionalValues) {
|
public void insertApp(String id, String name, ContentValues additionalValues) {
|
||||||
|
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(AppProvider.DataColumns.PACKAGE_NAME, id);
|
values.put(Cols.PACKAGE_NAME, id);
|
||||||
values.put(AppProvider.DataColumns.NAME, name);
|
values.put(Cols.NAME, name);
|
||||||
|
|
||||||
// Required fields (NOT NULL in the database).
|
// Required fields (NOT NULL in the database).
|
||||||
values.put(AppProvider.DataColumns.SUMMARY, "test summary");
|
values.put(Cols.SUMMARY, "test summary");
|
||||||
values.put(AppProvider.DataColumns.DESCRIPTION, "test description");
|
values.put(Cols.DESCRIPTION, "test description");
|
||||||
values.put(AppProvider.DataColumns.LICENSE, "GPL?");
|
values.put(Cols.LICENSE, "GPL?");
|
||||||
values.put(AppProvider.DataColumns.IS_COMPATIBLE, 1);
|
values.put(Cols.IS_COMPATIBLE, 1);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_ALLUPDATES, 0);
|
values.put(Cols.IGNORE_ALLUPDATES, 0);
|
||||||
values.put(AppProvider.DataColumns.IGNORE_THISUPDATE, 0);
|
values.put(Cols.IGNORE_THISUPDATE, 0);
|
||||||
|
|
||||||
values.putAll(additionalValues);
|
values.putAll(additionalValues);
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ public class ProviderUriTests {
|
|||||||
@Test
|
@Test
|
||||||
public void validAppProviderUris() {
|
public void validAppProviderUris() {
|
||||||
ShadowContentResolver.registerProvider(AppProvider.getAuthority(), new AppProvider());
|
ShadowContentResolver.registerProvider(AppProvider.getAuthority(), new AppProvider());
|
||||||
String[] projection = new String[] {AppProvider.DataColumns._ID};
|
String[] projection = new String[] {Schema.AppTable.Cols._ID};
|
||||||
assertValidUri(resolver, AppProvider.getContentUri(), "content://org.fdroid.fdroid.data.AppProvider", projection);
|
assertValidUri(resolver, AppProvider.getContentUri(), "content://org.fdroid.fdroid.data.AppProvider", projection);
|
||||||
assertValidUri(resolver, AppProvider.getSearchUri("'searching!'"), "content://org.fdroid.fdroid.data.AppProvider/search/'searching!'", projection);
|
assertValidUri(resolver, AppProvider.getSearchUri("'searching!'"), "content://org.fdroid.fdroid.data.AppProvider/search/'searching!'", projection);
|
||||||
assertValidUri(resolver, AppProvider.getSearchUri("/"), "content://org.fdroid.fdroid.data.AppProvider/search/%2F", projection);
|
assertValidUri(resolver, AppProvider.getSearchUri("/"), "content://org.fdroid.fdroid.data.AppProvider/search/%2F", projection);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user