Merge branch 'master' into 'master'

Save updated repo data at the end of the update

This fixes #84.

See merge request !34
This commit is contained in:
Peter Serwylo 2014-09-11 03:51:24 +00:00
commit 69fd955360
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,7 +249,23 @@ abstract public class RepoUpdater {
values.put(RepoProvider.DataColumns.NAME, handler.getName()); values.put(RepoProvider.DataColumns.NAME, handler.getName());
} }
RepoProvider.Helper.update(context, repo, values); 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);
}
} }
public static class UpdateException extends Exception { public static class UpdateException extends Exception {