]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/MainModel.java
specialized sub-classes of AccountListItem
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / MainModel.java
index 44a6f303be75fac7d193b16cee33400af49d5e9b..845242bfee305290c724d27eb2f784bfea8d4a46 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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
@@ -286,26 +286,27 @@ public class MainModel extends ViewModel {
         @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) {
@@ -325,8 +326,8 @@ public class MainModel extends ViewModel {
                     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));
@@ -362,7 +363,7 @@ public class MainModel extends ViewModel {
             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) {
@@ -370,7 +371,7 @@ public class MainModel extends ViewModel {
                     return;
 
                 if (a.isVisible()) {
-                    newDisplayed.add(new AccountListItem(a));
+                    newDisplayed.add(new AccountListItem.Account(a));
                     count++;
                 }
             }