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=e2e76f6cfc162e9c909ed7119329698569b4c7b8;hp=7f4246cf6e892b57cc2c29bc48a44b10013e4686;hb=505bc6f08a8f526956a57e51fa1709b86a8fb2bf;hpb=a1d55154e1c9fb72fcd60de31d6e64e8d046f96d 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 7f4246cf..e2e76f6c 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java @@ -45,13 +45,13 @@ import java.net.MalformedURLException; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Date; -import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RetrieveTransactionsTask extends AsyncTask { + public static final int MATCHING_TRANSACTIONS_LIMIT = 50; private static final Pattern transactionStartPattern = Pattern.compile("([\\d.-]+)"); private static final Pattern transactionDescriptionPattern = @@ -109,7 +109,7 @@ public class RetrieveTransactionsTask extends Progress progress = new Progress(); int maxTransactionId = Progress.INDETERMINATE; success = false; - List accountList = new ArrayList<>(); + ArrayList accountList = new ArrayList<>(); LedgerAccount lastAccount = null; Data.backgroundTaskCount.incrementAndGet(); try { @@ -181,8 +181,7 @@ public class RetrieveTransactionsTask extends L("curr=" + currency + ", value=" + value); db.execSQL( "insert or replace into account_values(account, currency, value, keep) values(?, ?, ?, 1);", - new Object[]{lastAccount.getName(), - currency, + new Object[]{lastAccount.getName(), currency, Float.valueOf(value) }); lastAccount.addAmount(Float.parseFloat(value), currency); @@ -247,7 +246,9 @@ public class RetrieveTransactionsTask extends "=?", new Integer[]{transaction.getId()}); matchedTransactionsCount++; - if (matchedTransactionsCount == 100) { + if (matchedTransactionsCount == + MATCHING_TRANSACTIONS_LIMIT) + { db.execSQL("UPDATE transactions SET keep=1 WHERE " + "id < ?", new Integer[]{transaction.getId()}); @@ -300,13 +301,15 @@ public class RetrieveTransactionsTask extends break; default: throw new RuntimeException( - String.format("Unknown parser updating %s", state.name())); + String.format("Unknown parser updating %s", + state.name())); } } - if (!isCancelled()) { - db.execSQL("DELETE FROM transactions WHERE keep = 0"); - db.setTransactionSuccessful(); - } + + throwIfCancelled(); + + db.execSQL("DELETE FROM transactions WHERE keep = 0"); + db.setTransactionSuccessful(); } finally { db.endTransaction(); @@ -317,7 +320,7 @@ public class RetrieveTransactionsTask extends if (success && !isCancelled()) { Log.d("db", "Updating transaction value stamp"); MLDB.set_option_value(MLDB.OPT_TRANSACTION_LIST_STAMP, new Date().getTime()); - ((TransactionListViewModel)ctx.currentFragment.model).scheduleTransactionListReload(ctx); + TransactionListViewModel.scheduleTransactionListReload(ctx); } } catch (MalformedURLException e) {