make RepoProvider.Helper take Context rather than ContentResolver
This makes the code a bit neater, and passing the Context around is a common pattern. https://dev.guardianproject.info/issues/2926 refs #2926
This commit is contained in:
parent
a8bf9f7614
commit
ab6166c36d
@ -837,8 +837,7 @@ public class AppDetails extends ListActivity {
|
||||
// Install the version of this app denoted by 'app.curApk'.
|
||||
private void install(final Apk apk) {
|
||||
String [] projection = { RepoProvider.DataColumns.ADDRESS };
|
||||
Repo repo = RepoProvider.Helper.findById(
|
||||
getContentResolver(), apk.repo, projection);
|
||||
Repo repo = RepoProvider.Helper.findById(this, apk.repo, projection);
|
||||
if (repo == null || repo.address == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -248,7 +248,7 @@ public class UpdateService extends IntentService implements ProgressListener {
|
||||
// Grab some preliminary information, then we can release the
|
||||
// database while we do all the downloading, etc...
|
||||
int updates = 0;
|
||||
List<Repo> repos = RepoProvider.Helper.all(getContentResolver());
|
||||
List<Repo> repos = RepoProvider.Helper.all(this);
|
||||
|
||||
// Process each repo...
|
||||
Map<String, App> appsToUpdate = new HashMap<String, App>();
|
||||
|
@ -20,12 +20,13 @@ public class RepoProvider extends FDroidProvider {
|
||||
|
||||
private Helper() {}
|
||||
|
||||
public static Repo findById(ContentResolver resolver, long repoId) {
|
||||
return findById(resolver, repoId, DataColumns.ALL);
|
||||
public static Repo findById(Context context, long repoId) {
|
||||
return findById(context, repoId, DataColumns.ALL);
|
||||
}
|
||||
|
||||
public static Repo findById(ContentResolver resolver, long repoId,
|
||||
public static Repo findById(Context context, long repoId,
|
||||
String[] projection) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
Uri uri = RepoProvider.getContentUri(repoId);
|
||||
Cursor cursor = resolver.query(uri, projection, null, null, null);
|
||||
Repo repo = null;
|
||||
@ -36,32 +37,33 @@ public class RepoProvider extends FDroidProvider {
|
||||
return repo;
|
||||
}
|
||||
|
||||
public static Repo findByAddress(ContentResolver resolver,
|
||||
String address) {
|
||||
return findByAddress(resolver, address, DataColumns.ALL);
|
||||
public static Repo findByAddress(Context context, String address) {
|
||||
return findByAddress(context, address, DataColumns.ALL);
|
||||
}
|
||||
|
||||
public static Repo findByAddress(ContentResolver resolver,
|
||||
public static Repo findByAddress(Context context,
|
||||
String address, String[] projection) {
|
||||
List<Repo> repos = findBy(
|
||||
resolver, DataColumns.ADDRESS, address, projection);
|
||||
context, DataColumns.ADDRESS, address, projection);
|
||||
return repos.size() > 0 ? repos.get(0) : null;
|
||||
}
|
||||
|
||||
public static List<Repo> all(ContentResolver resolver) {
|
||||
return all(resolver, DataColumns.ALL);
|
||||
public static List<Repo> all(Context context) {
|
||||
return all(context, DataColumns.ALL);
|
||||
}
|
||||
|
||||
public static List<Repo> all(ContentResolver resolver, String[] projection) {
|
||||
public static List<Repo> all(Context context, String[] projection) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
Uri uri = RepoProvider.getContentUri();
|
||||
Cursor cursor = resolver.query(uri, projection, null, null, null);
|
||||
return cursorToList(cursor);
|
||||
}
|
||||
|
||||
private static List<Repo> findBy(ContentResolver resolver,
|
||||
private static List<Repo> findBy(Context context,
|
||||
String fieldName,
|
||||
String fieldValue,
|
||||
String[] projection) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
Uri uri = RepoProvider.getContentUri();
|
||||
String[] args = { fieldValue };
|
||||
Cursor cursor = resolver.query(
|
||||
@ -82,8 +84,9 @@ public class RepoProvider extends FDroidProvider {
|
||||
return repos;
|
||||
}
|
||||
|
||||
public static void update(ContentResolver resolver, Repo repo,
|
||||
public static void update(Context context, Repo repo,
|
||||
ContentValues values) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
|
||||
// Change the name to the new address. Next time we update the repo
|
||||
// index file, it will populate the name field with the proper
|
||||
@ -143,31 +146,34 @@ public class RepoProvider extends FDroidProvider {
|
||||
* resolver, but I thought I'd put it here in the interests of having
|
||||
* each of the CRUD methods available in the helper class.
|
||||
*/
|
||||
public static void insert(ContentResolver resolver,
|
||||
public static void insert(Context context,
|
||||
ContentValues values) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
Uri uri = RepoProvider.getContentUri();
|
||||
resolver.insert(uri, values);
|
||||
}
|
||||
|
||||
public static void remove(ContentResolver resolver, long repoId) {
|
||||
public static void remove(Context context, long repoId) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
Uri uri = RepoProvider.getContentUri(repoId);
|
||||
resolver.delete(uri, null, null);
|
||||
}
|
||||
|
||||
public static void purgeApps(Context context, Repo repo, FDroidApp app) {
|
||||
Uri apkUri = ApkProvider.getRepoUri(repo.getId());
|
||||
int apkCount = context.getContentResolver().delete(apkUri, null, null);
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
int apkCount = resolver.delete(apkUri, null, null);
|
||||
Log.d("FDroid", "Removed " + apkCount + " apks from repo " + repo.name);
|
||||
|
||||
Uri appUri = AppProvider.getNoApksUri();
|
||||
int appCount = context.getContentResolver().delete(appUri, null, null);
|
||||
int appCount = resolver.delete(appUri, null, null);
|
||||
Log.d("Log", "Removed " + appCount + " apps with no apks.");
|
||||
|
||||
app.invalidateAllApps();
|
||||
}
|
||||
|
||||
public static int countAppsForRepo(ContentResolver resolver,
|
||||
long repoId) {
|
||||
public static int countAppsForRepo(Context context, long repoId) {
|
||||
ContentResolver resolver = context.getContentResolver();
|
||||
String[] projection = { "COUNT(distinct id)" };
|
||||
String selection = "repo = ?";
|
||||
String[] args = { Long.toString(repoId) };
|
||||
|
@ -263,7 +263,7 @@ abstract public class RepoUpdater {
|
||||
values.put(RepoProvider.DataColumns.NAME, handler.getName());
|
||||
}
|
||||
|
||||
RepoProvider.Helper.update(context.getContentResolver(), repo, values);
|
||||
RepoProvider.Helper.update(context, repo, values);
|
||||
}
|
||||
|
||||
public static class UpdateException extends Exception {
|
||||
|
@ -54,7 +54,7 @@ public class RepoDetailsActivity extends FragmentActivity {
|
||||
RepoProvider.DataColumns.ADDRESS,
|
||||
RepoProvider.DataColumns.FINGERPRINT
|
||||
};
|
||||
repo = RepoProvider.Helper.findById(getContentResolver(), repoId, projection);
|
||||
repo = RepoProvider.Helper.findById(this, repoId, projection);
|
||||
|
||||
ActionBarCompat.create(this).setDisplayHomeAsUpEnabled(true);
|
||||
setTitle(repo.getName());
|
||||
|
@ -77,7 +77,7 @@ public class RepoDetailsFragment extends Fragment {
|
||||
* repo object directly from the database.
|
||||
*/
|
||||
private Repo loadRepoDetails() {
|
||||
return RepoProvider.Helper.findById(getActivity().getContentResolver(), getRepoId());
|
||||
return RepoProvider.Helper.findById(getActivity(), getRepoId());
|
||||
}
|
||||
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
@ -156,8 +156,7 @@ public class RepoDetailsFragment extends Fragment {
|
||||
|
||||
name.setText(repo.getName());
|
||||
|
||||
int appCount = RepoProvider.Helper.countAppsForRepo(
|
||||
getActivity().getContentResolver(), repo.getId());
|
||||
int appCount = RepoProvider.Helper.countAppsForRepo(getActivity(), repo.getId());
|
||||
numApps.setText(Integer.toString(appCount));
|
||||
|
||||
setupDescription(repoView, repo);
|
||||
@ -197,7 +196,7 @@ public class RepoDetailsFragment extends Fragment {
|
||||
// Ensure repo is enabled before updating...
|
||||
ContentValues values = new ContentValues(1);
|
||||
values.put(RepoProvider.DataColumns.IN_USE, 1);
|
||||
RepoProvider.Helper.update(getActivity().getContentResolver(), repo, values);
|
||||
RepoProvider.Helper.update(getActivity(), repo, values);
|
||||
|
||||
UpdateService.updateRepoNow(repo.address, getActivity()).setListener(new ProgressListener() {
|
||||
@Override
|
||||
@ -230,7 +229,7 @@ public class RepoDetailsFragment extends Fragment {
|
||||
if (!repo.address.equals(s.toString())) {
|
||||
ContentValues values = new ContentValues(1);
|
||||
values.put(RepoProvider.DataColumns.ADDRESS, s.toString());
|
||||
RepoProvider.Helper.update(getActivity().getContentResolver(), repo, values);
|
||||
RepoProvider.Helper.update(getActivity(), repo, values);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -310,7 +309,7 @@ public class RepoDetailsFragment extends Fragment {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Repo repo = RepoDetailsFragment.this.repo;
|
||||
RepoProvider.Helper.remove(getActivity().getContentResolver(), repo.getId());
|
||||
RepoProvider.Helper.remove(getActivity(), repo.getId());
|
||||
getActivity().finish();
|
||||
}
|
||||
}).setNegativeButton(android.R.string.cancel,
|
||||
|
@ -106,8 +106,7 @@ public class RepoListFragment extends ListFragment
|
||||
if (repo.inuse != isEnabled) {
|
||||
ContentValues values = new ContentValues(1);
|
||||
values.put(RepoProvider.DataColumns.IN_USE, isEnabled ? 1 : 0);
|
||||
RepoProvider.Helper.update(
|
||||
getActivity().getContentResolver(), repo, values);
|
||||
RepoProvider.Helper.update(getActivity(), repo, values);
|
||||
|
||||
if (isEnabled) {
|
||||
changed = true;
|
||||
@ -312,7 +311,7 @@ public class RepoListFragment extends ListFragment
|
||||
final EditText fingerprintEditText = (EditText) view.findViewById(R.id.edit_fingerprint);
|
||||
|
||||
final Repo repo = (newAddress != null && isImportingRepo)
|
||||
? RepoProvider.Helper.findByAddress(getActivity().getContentResolver(), newAddress)
|
||||
? RepoProvider.Helper.findByAddress(getActivity(), newAddress)
|
||||
: null;
|
||||
|
||||
alrt.setIcon(android.R.drawable.ic_menu_add);
|
||||
@ -409,7 +408,7 @@ public class RepoListFragment extends ListFragment
|
||||
ContentValues values = new ContentValues(2);
|
||||
values.put(RepoProvider.DataColumns.ADDRESS, address);
|
||||
values.put(RepoProvider.DataColumns.FINGERPRINT, fingerprint.toUpperCase(Locale.ENGLISH));
|
||||
RepoProvider.Helper.insert(getActivity().getContentResolver(), values);
|
||||
RepoProvider.Helper.insert(getActivity(), values);
|
||||
finishedAddingRepo();
|
||||
}
|
||||
|
||||
@ -419,7 +418,7 @@ public class RepoListFragment extends ListFragment
|
||||
private void createNewRepo(Repo repo) {
|
||||
ContentValues values = new ContentValues(1);
|
||||
values.put(RepoProvider.DataColumns.IN_USE, 1);
|
||||
RepoProvider.Helper.update(getActivity().getContentResolver(), repo, values);
|
||||
RepoProvider.Helper.update(getActivity(), repo, values);
|
||||
repo.inuse = true;
|
||||
finishedAddingRepo();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user