Don't modify the objects of the controller directly
Add a method to the controller that allows to set a list of downloads as not available online.
This commit is contained in:
@@ -166,7 +166,7 @@ public class UpdatesActivity extends AppCompatActivity {
|
||||
|
||||
List<UpdateDownload> updates = Utils.parseJson(jsonFile, true);
|
||||
|
||||
List<UpdateDownload> updatesNotAvailable = LegacySupport.importDownloads(this, updates);
|
||||
List<String> importedNotAvailableOnline = LegacySupport.importDownloads(this, updates);
|
||||
|
||||
List<String> updatesOnline = new ArrayList<>();
|
||||
for (UpdateDownload update : updates) {
|
||||
@@ -174,10 +174,9 @@ public class UpdatesActivity extends AppCompatActivity {
|
||||
updatesOnline.add(update.getDownloadId());
|
||||
}
|
||||
|
||||
if (updatesNotAvailable != null) {
|
||||
for (UpdateDownload update : updatesNotAvailable) {
|
||||
update.setAvailableOnline(false);
|
||||
}
|
||||
if (importedNotAvailableOnline != null) {
|
||||
updatesOnline.removeAll(importedNotAvailableOnline);
|
||||
controller.setUpdatesNotAvailableOnline(importedNotAvailableOnline);
|
||||
}
|
||||
|
||||
controller.setUpdatesAvailableOnline(updatesOnline, true);
|
||||
|
@@ -293,6 +293,16 @@ public class UpdaterController implements UpdaterControllerInt {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUpdatesNotAvailableOnline(List<String> downloadIds) {
|
||||
for (String downloadId : downloadIds) {
|
||||
DownloadEntry update = mDownloads.get(downloadId);
|
||||
if (update != null) {
|
||||
update.mUpdate.setAvailableOnline(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUpdatesAvailableOnline(List<String> downloadIds, boolean purgeList) {
|
||||
List<String> toRemove = new ArrayList<>();
|
||||
|
@@ -32,6 +32,8 @@ public interface UpdaterControllerInt {
|
||||
|
||||
void setUpdatesAvailableOnline(List<String> downloadIds, boolean purgeList);
|
||||
|
||||
void setUpdatesNotAvailableOnline(List<String> downloadIds);
|
||||
|
||||
boolean startDownload(String downloadId);
|
||||
|
||||
boolean pauseDownload(String downloadId);
|
||||
|
@@ -46,15 +46,17 @@ public final class LegacySupport {
|
||||
}
|
||||
|
||||
/**
|
||||
* This imports the updates downloaded with CMUpdater. It accepts in input a list of
|
||||
* updates to be downloaded and updates its entries when it finds a matching imported
|
||||
* update (i.e. same filename).
|
||||
* This method imports the updates downloaded with CMUpdater and it adds them to the
|
||||
* updates database. It accepts in input a list of updates which it updates with the
|
||||
* data of matching imported updates (i.e. same filename). If for a given imported
|
||||
* update this method can't find any matching update, it adds a new entry to the
|
||||
* given list.
|
||||
*
|
||||
* @param context
|
||||
* @param updatesJson List of updates to be downloaded
|
||||
* @return List of updates that weren't used to replace entries of updatesJson
|
||||
* @return A list with the IDs of the imported updates with no matching updates
|
||||
*/
|
||||
public static List<UpdateDownload> importDownloads(Context context,
|
||||
public static List<String> importDownloads(Context context,
|
||||
List<UpdateDownload> updatesJson) {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
if (preferences.getBoolean(IMPORT_DONE, false)) {
|
||||
@@ -63,7 +65,7 @@ public final class LegacySupport {
|
||||
|
||||
Log.d(TAG, "Importing downloads");
|
||||
|
||||
List<UpdateDownload> notReplacing = new ArrayList<>();
|
||||
List<String> notReplacing = new ArrayList<>();
|
||||
File updatesDir = new File(context.getDataDir(), "updates/");
|
||||
if (updatesDir.isDirectory()) {
|
||||
UpdatesDbHelper dbHelper = new UpdatesDbHelper(context);
|
||||
@@ -93,7 +95,8 @@ public final class LegacySupport {
|
||||
} else {
|
||||
try {
|
||||
UpdateDownload update = createUpdateFromFile(file);
|
||||
notReplacing.add(update);
|
||||
notReplacing.add(update.getDownloadId());
|
||||
updatesJson.add(update);
|
||||
dbHelper.addUpdate(update);
|
||||
} catch (IllegalFilenameException e) {
|
||||
Log.e(TAG, "Deleting " + file.getAbsolutePath(), e);
|
||||
|
Reference in New Issue
Block a user