X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FUpdateAccountsTask.java;h=65f272220557501c2a9dc37fd0b24f741e2e699a;hp=cff03a2819dd3107a499b8d138c5677e0cd8a2f5;hb=abd5a19252bf81af903c3406132030e3ad63704f;hpb=998dd32a089d199a2569069415755eb3169b35b0 diff --git a/app/src/main/java/net/ktnx/mobileledger/async/UpdateAccountsTask.java b/app/src/main/java/net/ktnx/mobileledger/async/UpdateAccountsTask.java index cff03a28..65f27222 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/UpdateAccountsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/UpdateAccountsTask.java @@ -24,6 +24,7 @@ import android.util.Log; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.LedgerAccount; +import net.ktnx.mobileledger.model.MobileLedgerProfile; import net.ktnx.mobileledger.utils.MLDB; import java.util.ArrayList; @@ -31,29 +32,24 @@ import java.util.ArrayList; public class UpdateAccountsTask extends AsyncTask> { protected ArrayList doInBackground(Void... params) { Data.backgroundTaskCount.incrementAndGet(); - String profileUUID = Data.profile.get().getUuid(); - boolean onlyStarred = Data.optShowOnlyStarred.get(); try { + MobileLedgerProfile profile = Data.profile.get(); + String profileUUID = profile.getUuid(); + boolean onlyStarred = Data.optShowOnlyStarred.get(); ArrayList newList = new ArrayList<>(); - String sql = "SELECT name, hidden FROM accounts WHERE profile = ?"; - if (onlyStarred) sql += " AND hidden = 0"; - sql += " ORDER BY name"; + String sql = "SELECT a.name from accounts a WHERE a.profile = ?"; + if (onlyStarred) sql += " AND a.hidden = 0"; + sql += " ORDER BY a.name"; - SQLiteDatabase db = MLDB.getReadableDatabase(); + SQLiteDatabase db = MLDB.getDatabase(); try (Cursor cursor = db.rawQuery(sql, new String[]{profileUUID})) { while (cursor.moveToNext()) { - LedgerAccount acc = new LedgerAccount(cursor.getString(0)); - acc.setHidden(cursor.getInt(1) == 1); - try (Cursor c2 = db.rawQuery( - "SELECT value, currency FROM account_values WHERE profile = ? " + - "AND account = ?", new String[]{profileUUID, acc.getName()})) - { - while (c2.moveToNext()) { - acc.addAmount(c2.getFloat(0), c2.getString(1)); - } - } - newList.add(acc); + final String accName = cursor.getString(0); +// Log.d("accounts", +// String.format("Read account '%s' from DB [%s]", accName, profileUUID)); + LedgerAccount acc = profile.loadAccount(db, accName); + if (acc.isVisible(newList)) newList.add(acc); } }