+
+ private class AccountAndTransactionListSaver extends Thread {
+ private final List<LedgerAccount> accounts;
+ private final List<LedgerTransaction> transactions;
+ public AccountAndTransactionListSaver(List<LedgerAccount> accounts,
+ List<LedgerTransaction> transactions) {
+ this.accounts = accounts;
+ this.transactions = transactions;
+ }
+ @Override
+ public void run() {
+ AccountDAO accDao = DB.get()
+ .getAccountDAO();
+ TransactionDAO trDao = DB.get()
+ .getTransactionDAO();
+
+ Logger.debug(TAG, "Preparing account list");
+ final List<AccountWithAmounts> list = new ArrayList<>();
+ for (LedgerAccount acc : accounts) {
+ final AccountWithAmounts a = acc.toDBOWithAmounts();
+ Account existing = accDao.getByNameSync(profile.getId(), acc.getName());
+ if (existing != null) {
+ a.account.setExpanded(existing.isExpanded());
+ a.account.setAmountsExpanded(existing.isAmountsExpanded());
+ a.account.setId(existing.getId()); // not strictly needed, but since we have it
+ // anyway...
+ }
+
+ list.add(a);
+ }
+ Logger.debug(TAG, "Account list prepared. Storing");
+ accDao.storeAccountsSync(list, profile.getId());
+ Logger.debug(TAG, "Account list stored");
+
+ Logger.debug(TAG, "Preparing transaction list");
+ final List<TransactionWithAccounts> tranList = new ArrayList<>();
+
+ for (LedgerTransaction tr : transactions)
+ tranList.add(tr.toDBO());
+
+ Logger.debug(TAG, "Storing transaction list");
+ trDao.storeTransactionsSync(tranList, profile.getId());
+
+ Logger.debug(TAG, "Transactions stored");
+
+ DB.get()
+ .getOptionDAO()
+ .insertSync(new Option(profile.getId(), Option.OPT_LAST_SCRAPE,
+ String.valueOf((new Date()).getTime())));
+ }
+ }