/*
- * Copyright © 2018 Damyan Ivanov.
+ * Copyright © 2019 Damyan Ivanov.
* This file is part of Mobile-Ledger.
* Mobile-Ledger is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
import android.content.SharedPreferences;
import android.database.sqlite.SQLiteDatabase;
+import android.os.OperationCanceledException;
import android.util.Log;
-import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment;
import net.ktnx.mobileledger.R;
import net.ktnx.mobileledger.model.LedgerAccount;
+import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment;
import net.ktnx.mobileledger.utils.MLDB;
import net.ktnx.mobileledger.utils.NetworkUtil;
try {
HttpURLConnection http = NetworkUtil.prepare_connection(pref, "add");
publishProgress(0);
- try (SQLiteDatabase db = MLDB.getWritableDatabase(mContext.get().getActivity())) {
+ try (SQLiteDatabase db = MLDB.getWritableDatabase()) {
try (InputStream resp = http.getInputStream()) {
Log.d("update_accounts", String.valueOf(http.getResponseCode()));
if (http.getResponseCode() != 200) {
Pattern.compile("\"value\":\"([^\"]+)\"");
int count = 0;
while ((line = buf.readLine()) != null) {
+ throwIfCancelled();
+
Matcher m = account_name_re.matcher(line);
if (m.find()) {
String acct_encoded = m.group(1);
m = value_re.matcher(line);
boolean match_found = false;
while (m.find()) {
+ throwIfCancelled();
+
match_found = true;
String value = m.group(1);
String currency = m.group(2);
db.execSQL("update description_history set keep=0;");
m = description_items_re.matcher(line);
while (m.find()) {
+ throwIfCancelled();
+
String description = m.group(1);
if (description.isEmpty()) continue;
db.execSQL("delete from account_values where keep=0;");
db.execSQL("delete from accounts where keep=0;");
-// db.execSQL("delete from description_history where keep=0;");
db.setTransactionSuccessful();
}
+ catch (OperationCanceledException e) {
+ Log.w("async", "Account retrieval cancelled");
+ }
finally {
db.endTransaction();
}
-
}
}
}
return null;
}
+ private void throwIfCancelled() {
+ if (isCancelled()) throw new OperationCanceledException(null);
+ }
private void addAccount(SQLiteDatabase db, String name) {
do {