X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FRetrieveTransactionsTask.java;h=1962173cfecb1011bb3edfc3ea5470a74393d931;hp=20a8a20bef3ef59ccb776f91cb7863b6b571ac89;hb=90383a155ec16a9f13b1e6ac94a118033e09b3aa;hpb=760d6de24d0c4035380c99440f5771ebf2ed96bf
diff --git a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java
index 20a8a20b..1962173c 100644
--- a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java
+++ b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java
@@ -22,6 +22,7 @@ import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.os.OperationCanceledException;
+import net.ktnx.mobileledger.App;
import net.ktnx.mobileledger.err.HTTPException;
import net.ktnx.mobileledger.json.AccountListParser;
import net.ktnx.mobileledger.json.ParsedBalance;
@@ -34,7 +35,6 @@ import net.ktnx.mobileledger.model.LedgerTransaction;
import net.ktnx.mobileledger.model.LedgerTransactionAccount;
import net.ktnx.mobileledger.model.MobileLedgerProfile;
import net.ktnx.mobileledger.ui.activity.MainActivity;
-import net.ktnx.mobileledger.utils.MLDB;
import net.ktnx.mobileledger.utils.NetworkUtil;
import java.io.BufferedReader;
@@ -73,8 +73,11 @@ public class RetrieveTransactionsTask
private Pattern reAccountName = Pattern.compile("/register\\?q=inacct%3A([a-zA-Z0-9%]+)\"");
private Pattern reAccountValue = Pattern.compile(
"\\s*([-+]?[\\d.,]+)(?:\\s+(\\S+))?");
- public RetrieveTransactionsTask(WeakReference contextRef) {
+ private MobileLedgerProfile profile;
+ public RetrieveTransactionsTask(WeakReference contextRef,
+ MobileLedgerProfile profile) {
this.contextRef = contextRef;
+ this.profile = profile;
}
private static void L(String msg) {
//debug("transaction-parser", msg);
@@ -107,7 +110,7 @@ public class RetrieveTransactionsTask
if (context == null) return;
context.onRetrieveDone(null);
}
- private String retrieveTransactionListLegacy(MobileLedgerProfile profile)
+ private String retrieveTransactionListLegacy()
throws IOException, ParseException, HTTPException {
Progress progress = new Progress();
int maxTransactionId = Progress.INDETERMINATE;
@@ -126,7 +129,8 @@ public class RetrieveTransactionsTask
default:
throw new HTTPException(http.getResponseCode(), http.getResponseMessage());
}
- try (SQLiteDatabase db = MLDB.getDatabase()) {
+ // FIXME: why the resource block here? that would close the global DB connection
+ try (SQLiteDatabase db = App.getDatabase()) {
try (InputStream resp = http.getInputStream()) {
if (http.getResponseCode() != 200)
throw new IOException(String.format("HTTP error %d", http.getResponseCode()));
@@ -249,7 +253,8 @@ public class RetrieveTransactionsTask
lastAccount.addAmount(val, currency);
for (LedgerAccount syn : syntheticAccounts.values()) {
syn.addAmount(val, currency);
- profile.storeAccountValue(db, syn.getName(), currency, val);
+ profile.storeAccountValue(db, syn.getName(), currency,
+ val);
}
}
@@ -393,7 +398,7 @@ public class RetrieveTransactionsTask
new String[]{profile.getUuid()});
db.execSQL("update accounts set keep=0 where profile=?;", new String[]{profile.getUuid()});
}
- private boolean retrieveAccountList(MobileLedgerProfile profile)
+ private boolean retrieveAccountList()
throws IOException, HTTPException {
Progress progress = new Progress();
@@ -408,7 +413,7 @@ public class RetrieveTransactionsTask
throw new HTTPException(http.getResponseCode(), http.getResponseMessage());
}
publishProgress(progress);
- SQLiteDatabase db = MLDB.getDatabase();
+ SQLiteDatabase db = App.getDatabase();
ArrayList accountList = new ArrayList<>();
boolean listFilledOK = false;
try (InputStream resp = http.getInputStream()) {
@@ -481,7 +486,7 @@ public class RetrieveTransactionsTask
return true;
}
- private boolean retrieveTransactionList(MobileLedgerProfile profile)
+ private boolean retrieveTransactionList()
throws IOException, ParseException, HTTPException {
Progress progress = new Progress();
int maxTransactionId = Progress.INDETERMINATE;
@@ -497,7 +502,7 @@ public class RetrieveTransactionsTask
default:
throw new HTTPException(http.getResponseCode(), http.getResponseMessage());
}
- SQLiteDatabase db = MLDB.getDatabase();
+ SQLiteDatabase db = App.getDatabase();
try (InputStream resp = http.getInputStream()) {
if (http.getResponseCode() != 200)
throw new IOException(String.format("HTTP error %d", http.getResponseCode()));
@@ -589,11 +594,10 @@ public class RetrieveTransactionsTask
@SuppressLint("DefaultLocale")
@Override
protected String doInBackground(Void... params) {
- MobileLedgerProfile profile = Data.profile.get();
Data.backgroundTaskStarted();
try {
- if (!retrieveAccountList(profile) || !retrieveTransactionList(profile))
- return retrieveTransactionListLegacy(profile);
+ if (!retrieveAccountList() || !retrieveTransactionList())
+ return retrieveTransactionListLegacy();
return null;
}
catch (MalformedURLException e) {