/*
- * Copyright © 2020 Damyan Ivanov.
+ * Copyright © 2021 Damyan Ivanov.
* This file is part of MoLe.
* MoLe is free software: you can distribute it and/or modify it
* under the term of the GNU General Public License as published by
public void clearUpdateError() {
updateError.postValue(null);
}
+ public void clearAccounts() { displayedAccounts.postValue(new ArrayList<>()); }
public void clearTransactions() {
displayedTransactions.setValue(new ArrayList<>());
}
@Override
public void run() {
Logger.debug("async-acc", "AccountListLoader::run() entered");
- String profileUUID = profile.getUuid();
+ long profileId = profile.getId();
ArrayList<LedgerAccount> list = new ArrayList<>();
HashMap<String, LedgerAccount> map = new HashMap<>();
- String sql = "SELECT a.name, a.expanded, a.amounts_expanded";
- sql += " from accounts a WHERE a.profile = ?";
+ String sql = "SELECT a.name, a.expanded, a.amounts_expanded, a.id";
+ sql += " from accounts a WHERE a.profile_id = ?";
sql += " ORDER BY a.name";
SQLiteDatabase db = App.getDatabase();
Logger.debug("async-acc", "AccountListLoader::run() connected to DB");
- try (Cursor cursor = db.rawQuery(sql, new String[]{profileUUID})) {
+ try (Cursor cursor = db.rawQuery(sql, new String[]{String.valueOf(profileId)})) {
Logger.debug("async-acc", "AccountListLoader::run() executed query");
while (cursor.moveToNext()) {
if (isInterrupted())
return;
+ final long accId = cursor.getLong(3);
final String accName = cursor.getString(0);
// debug("accounts",
// String.format("Read account '%s' from DB [%s]", accName,
-// profileUUID));
+// profileId));
String parentName = LedgerAccount.extractParentName(accName);
LedgerAccount parent;
if (parentName != null) {
acc.setHasSubAccounts(false);
try (Cursor c2 = db.rawQuery(
- "SELECT value, currency FROM account_values WHERE profile = ?" + " " +
- "AND account = ?", new String[]{profileUUID, accName}))
+ "SELECT value, currency FROM account_values WHERE account_id = ?",
+ new String[]{String.valueOf(accId)}))
{
while (c2.moveToNext()) {
acc.addAmount(c2.getFloat(0), c2.getString(1));
Logger.debug("dFilter", "waiting for synchronized block");
Logger.debug("dFilter", String.format(Locale.US,
"entered synchronized block (about to examine %d accounts)", list.size()));
- newDisplayed.add(new AccountListItem()); // header
+ newDisplayed.add(new AccountListItem.Header()); // header
int count = 0;
for (LedgerAccount a : list) {
return;
if (a.isVisible()) {
- newDisplayed.add(new AccountListItem(a));
+ newDisplayed.add(new AccountListItem.Account(a));
count++;
}
}