Skip to content

Commit

Permalink
pass collection files to asynctask
Browse files Browse the repository at this point in the history
  • Loading branch information
SaumiaSinghal committed Aug 14, 2020
1 parent fcfb6b9 commit 59dafaa
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 30 deletions.
Expand Up @@ -6,15 +6,16 @@
import org.odk.collect.android.javarosawrapper.FormController;
import org.odk.collect.android.tasks.SaveFormToDisk;
import org.odk.collect.android.tasks.SaveToDiskResult;
import org.odk.collect.android.utilities.QuestionMediaManager;

import java.util.Collection;

public class DiskFormSaver implements FormSaver {

@Override
public SaveToDiskResult save(Uri instanceContentURI, FormController formController, boolean shouldFinalize, boolean exitAfter,
String updatedSaveName, ProgressListener progressListener, QuestionMediaManager questionMediaManager, Analytics analytics) {
String updatedSaveName, ProgressListener progressListener, Analytics analytics, Collection<String> files) {
SaveFormToDisk saveFormToDisk = new SaveFormToDisk(formController, exitAfter, shouldFinalize,
updatedSaveName, instanceContentURI, questionMediaManager, analytics);
updatedSaveName, instanceContentURI, analytics, files);
return saveFormToDisk.saveForm(progressListener);
}
}
Expand Up @@ -32,6 +32,8 @@
import java.io.File;

import timber.log.Timber;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

Expand Down Expand Up @@ -63,6 +65,11 @@ public FormSaveViewModel(Clock clock, FormSaver formSaver, Analytics analytics)
this.analytics = analytics;
}

@Override
protected void onCleared() {
releaseMediaManager();
}

@Override
public void formLoaded(FormController formController) {
this.formController = formController;
Expand Down Expand Up @@ -173,7 +180,7 @@ public String getReason() {
}

private void saveToDisk(SaveRequest saveRequest) {
saveTask = new SaveTask(saveRequest, formSaver, formController, this, new SaveTask.Listener() {
saveTask = new SaveTask(saveRequest, formSaver, formController, new SaveTask.Listener() {
@Override
public void onProgressPublished(String progress) {
saveResult.setValue(new SaveResult(SaveResult.State.SAVING, saveRequest, progress));
Expand All @@ -182,8 +189,9 @@ public void onProgressPublished(String progress) {
@Override
public void onComplete(SaveToDiskResult saveToDiskResult) {
handleTaskResult(saveToDiskResult, saveRequest);
releaseMediaManager();
}
}, analytics).execute();
}, analytics, originalFiles.values()).execute();
}

private void handleTaskResult(SaveToDiskResult taskResult, SaveRequest saveRequest) {
Expand Down Expand Up @@ -279,14 +287,6 @@ public void replaceRecentFileForQuestion(String questionIndex, String fileName)
}
}

@Override
public void saveChanges() {
for (String fileName : originalFiles.values()) {
MediaUtils.deleteImageFileFromMediaProvider(fileName);
}
releaseMediaManager();
}

private void releaseMediaManager() {
originalFiles.clear();
recentFiles.clear();
Expand Down Expand Up @@ -360,24 +360,24 @@ private static class SaveTask extends AsyncTask<Void, String, SaveToDiskResult>

private final Listener listener;
private final FormController formController;
private final QuestionMediaManager questionMediaManager;
private final Analytics analytics;
private final Collection<String> files;

SaveTask(SaveRequest saveRequest, FormSaver formSaver, FormController formController, QuestionMediaManager questionMediaManager, Listener listener, Analytics analytics) {
SaveTask(SaveRequest saveRequest, FormSaver formSaver, FormController formController, Listener listener, Analytics analytics, Collection<String> files) {
this.saveRequest = saveRequest;
this.formSaver = formSaver;
this.listener = listener;
this.formController = formController;
this.questionMediaManager = questionMediaManager;
this.analytics = analytics;
this.files = files;
}

@Override
protected SaveToDiskResult doInBackground(Void... voids) {
return formSaver.save(saveRequest.uri, formController,
saveRequest.shouldFinalize,
saveRequest.viewExiting, saveRequest.updatedSaveName,
this::publishProgress, questionMediaManager, analytics
this::publishProgress, analytics, files
);
}

Expand Down
Expand Up @@ -5,11 +5,12 @@
import org.odk.collect.android.analytics.Analytics;
import org.odk.collect.android.javarosawrapper.FormController;
import org.odk.collect.android.tasks.SaveToDiskResult;
import org.odk.collect.android.utilities.QuestionMediaManager;

import java.util.Collection;

public interface FormSaver {
SaveToDiskResult save(Uri instanceContentURI, FormController formController, boolean shouldFinalize, boolean exitAfter,
String updatedSaveName, ProgressListener progressListener, QuestionMediaManager questionMediaManager, Analytics analytics);
String updatedSaveName, ProgressListener progressListener, Analytics analytics, Collection<String> files);

interface ProgressListener {
void onProgressUpdate(String message);
Expand Down
Expand Up @@ -55,12 +55,13 @@
import org.odk.collect.android.utilities.EncryptionUtils;
import org.odk.collect.android.utilities.EncryptionUtils.EncryptedFormInformation;
import org.odk.collect.android.utilities.FileUtils;
import org.odk.collect.android.utilities.QuestionMediaManager;
import org.odk.collect.android.utilities.MediaUtils;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.util.Collection;

import timber.log.Timber;

Expand All @@ -77,25 +78,25 @@ public class SaveFormToDisk {
private final boolean saveAndExit;
private final boolean shouldFinalize;
private final FormController formController;
private final QuestionMediaManager questionMediaManager;
private Uri uri;
private String instanceName;
private final Analytics analytics;
private final Collection<String> files;

public static final int SAVED = 500;
public static final int SAVE_ERROR = 501;
public static final int SAVED_AND_EXIT = 504;
public static final int ENCRYPTION_ERROR = 505;

public SaveFormToDisk(FormController formController, boolean saveAndExit, boolean shouldFinalize, String updatedName,
Uri uri, QuestionMediaManager questionMediaManager, Analytics analytics) {
Uri uri, Analytics analytics, Collection<String> files) {
this.formController = formController;
this.uri = uri;
this.questionMediaManager = questionMediaManager;
this.saveAndExit = saveAndExit;
this.shouldFinalize = shouldFinalize;
this.instanceName = updatedName;
this.analytics = analytics;
this.files = files;
}

@Nullable
Expand Down Expand Up @@ -370,7 +371,9 @@ private void exportData(boolean markCompleted, FormSaver.ProgressListener progre
// write out xml
String instancePath = formController.getInstanceFile().getAbsolutePath();

questionMediaManager.saveChanges();
for (String fileName : files) {
MediaUtils.deleteImageFileFromMediaProvider(fileName);
}

progressListener.onProgressUpdate(Collect.getInstance().getString(R.string.survey_saving_saving_message));

Expand Down
Expand Up @@ -4,6 +4,4 @@ public interface QuestionMediaManager {
void markOriginalFileOrDelete(String questionIndex, String fileName);

void replaceRecentFileForQuestion(String questionIndex, String fileName);

void saveChanges();
}
Expand Up @@ -18,8 +18,4 @@ public void markOriginalFileOrDelete(String questionIndex, String fileName) {
public void replaceRecentFileForQuestion(String questionIndex, String fileName) {
recentFiles.put(questionIndex, fileName);
}

@Override
public void saveChanges() {
}
}

0 comments on commit 59dafaa

Please sign in to comment.