X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FRetrieveTransactionsTask.java;h=dcc91b2f27ff2a7cb2aa5433afee4970741522df;hb=7b32fa0312e4b099b5d21f2764a91ac8435af02d;hp=4ca3f827449c0c0ea5364229169b501877ea4a25;hpb=4ba4845b9cd0c49e7cf41d153aad0c752c1dd608;p=mobile-ledger.git 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 4ca3f827..dcc91b2f 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java @@ -49,7 +49,6 @@ import java.net.URLDecoder; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.Stack; import java.util.regex.Matcher; @@ -340,10 +339,7 @@ public class RetrieveTransactionsTask profile.deleteNotPresentTransactions(db); db.setTransactionSuccessful(); - Log.d("db", "Updating transaction value stamp"); - Date now = new Date(); - profile.setLongOption(MLDB.OPT_LAST_SCRAPE, now.getTime()); - Data.lastUpdateDate.set(now); + profile.setLastUpdateStamp(); return null; } @@ -376,8 +372,10 @@ public class RetrieveTransactionsTask profile.markAccountsAsNotPresent(db); AccountListParser parser = new AccountListParser(resp); + ArrayList accountList = new ArrayList<>(); while (true) { + throwIfCancelled(); ParsedLedgerAccount parsedAccount = parser.nextAccount(); if (parsedAccount == null) break; @@ -387,10 +385,15 @@ public class RetrieveTransactionsTask profile.storeAccountValue(acc.getName(), b.getAcommodity(), b.getAquantity().asFloat()); } + + accountList.add(acc); } + throwIfCancelled(); profile.deleteNotPresentAccounts(db); + throwIfCancelled(); db.setTransactionSuccessful(); + Data.accounts.set(accountList); } finally { db.endTransaction(); @@ -412,6 +415,7 @@ public class RetrieveTransactionsTask try (InputStream resp = http.getInputStream()) { if (http.getResponseCode() != 200) throw new IOException(String.format("HTTP error %d", http.getResponseCode())); + throwIfCancelled(); db.beginTransaction(); try { profile.markTransactionsAsNotPresent(db); @@ -422,7 +426,9 @@ public class RetrieveTransactionsTask int processedTransactionCount = 0; while (true) { + throwIfCancelled(); ParsedLedgerTransaction parsedTransaction = parser.nextTransaction(); + throwIfCancelled(); if (parsedTransaction == null) break; LedgerTransaction transaction = parsedTransaction.asLedgerTransaction(); if (transaction.existsInDb(db)) { @@ -434,6 +440,7 @@ public class RetrieveTransactionsTask progress.setTotal(progress.getProgress()); publishProgress(progress); db.setTransactionSuccessful(); + profile.setLastUpdateStamp(); return true; } } @@ -447,8 +454,11 @@ public class RetrieveTransactionsTask publishProgress(progress); } + throwIfCancelled(); profile.deleteNotPresentTransactions(db); + throwIfCancelled(); db.setTransactionSuccessful(); + profile.setLastUpdateStamp(); } finally { db.endTransaction();