Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Commit e9c945e

Browse files
author
Evgenii Kanivets
committed
#150. Consolidate OnBackupListener.
1 parent 64cae2d commit e9c945e

File tree

5 files changed

+125
-141
lines changed

5 files changed

+125
-141
lines changed

app/src/main/java/com/blogspot/e_kanivets/moneytracker/activity/external/BackupActivity.java

Lines changed: 65 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
import org.jetbrains.annotations.NotNull;
2828
import timber.log.Timber;
2929

30-
public class BackupActivity extends BaseBackActivity implements BackupAdapter.OnBackupListener {
30+
public class BackupActivity extends BaseBackActivity
31+
implements BackupAdapter.OnBackupListener, BackupController.OnBackupListener {
3132
private static final String APP_KEY = "5lqugcckdy9y6lj";
3233

3334
@Inject PreferenceController preferenceController;
@@ -51,6 +52,7 @@ public class BackupActivity extends BaseBackActivity implements BackupAdapter.On
5152
} else {
5253
DbxRequestConfig config = new DbxRequestConfig("open_money_tracker");
5354
dbClient = new DbxClientV2(config, accessToken);
55+
backupController.setOnBackupListener(this);
5456
fetchBackups();
5557
}
5658

@@ -91,30 +93,72 @@ public class BackupActivity extends BaseBackActivity implements BackupAdapter.On
9193
builder.show();
9294
}
9395

