Save new repo data at end of update

Saves the new data for the repo at the end of the update process to enable the user to re-trigger the update in case the update exited prematurely.
Fixes #84.
This commit is contained in:
Ron Rieve 2014-09-10 16:22:02 +02:00
parent 6b12a006fb
commit 692a25abcb
2 changed files with 31 additions and 3 deletions

View File

@ -327,6 +327,7 @@ public class UpdateService extends IntentService implements ProgressListener {
List<Repo> unchangedRepos = new ArrayList<Repo>(); List<Repo> unchangedRepos = new ArrayList<Repo>();
List<Repo> updatedRepos = new ArrayList<Repo>(); List<Repo> updatedRepos = new ArrayList<Repo>();
List<Repo> disabledRepos = new ArrayList<Repo>(); List<Repo> disabledRepos = new ArrayList<Repo>();
List<RepoUpdater.RepoUpdateRememberer> repoUpdateRememberers = new ArrayList<RepoUpdater.RepoUpdateRememberer>();
boolean changes = false; boolean changes = false;
for (Repo repo : repos) { for (Repo repo : repos) {
@ -350,6 +351,7 @@ public class UpdateService extends IntentService implements ProgressListener {
apksToUpdate.addAll(updater.getApks()); apksToUpdate.addAll(updater.getApks());
updatedRepos.add(repo); updatedRepos.add(repo);
changes = true; changes = true;
repoUpdateRememberers.add(updater.getRememberer());
} else { } else {
unchangedRepos.add(repo); unchangedRepos.add(repo);
} }
@ -389,6 +391,11 @@ public class UpdateService extends IntentService implements ProgressListener {
notifyContentProviders(); notifyContentProviders();
//we only remember the update if everything has gone well
for (RepoUpdater.RepoUpdateRememberer rememberer : repoUpdateRememberers) {
rememberer.rememberUpdate();
}
if (prefs.getBoolean(Preferences.PREF_UPD_NOTIFY, true)) { if (prefs.getBoolean(Preferences.PREF_UPD_NOTIFY, true)) {
performUpdateNotification(appsToUpdate.values()); performUpdateNotification(appsToUpdate.values());
} }

View File

@ -49,6 +49,7 @@ abstract public class RepoUpdater {
protected final Repo repo; protected final Repo repo;
private List<App> apps = new ArrayList<App>(); private List<App> apps = new ArrayList<App>();
private List<Apk> apks = new ArrayList<Apk>(); private List<Apk> apks = new ArrayList<Apk>();
private RepoUpdateRememberer rememberer = null;
protected boolean usePubkeyInJar = false; protected boolean usePubkeyInJar = false;
protected boolean hasChanged = false; protected boolean hasChanged = false;
protected ProgressListener progressListener; protected ProgressListener progressListener;
@ -170,7 +171,11 @@ abstract public class RepoUpdater {
reader.parse(is); reader.parse(is);
apps = handler.getApps(); apps = handler.getApps();
apks = handler.getApks(); apks = handler.getApks();
updateRepo(handler, downloader.getCacheTag());
rememberer = new RepoUpdateRememberer();
rememberer.context = context;
rememberer.repo = repo;
rememberer.values = prepareRepoDetailsForSaving(handler, downloader.getCacheTag());
} }
} catch (SAXException e) { } catch (SAXException e) {
throw new UpdateException( throw new UpdateException(
@ -196,7 +201,7 @@ abstract public class RepoUpdater {
} }
} }
private void updateRepo(RepoXMLHandler handler, String etag) { private ContentValues prepareRepoDetailsForSaving (RepoXMLHandler handler, String etag) {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
@ -244,9 +249,25 @@ abstract public class RepoUpdater {
values.put(RepoProvider.DataColumns.NAME, handler.getName()); values.put(RepoProvider.DataColumns.NAME, handler.getName());
} }
return values;
}
public RepoUpdateRememberer getRememberer() {
return rememberer;
}
public static class RepoUpdateRememberer {
private Context context;
private Repo repo;
private ContentValues values;
public void rememberUpdate() {
RepoProvider.Helper.update(context, repo, values); RepoProvider.Helper.update(context, repo, values);
} }
}
public static class UpdateException extends Exception { public static class UpdateException extends Exception {
private static final long serialVersionUID = -4492452418826132803L; private static final long serialVersionUID = -4492452418826132803L;