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=667bf99809f6e29f6da971651f70cd5e673e4823;hp=cff03a2819dd3107a499b8d138c5677e0cd8a2f5;hb=112fd782066d4eb759a104eaf7116b310e0d47d5;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..667bf998 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.App; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.LedgerAccount; -import net.ktnx.mobileledger.utils.MLDB; +import net.ktnx.mobileledger.model.MobileLedgerProfile; 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(); - String profileUUID = Data.profile.get().getUuid(); - boolean onlyStarred = Data.optShowOnlyStarred.get(); + Data.backgroundTaskStarted(); try { + MobileLedgerProfile profile = Data.profile.getValue(); + if (profile == null) throw new AssertionError(); + 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 = App.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(); } } }