Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
03f4b26
Raise gradle version.
Sep 5, 2018
602d875
Update all dependencies.
Sep 5, 2018
857ff38
#95. Kotlinify EditAccountActivity.
Sep 5, 2018
bba8d27
#95. Move EditAccountActivity to activity.account.edit package.
Sep 5, 2018
a942879
#95. Partly move logic from EditAccountActivity to EditAccountFragment.
Sep 5, 2018
ababa1e
#95. Completely move all logic to EditAccountFragment.
Sep 6, 2018
bc6c4c0
#95. Ongoing refactoring.
Sep 6, 2018
b49d2b1
#95. Add AccountRecordFragment.
Sep 6, 2018
05c19ab
#95. Display account records.
Sep 6, 2018
bd7615d
#95. Rename FragmentAccountRecords to FragmentAccountOperations.
Sep 6, 2018
85e09ab
#95. Kotlinify TransferController.
Sep 10, 2018
710f433
#95. Display transfers as records in account operations.
Sep 10, 2018
3c75b2c
#95. Refactor AccountOperationsFragment.
Sep 10, 2018
7cc5dae
#95. Add tabs to EditAccountActivity.
Sep 10, 2018
db929b8
#95. Add localization.
Sep 10, 2018
6b4b778
#95. Hide FAB when going to Operations tab.
Sep 11, 2018
b622cbd
#95. Updated .travis.yml.
Sep 11, 2018
84e3b7f
Merge pull request #156 from evgenii-kanivets/feature-95_account_oper…
Sep 11, 2018
3e76c15
#150. Add 'Delete' button to backup item view.
Sep 11, 2018
01e5fb2
#150. Implement delete backup listener.
Sep 12, 2018
b4af995
#150. Extract async tasks from BackupController.
Sep 12, 2018
64cae2d
#150. Refactore BackupListener.
Sep 12, 2018
e9c945e
#150. Consolidate OnBackupListener.
Sep 12, 2018
953ca7e
#150. Implement Dropbox backup removal.
Sep 15, 2018
3e396b0
Merge pull request #157 from evgenii-kanivets/feature-150_dropbox_del…
Sep 15, 2018
3bb5ab2
Add 'Removing backup' message.
Sep 15, 2018
24fbc63
#134. Add account goal to EditAccountFragment.
Sep 16, 2018
ea19a2c
#134. Formatting.
Sep 16, 2018
1be7fed
Merge pull request #158 from evgenii-kanivets/feature-134_account_goal
Sep 16, 2018
9fb0339
#153. Add 'NON susbstitution currency' setting.
Sep 16, 2018
1898059
#153. Substitute NON currency in RecordController.
Sep 17, 2018
8015367
#153. Substitute NON currency in AccountController.
Sep 17, 2018
b6924c7
#153. Fine tune CurrencyController.
Sep 17, 2018
1dd6dd4
#153. Fix RecordControllerTest.
Sep 17, 2018
69aab3f
Merge pull request #159 from evgenii-kanivets/feature-153_non_substit…
Sep 17, 2018
69e2186
#155. Fix record layout.
Sep 17, 2018
e824ff1
Merge pull request #160 from evgenii-kanivets/bugfix-155
Sep 17, 2018
6e9450a
Fix tests.
Sep 17, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
#150. Refactore BackupListener.
  • Loading branch information
Evgenii Kanivets committed Sep 12, 2018
commit 64cae2dc54e8bf095a8228a68aa91086fb90aa5b
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@
import com.blogspot.e_kanivets.moneytracker.controller.backup.tasks.DropboxRestoreBackupAsyncTask;
import com.dropbox.core.v2.DbxClientV2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

