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=e81a71c2c87b098cb6bcaa072790f191a3493e0f;hp=47154b0b8744ca66302172db2380a3a337525e46;hb=c040f83305fb25dfe9a7c088683926b7d101c373;hpb=1108e69e3c14e3b8d9f0c7e0c997f2e1a6a61adb 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 47154b0b..e81a71c2 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java @@ -169,11 +169,11 @@ public class RetrieveTransactionsTask acct_name = acct_name.replace("\"", ""); L(String.format("found account: %s", acct_name)); - lastAccount = profile.loadAccount(acct_name); - if (lastAccount == null) { + lastAccount = profile.tryLoadAccount(db, acct_name); + if (lastAccount == null) lastAccount = new LedgerAccount(acct_name); - profile.storeAccount(db, lastAccount); - } + else lastAccount.removeAmounts(); + profile.storeAccount(db, lastAccount); // make sure the parent account(s) are present, // synthesising them if necessary @@ -189,16 +189,17 @@ public class RetrieveTransactionsTask while (!toAppend.isEmpty()) { String aName = toAppend.pop(); LedgerAccount acc = new LedgerAccount(aName); - acc.setHidden(lastAccount.isHidden()); - if (!onlyStarred || !acc.isHidden()) - accountList.add(acc); + acc.setHiddenByStar(lastAccount.isHiddenByStar()); + if ((!onlyStarred || !acc.isHiddenByStar()) && + acc.isVisible(accountList)) accountList.add(acc); L(String.format("gap-filling with %s", aName)); accountNames.put(aName, null); profile.storeAccount(db, acc); } } - if (!onlyStarred || !lastAccount.isHidden()) + if ((!onlyStarred || !lastAccount.isHiddenByStar()) && + lastAccount.isVisible(accountList)) accountList.add(lastAccount); accountNames.put(acct_name, null); @@ -395,14 +396,17 @@ public class RetrieveTransactionsTask ParsedLedgerAccount parsedAccount = parser.nextAccount(); if (parsedAccount == null) break; - LedgerAccount acc = new LedgerAccount(parsedAccount.getAname()); + LedgerAccount acc = profile.tryLoadAccount(db, parsedAccount.getAname()); + if (acc == null) acc = new LedgerAccount(parsedAccount.getAname()); + else acc.removeAmounts(); + profile.storeAccount(db, acc); for (ParsedBalance b : parsedAccount.getAebalance()) { profile.storeAccountValue(db, acc.getName(), b.getAcommodity(), b.getAquantity().asFloat()); } - accountList.add(acc); + if (acc.isVisible(accountList)) accountList.add(acc); } throwIfCancelled();