X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FUpdateTransactionsTask.java;h=43de74025ad83ca7dc8dd511080dcc60d2d3c55c;hp=404e5127b4fdaa061399802dcc097d66d8a04e71;hb=5bba2c06a81c87327fdcf3f2a85c3206d932c2f9;hpb=d080698efeba76aab6ef6b5b9d182990749509a7 diff --git a/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java b/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java index 404e5127..43de7402 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java @@ -25,26 +25,24 @@ import net.ktnx.mobileledger.App; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.LedgerTransaction; import net.ktnx.mobileledger.model.MobileLedgerProfile; -import net.ktnx.mobileledger.model.TransactionListItem; +import net.ktnx.mobileledger.ui.MainModel; import net.ktnx.mobileledger.utils.SimpleDate; -import java.util.ArrayList; - import static net.ktnx.mobileledger.utils.Logger.debug; -public class UpdateTransactionsTask extends AsyncTask { - protected String doInBackground(String[] filterAccName) { +public class UpdateTransactionsTask extends AsyncTask { + protected String doInBackground(MainModel[] model) { final MobileLedgerProfile profile = Data.getProfile(); String profile_uuid = profile.getUuid(); Data.backgroundTaskStarted(); try { - ArrayList newList = new ArrayList<>(); - String sql; String[] params; - if (filterAccName[0] == null) { + final String accFilter = model[0].getAccountFilter() + .getValue(); + if (accFilter == null) { sql = "SELECT id, year, month, day FROM transactions WHERE profile=? ORDER BY " + "year desc, month desc, day desc, id desc"; params = new String[]{profile_uuid}; @@ -57,45 +55,26 @@ public class UpdateTransactionsTask extends AsyncTask { "and ta.account_name LIKE ?||'%' AND ta" + ".amount <> 0 ORDER BY tr.year desc, tr.month desc, tr.day desc, tr.id " + "desc"; - params = new String[]{profile_uuid, filterAccName[0]}; + params = new String[]{profile_uuid, accFilter}; } debug("UTT", sql); - SimpleDate latestDate = null, earliestDate = null; + TransactionAccumulator accumulator = new TransactionAccumulator(model[0]); + SQLiteDatabase db = App.getDatabase(); - boolean odd = true; - SimpleDate lastDate = SimpleDate.today(); try (Cursor cursor = db.rawQuery(sql, params)) { while (cursor.moveToNext()) { if (isCancelled()) return null; - int transaction_id = cursor.getInt(0); - SimpleDate date = - new SimpleDate(cursor.getInt(1), cursor.getInt(2), cursor.getInt(3)); - - if (null == latestDate) - latestDate = date; - earliestDate = date; - - if (!date.equals(lastDate)) { - boolean showMonth = - (date.month != lastDate.month) || (date.year != lastDate.year); - newList.add(new TransactionListItem(date, showMonth)); - } - newList.add( - new TransactionListItem(new LedgerTransaction(transaction_id), odd)); -// debug("UTT", String.format("got transaction %d", transaction_id)); - - lastDate = date; - odd = !odd; + accumulator.put(new LedgerTransaction(cursor.getInt(0)), + new SimpleDate(cursor.getInt(1), cursor.getInt(2), cursor.getInt(3))); } - Data.transactions.setList(newList); - Data.latestTransactionDate.postValue(latestDate); - Data.earliestTransactionDate.postValue(earliestDate); - debug("UTT", "transaction list value updated"); } + accumulator.done(); + debug("UTT", "transaction list value updated"); + return null; } finally {