/**
Expand All @@ -32,98 +27,29 @@ public BackupController(FormatController formatController, String filesDir) {
this.filesDir = filesDir;
}

public void makeBackup(@NonNull DbxClientV2 dbClient,
@Nullable OnBackupListener listener) {
FileInputStream fileInputStream = readAppDb();
long fileLength = readAppDbFileLength();
if (fileInputStream == null) return;

DropboxBackupAsyncTask asyncTask = new DropboxBackupAsyncTask(dbClient,
formatController.formatDateAndTime(System.currentTimeMillis()),
fileInputStream, fileLength, listener);
public void makeBackup(@NonNull DbxClientV2 dbClient, @Nullable OnBackupListener listener) {
DropboxBackupAsyncTask asyncTask =
new DropboxBackupAsyncTask(dbClient, formatController.formatDateAndTime(System.currentTimeMillis()),
getAppDbFileName(), listener);
asyncTask.execute();
}

public void restoreBackup(@NonNull DbxClientV2 dbClient, @NonNull String backupName,
@Nullable final OnRestoreBackupListener listener) {
final File file = new File(getRestoreFileName());
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

if (outputStream == null) {
if (listener != null) listener.onRestoreFailure(null);
} else {
final FileOutputStream finalOutputStream = outputStream;
DropboxRestoreBackupAsyncTask asyncTask = new DropboxRestoreBackupAsyncTask(dbClient,
backupName, outputStream, new OnRestoreBackupListener() {
@Override
public void onRestoreSuccess() {
try {
finalOutputStream.close();
} catch (IOException e) {
if (listener != null) listener.onRestoreFailure(null);
e.printStackTrace();
}

if (file.exists() && file.length() != 0) {
boolean renamed = file.renameTo(new File(getAppDbFileName()));
if (listener != null) {
if (renamed) listener.onRestoreSuccess();
else listener.onRestoreFailure(null);
}
}
}

@Override
public void onRestoreFailure(String reason) {
if (listener != null) listener.onRestoreFailure(reason);
}
});
asyncTask.execute();
}
@Nullable final OnRestoreBackupListener listener) {
DropboxRestoreBackupAsyncTask asyncTask =
new DropboxRestoreBackupAsyncTask(dbClient, getAppDbFileName(), backupName, listener);
asyncTask.execute();
}

public void fetchBackups(@NonNull DbxClientV2 dbClient,
@Nullable OnFetchBackupListListener listener) {
public void fetchBackups(@NonNull DbxClientV2 dbClient, @Nullable OnFetchBackupListListener listener) {
DropboxFetchBackupListAsyncTask asyncTask = new DropboxFetchBackupListAsyncTask(dbClient, listener);
asyncTask.execute();
}

@Nullable
private FileInputStream readAppDb() {
File dbFile = new File(getAppDbFileName());
FileInputStream fis = null;

try {
fis = new FileInputStream(dbFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

return fis;
}

private long readAppDbFileLength() {
File dbFile = new File(getAppDbFileName());

if (dbFile.exists()) return dbFile.length();
else return 0;
}

@NonNull
private String getAppDbFileName() {
@NonNull private String getAppDbFileName() {
return filesDir + "/databases/database";
}

@NonNull
private String getRestoreFileName() {
return getAppDbFileName() + ".restore";
}

public interface OnBackupListener {
String SUCCESS = "success";
String ERROR_AUTHENTICATION = "error_authentication";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,31 @@
import com.dropbox.core.DbxException;
import com.dropbox.core.v2.DbxClientV2;
import com.dropbox.core.v2.files.FileMetadata;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class DropboxBackupAsyncTask extends AsyncTask<Void, String, String> {

private DbxClientV2 dbClient;
private String appDbFileName;
private String fileName;
private FileInputStream fileInputStream;
private long fileLength;

@Nullable
private BackupController.OnBackupListener listener;
@Nullable private BackupController.OnBackupListener listener;

public DropboxBackupAsyncTask(@NonNull DbxClientV2 dbClient, String fileName,
FileInputStream fileInputStream, long fileLength,
public DropboxBackupAsyncTask(@NonNull DbxClientV2 dbClient, String fileName, String appDbFileName,
@Nullable BackupController.OnBackupListener listener) {
this.dbClient = dbClient;
this.fileName = fileName;
this.fileInputStream = fileInputStream;
this.fileLength = fileLength;
this.appDbFileName = appDbFileName;
this.listener = listener;
}

@Override
protected String doInBackground(Void... params) {
@Override protected String doInBackground(Void... params) {
FileInputStream fileInputStream = readAppDb();
if (fileInputStream == null) return null;

FileMetadata info = null;

try {
Expand All @@ -41,16 +42,34 @@ protected String doInBackground(Void... params) {
e.printStackTrace();
}

if (info == null) return null;
else return BackupController.OnBackupListener.SUCCESS;
if (info == null) {
return null;
} else {
return BackupController.OnBackupListener.SUCCESS;
}
}

@Override
protected void onPostExecute(String result) {
@Override protected void onPostExecute(String result) {
super.onPostExecute(result);
if (listener == null) return;

if (BackupController.OnBackupListener.SUCCESS.equals(result)) listener.onBackupSuccess();
else listener.onBackupFailure(result);
if (BackupController.OnBackupListener.SUCCESS.equals(result)) {
listener.onBackupSuccess();
} else {
listener.onBackupFailure(result);
}
}

@Nullable private FileInputStream readAppDb() {
File dbFile = new File(appDbFileName);
FileInputStream fis = null;

try {
fis = new FileInputStream(dbFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

return fis;
}
}
Original file line number Diff line number Diff line change
@@ -1,41 +1,69 @@
package com.blogspot.e_kanivets.moneytracker.controller.backup.tasks;

import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.blogspot.e_kanivets.moneytracker.controller.backup.BackupController;
import com.dropbox.core.DbxException;
import com.dropbox.core.v2.DbxClientV2;
import com.dropbox.core.v2.files.FileMetadata;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class DropboxRestoreBackupAsyncTask extends AsyncTask<Void, String, String> {

private DbxClientV2 dbClient;
private String appDbFileName;
private String backupName;
private FileOutputStream outputStream;

@Nullable private BackupController.OnRestoreBackupListener listener;

public DropboxRestoreBackupAsyncTask(DbxClientV2 dbClient, String backupName, FileOutputStream outputStream,
public DropboxRestoreBackupAsyncTask(DbxClientV2 dbClient, String appDbFileName, String backupName,
@Nullable BackupController.OnRestoreBackupListener listener) {
this.dbClient = dbClient;
this.appDbFileName = appDbFileName;
this.backupName = backupName;
this.outputStream = outputStream;
this.listener = listener;
}

@Override protected String doInBackground(Void... params) {
FileMetadata info = null;
final File file = new File(getRestoreFileName());
FileOutputStream outputStream = null;
try {
info = dbClient.files().download("/" + backupName).download(outputStream);
} catch (DbxException | IOException e) {
outputStream = new FileOutputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

if (info == null) {
if (outputStream == null) {
return null;
} else {
return BackupController.OnBackupListener.SUCCESS;
FileMetadata info = null;
try {
info = dbClient.files().download("/" + backupName).download(outputStream);
} catch (DbxException | IOException e) {
e.printStackTrace();
}

if (info == null) {
return null;
} else {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}

if (file.exists() && file.length() != 0) {
boolean renamed = file.renameTo(new File(appDbFileName));
return renamed ? BackupController.OnBackupListener.SUCCESS : null;
} else {
return null;
}
}
}
}

Expand All @@ -49,4 +77,8 @@ public DropboxRestoreBackupAsyncTask(DbxClientV2 dbClient, String backupName, Fi
listener.onRestoreFailure(result);
}
}

@NonNull private String getRestoreFileName() {
return appDbFileName + ".restore";
}
}