94-
@OnClick(R.id.btn_backup_now) public void backupNow() {
95-
AnswersProxy.get().logButton("Make Backup");
96-
startProgress(getString(R.string.making_backup));
97-
backupController.makeBackup(dbClient, new BackupController.OnBackupListener() {
98-
@Override public void onBackupSuccess() {
99-
AnswersProxy.get().logEvent("Backup success");
100-
Timber.d("Backup success.");
101-
if (isFinishing()) return;
96+
@Override public void onBackupsFetched(@NonNull List<String> backupList) {
97+
if (isFinishing()) return;
10298

103-
stopProgress();
104-
fetchBackups();
105-
}
99+
stopProgress();
100+
101+
BackupAdapter backupAdapter = new BackupAdapter(BackupActivity.this, backupList);
102+
backupAdapter.setOnBackupListener(BackupActivity.this);
103+
listView.setAdapter(backupAdapter);
104+
}
105+
106+
@Override public void onBackupSuccess() {
107+
AnswersProxy.get().logEvent("Backup success");
108+
Timber.d("Backup success.");
109+
if (isFinishing()) return;
110+
111+
stopProgress();
112+
fetchBackups();
113+
}
114+
115+
@Override public void onBackupFailure(String reason) {
116+
AnswersProxy.get().logEvent("Backup failure");
117+
Timber.d("Backup failure.");
118+
if (isFinishing()) return;
119+
120+
stopProgress();
121+
showToast(R.string.failed_create_backup);
122+
123+
if (BackupController.OnBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
124+
}
106125

107-
@Override public void onBackupFailure(String reason) {
108-
AnswersProxy.get().logEvent("Backup failure");
109-
Timber.d("Backup failure.");
110-
if (isFinishing()) return;
126+
@Override public void onRestoreSuccess(@NonNull String backupName) {
127+
AnswersProxy.get().logEvent("Restore Success");
128+
Timber.d("Restore success.");
129+
if (isFinishing()) return;
111130

112-
stopProgress();
113-
showToast(R.string.failed_create_backup);
131+
stopProgress();
114132

115-
if (BackupController.OnBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
133+
AlertDialog.Builder builder = new AlertDialog.Builder(BackupActivity.this);
134+
builder.setTitle(getString(R.string.backup_is_restored));
135+
builder.setMessage(getString(R.string.backup_restored, backupName));
136+
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
137+
@Override public void onDismiss(DialogInterface dialog) {
138+
MtApp.get().buildAppComponent();
139+
setResult(RESULT_OK);
140+
finish();
116141
}
117142
});
143+
builder.setPositiveButton(android.R.string.ok, null);
144+
builder.show();
145+
}
146+
147+
@Override public void onRestoreFailure(String reason) {
148+
AnswersProxy.get().logEvent("Restore Failure");
149+
Timber.d("Restore failure.");
150+
if (isFinishing()) return;
151+
152+
stopProgress();
153+
showToast(R.string.failed_restore_backup);
154+
155+
if (BackupController.OnBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
156+
}
157+
158+
@OnClick(R.id.btn_backup_now) public void backupNow() {
159+
AnswersProxy.get().logButton("Make Backup");
160+
startProgress(getString(R.string.making_backup));
161+
backupController.makeBackup(dbClient);
118162
}
119163

120164
@OnItemClick(R.id.list_view) public void restoreBackupClicked(int position) {
@@ -135,54 +179,12 @@ public class BackupActivity extends BaseBackActivity implements BackupAdapter.On
135179

136180
private void restoreBackup(final String backupName) {
137181
startProgress(getString(R.string.restoring_backup));
138-
backupController.restoreBackup(dbClient, backupName, new BackupController.OnRestoreBackupListener() {
139-
@Override public void onRestoreSuccess() {
140-
AnswersProxy.get().logEvent("Restore Success");
141-
Timber.d("Restore success.");
142-
if (isFinishing()) return;
143-
144-
stopProgress();
145-
146-
AlertDialog.Builder builder = new AlertDialog.Builder(BackupActivity.this);
147-
builder.setTitle(getString(R.string.backup_is_restored));
148-
builder.setMessage(getString(R.string.backup_restored, backupName));
149-
builder.setOnDismissListener(new DialogInterface.OnDismissListener() {
150-
@Override public void onDismiss(DialogInterface dialog) {
151-
MtApp.get().buildAppComponent();
152-
setResult(RESULT_OK);
153-
finish();
154-
}
155-
});
156-
builder.setPositiveButton(android.R.string.ok, null);
157-
builder.show();
158-
}
159-
160-
@Override public void onRestoreFailure(String reason) {
161-
AnswersProxy.get().logEvent("Restore Failure");
162-
Timber.d("Restore failure.");
163-
if (isFinishing()) return;
164-
165-
stopProgress();
166-
showToast(R.string.failed_restore_backup);
167-
168-
if (BackupController.OnRestoreBackupListener.ERROR_AUTHENTICATION.equals(reason)) logout();
169-
}
170-
});
182+
backupController.restoreBackup(dbClient, backupName);
171183
}
172184

173185
private void fetchBackups() {
174186
startProgress(getString(R.string.fetching_backups));
175-
backupController.fetchBackups(dbClient, new BackupController.OnFetchBackupListListener() {
176-
@Override public void onBackupsFetched(@NonNull List<String> backupList) {
177-
if (isFinishing()) return;
178-
179-
stopProgress();
180-
181-
BackupAdapter backupAdapter = new BackupAdapter(BackupActivity.this, backupList);
182-
backupAdapter.setOnBackupListener(BackupActivity.this);
183-
listView.setAdapter(backupAdapter);
184-
}
185-
});
187+
backupController.fetchBackups(dbClient);
186188
}
187189

188190
private void deleteBackup(String backupName) {

app/src/main/java/com/blogspot/e_kanivets/moneytracker/controller/backup/BackupController.java

Lines changed: 0 additions & 73 deletions
This file was deleted.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.blogspot.e_kanivets.moneytracker.controller.backup
2+
3+
import com.blogspot.e_kanivets.moneytracker.controller.FormatController
4+
import com.blogspot.e_kanivets.moneytracker.controller.backup.tasks.DropboxBackupAsyncTask
5+
import com.blogspot.e_kanivets.moneytracker.controller.backup.tasks.DropboxFetchBackupListAsyncTask
6+
import com.blogspot.e_kanivets.moneytracker.controller.backup.tasks.DropboxRestoreBackupAsyncTask
7+
import com.dropbox.core.v2.DbxClientV2
8+
9+
/**
10+
* Controller class to encapsulate backup logic.
11+
* Created on 8/10/16.
12+
*
13+
* @author Evgenii Kanivets
14+
*/
15+
class BackupController(private val formatController: FormatController, filesDir: String) {
16+
17+
var onBackupListener: OnBackupListener? = null
18+
19+
private val appDbFileName: String = "$filesDir/databases/database"
20+
21+
fun makeBackup(dbClient: DbxClientV2) {
22+
val fileName = formatController.formatDateAndTime(System.currentTimeMillis())
23+
val asyncTask = DropboxBackupAsyncTask(dbClient, fileName, appDbFileName, onBackupListener)
24+
asyncTask.execute()
25+
}
26+
27+
fun restoreBackup(dbClient: DbxClientV2, backupName: String) {
28+
val asyncTask = DropboxRestoreBackupAsyncTask(dbClient, appDbFileName, backupName, onBackupListener)
29+
asyncTask.execute()
30+
}
31+
32+
fun fetchBackups(dbClient: DbxClientV2) {
33+
val asyncTask = DropboxFetchBackupListAsyncTask(dbClient, onBackupListener)
34+
asyncTask.execute()
35+
}
36+
37+
interface OnBackupListener {
38+
39+
fun onBackupsFetched(backupList: List<String>)
40+
41+
fun onBackupSuccess()
42+
43+
fun onBackupFailure(reason: String?)
44+
45+
fun onRestoreSuccess(backupName: String)
46+
47+
fun onRestoreFailure(reason: String?)
48+
49+
companion object {
50+
const val SUCCESS = "success"
51+
const val ERROR_AUTHENTICATION = "error_authentication"
52+
}
53+
}
54+
55+
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/controller/backup/tasks/DropboxFetchBackupListAsyncTask.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public class DropboxFetchBackupListAsyncTask extends AsyncTask<Void, List<String
1414
private DbxClientV2 dbClient;
1515

1616
@Nullable
17-
private BackupController.OnFetchBackupListListener listener;
17+
private BackupController.OnBackupListener listener;
1818

1919
public DropboxFetchBackupListAsyncTask(DbxClientV2 dbClient,
20-
@Nullable BackupController.OnFetchBackupListListener listener) {
20+
@Nullable BackupController.OnBackupListener listener) {
2121
this.dbClient = dbClient;
2222
this.listener = listener;
2323
}

app/src/main/java/com/blogspot/e_kanivets/moneytracker/controller/backup/tasks/DropboxRestoreBackupAsyncTask.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ public class DropboxRestoreBackupAsyncTask extends AsyncTask<Void, String, Strin
1818
private String appDbFileName;
1919
private String backupName;
2020

21-
@Nullable private BackupController.OnRestoreBackupListener listener;
21+
@Nullable private BackupController.OnBackupListener listener;
2222

2323
public DropboxRestoreBackupAsyncTask(DbxClientV2 dbClient, String appDbFileName, String backupName,
24-
@Nullable BackupController.OnRestoreBackupListener listener) {
24+
@Nullable BackupController.OnBackupListener listener) {
2525
this.dbClient = dbClient;
2626
this.appDbFileName = appDbFileName;
2727
this.backupName = backupName;
@@ -72,7 +72,7 @@ public DropboxRestoreBackupAsyncTask(DbxClientV2 dbClient, String appDbFileName,
7272
if (listener == null) return;
7373

7474
if (BackupController.OnBackupListener.SUCCESS.equals(result)) {
75-
listener.onRestoreSuccess();
75+
listener.onRestoreSuccess(backupName);
7676
} else {
7777
listener.onRestoreFailure(result);
7878
}

0 commit comments

Comments
 (0)