use of net.osmand.plus.backup.RemoteFile in project Osmand by osmandapp.
the class BaseBackupTypesFragment method getDataList.
protected Map<ExportSettingsCategory, SettingsCategoryItems> getDataList() {
Map<String, RemoteFile> remoteFiles = backupHelper.getBackup().getRemoteFiles(getRemoteFilesType());
if (remoteFiles == null) {
remoteFiles = Collections.emptyMap();
}
Map<ExportSettingsType, List<?>> settingsToOperate = new EnumMap<>(ExportSettingsType.class);
for (ExportSettingsType type : ExportSettingsType.getEnabledTypes()) {
List<RemoteFile> filesByType = new ArrayList<>();
for (RemoteFile remoteFile : remoteFiles.values()) {
if (ExportSettingsType.getExportSettingsTypeForRemoteFile(remoteFile) == type) {
filesByType.add(remoteFile);
}
}
settingsToOperate.put(type, filesByType);
}
return SettingsHelper.getSettingsToOperateByCategory(settingsToOperate, true);
}
use of net.osmand.plus.backup.RemoteFile in project Osmand by osmandapp.
the class BaseDeleteFilesCommand method deleteFiles.
protected void deleteFiles(@NonNull List<RemoteFile> remoteFiles) {
Map<String, String> commonParameters = new HashMap<>();
commonParameters.put("deviceid", getHelper().getDeviceId());
commonParameters.put("accessToken", getHelper().getAccessToken());
List<DeleteRemoteFileTask> tasks = new ArrayList<>();
for (RemoteFile remoteFile : remoteFiles) {
Map<String, String> parameters = new HashMap<>(commonParameters);
parameters.put("name", remoteFile.getName());
parameters.put("type", remoteFile.getType());
if (byVersion) {
parameters.put("updatetime", String.valueOf(remoteFile.getUpdatetimems()));
}
Request r = new Request(byVersion ? DELETE_FILE_VERSION_URL : DELETE_FILE_URL, parameters, null, false, true);
tasks.add(new DeleteRemoteFileTask(getApp(), r, remoteFile, byVersion));
}
ThreadPoolTaskExecutor<DeleteRemoteFileTask> executor = new ThreadPoolTaskExecutor<>(new OnThreadPoolTaskExecutorListener<DeleteRemoteFileTask>() {
@Override
public void onTaskStarted(@NonNull DeleteRemoteFileTask task) {
}
@Override
public void onTaskFinished(@NonNull DeleteRemoteFileTask task) {
publishProgress(task);
}
@Override
public void onTasksFinished(@NonNull List<DeleteRemoteFileTask> tasks) {
BaseDeleteFilesCommand.this.tasks = tasks;
}
});
executor.run(tasks);
}
use of net.osmand.plus.backup.RemoteFile in project Osmand by osmandapp.
the class DeleteAllFilesCommand method getDeleteAllFilesListener.
private OnRequestResultListener getDeleteAllFilesListener() {
return (resultJson, error, resultCode) -> {
int status;
String message;
List<RemoteFile> remoteFiles = new ArrayList<>();
if (!Algorithms.isEmpty(error)) {
status = STATUS_SERVER_ERROR;
message = "Download file list error: " + new BackupError(error);
} else if (!Algorithms.isEmpty(resultJson)) {
try {
JSONObject result = new JSONObject(resultJson);
JSONArray files = result.getJSONArray("allFiles");
for (int i = 0; i < files.length(); i++) {
remoteFiles.add(new RemoteFile(files.getJSONObject(i)));
}
status = STATUS_SUCCESS;
message = "OK";
} catch (JSONException e) {
status = STATUS_PARSE_JSON_ERROR;
message = "Download file list error: json parsing";
}
} else {
status = STATUS_EMPTY_RESPONSE_ERROR;
message = "Download file list error: empty response";
}
if (status != STATUS_SUCCESS) {
publishProgress(status, message);
} else {
List<RemoteFile> filesToDelete = new ArrayList<>();
if (types != null) {
for (RemoteFile file : remoteFiles) {
ExportSettingsType exportType = ExportSettingsType.getExportSettingsTypeForRemoteFile(file);
if (types.contains(exportType)) {
filesToDelete.add(file);
}
}
} else {
filesToDelete.addAll(remoteFiles);
}
if (!filesToDelete.isEmpty()) {
publishProgress(filesToDelete);
deleteFiles(filesToDelete);
} else {
publishProgress(Collections.emptyMap());
}
}
};
}
use of net.osmand.plus.backup.RemoteFile in project Osmand by osmandapp.
the class DeleteOldFilesCommand method getDeleteOldFilesListener.
private OnRequestResultListener getDeleteOldFilesListener() {
return (resultJson, error, resultCode) -> {
int status;
String message;
List<RemoteFile> remoteFiles = new ArrayList<>();
if (!Algorithms.isEmpty(error)) {
status = STATUS_SERVER_ERROR;
message = "Download file list error: " + new BackupError(error);
} else if (!Algorithms.isEmpty(resultJson)) {
try {
JSONObject result = new JSONObject(resultJson);
JSONArray allFiles = result.getJSONArray("allFiles");
for (int i = 0; i < allFiles.length(); i++) {
remoteFiles.add(new RemoteFile(allFiles.getJSONObject(i)));
}
JSONArray uniqueFiles = result.getJSONArray("uniqueFiles");
for (int i = 0; i < uniqueFiles.length(); i++) {
remoteFiles.remove(new RemoteFile(uniqueFiles.getJSONObject(i)));
}
status = STATUS_SUCCESS;
message = "OK";
} catch (JSONException e) {
status = STATUS_PARSE_JSON_ERROR;
message = "Download file list error: json parsing";
}
} else {
status = STATUS_EMPTY_RESPONSE_ERROR;
message = "Download file list error: empty response";
}
if (status != STATUS_SUCCESS) {
publishProgress(status, message);
} else {
List<RemoteFile> filesToDelete = new ArrayList<>();
if (types != null) {
for (RemoteFile file : remoteFiles) {
ExportSettingsType exportType = ExportSettingsType.getExportSettingsTypeForRemoteFile(file);
if (types.contains(exportType)) {
filesToDelete.add(file);
}
}
} else {
filesToDelete.addAll(remoteFiles);
}
if (!filesToDelete.isEmpty()) {
publishProgress(filesToDelete);
deleteFiles(filesToDelete);
} else {
publishProgress(Collections.emptyMap());
}
}
};
}
use of net.osmand.plus.backup.RemoteFile in project Osmand by osmandapp.
the class BaseDeleteFilesCommand method onProgressUpdate.
@Override
protected void onProgressUpdate(Object... objects) {
for (OnDeleteFilesListener listener : getListeners()) {
Object obj = objects[0];
if (obj instanceof DeleteRemoteFileTask) {
RemoteFile remoteFile = ((DeleteRemoteFileTask) obj).remoteFile;
itemsProgress.add(remoteFile);
listener.onFileDeleteProgress(remoteFile, itemsProgress.size());
}
}
}
Aggregations