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=88ff97b81b4eeeaf923a6704a61d6b7f8821b3e9;hp=64a5559a5ccefa1179b69f19ee0209b2489fdb2c;hb=0fc2ddc465cd9b9314ae336e69535020a96a7fbc;hpb=401c522d57de54644de32a1831e1efa9608eec7b 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 64a5559a..88ff97b8 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/UpdateAccountsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/UpdateAccountsTask.java @@ -20,48 +20,46 @@ package net.ktnx.mobileledger.async; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.AsyncTask; -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; +import static net.ktnx.mobileledger.utils.Logger.debug; + public class UpdateAccountsTask extends AsyncTask> { protected ArrayList doInBackground(Void... params) { - Data.backgroundTaskCount.incrementAndGet(); + Data.backgroundTaskStarted(); try { - String profileUUID = Data.profile.get().getUuid(); + MobileLedgerProfile profile = Data.profile.getValue(); + assert profile != null; + 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); +// debug("accounts", +// String.format("Read account '%s' from DB [%s]", accName, profileUUID)); + LedgerAccount acc = profile.loadAccount(db, accName); + if (acc.isVisible(newList)) newList.add(acc); } } return newList; } finally { - Log.d("UAT", "decrementing background task count"); - Data.backgroundTaskCount.decrementAndGet(); + debug("UAT", "decrementing background task count"); + Data.backgroundTaskFinished(); } } }