X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FUpdateTransactionsTask.java;h=06bec67ef73d84cf6a355eac0c3d10977e562aba;hb=5df10dc0b58df4d4be4e9ab34f1e0f477ca46766;hp=b3e2e0c519793173b87f3b60dcdb666948a02960;hpb=1aadcdeec93fc8892a8323735334890cd8859c80;p=mobile-ledger.git 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 b3e2e0c5..06bec67e 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java @@ -1,18 +1,18 @@ /* - * Copyright © 2019 Damyan Ivanov. - * This file is part of Mobile-Ledger. - * Mobile-Ledger is free software: you can distribute it and/or modify it + * 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 * the Free Software Foundation, either version 3 of the License, or * (at your opinion), any later version. * - * Mobile-Ledger is distributed in the hope that it will be useful, + * MoLe is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License terms for details. * * You should have received a copy of the GNU General Public License - * along with Mobile-Ledger. If not, see . + * along with MoLe. If not, see . */ package net.ktnx.mobileledger.async; @@ -20,53 +20,63 @@ 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.db.Profile; import net.ktnx.mobileledger.model.Data; import net.ktnx.mobileledger.model.LedgerTransaction; -import net.ktnx.mobileledger.utils.MLDB; +import net.ktnx.mobileledger.ui.MainModel; +import net.ktnx.mobileledger.utils.SimpleDate; -import java.util.ArrayList; -import java.util.List; +import static net.ktnx.mobileledger.utils.Logger.debug; -public class UpdateTransactionsTask extends AsyncTask> { - protected List doInBackground(String[] filterAccName) { - Data.backgroundTaskCount.incrementAndGet(); - try { - ArrayList newList = new ArrayList<>(); - - boolean hasFilter = (filterAccName != null) && (filterAccName.length > 0) && - (filterAccName[0] != null) && !filterAccName[0].isEmpty(); +public class UpdateTransactionsTask extends AsyncTask { + protected String doInBackground(MainModel[] model) { + final Profile profile = Data.getProfile(); + long profile_id = profile.getId(); + Data.backgroundTaskStarted(); + try { String sql; String[] params; - sql = "SELECT id FROM transactions ORDER BY date desc, id desc"; - params = null; + final String accFilter = model[0].getAccountFilter() + .getValue(); + if (accFilter == null) { + sql = "SELECT id, year, month, day FROM transactions WHERE profile_id=? ORDER BY " + + "year desc, month desc, day desc, id desc"; + params = new String[]{String.valueOf(profile_id)}; - if (hasFilter) { - sql = "SELECT distinct tr.id from transactions tr JOIN transaction_accounts ta " + - "ON ta.transaction_id=tr.id WHERE ta.account_name LIKE ?||'%' AND ta" + - ".amount <> 0 ORDER BY tr.date desc, tr.id desc"; - params = filterAccName; } + else { + sql = "SELECT distinct tr.id, tr.year, tr.month, tr.day from transactions tr " + + "JOIN transaction_accounts ta ON ta.transaction_id=tr.id WHERE tr" + + ".profile_id=? 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[]{String.valueOf(profile_id), accFilter}; + } + + debug("UTT", sql); + TransactionAccumulator accumulator = new TransactionAccumulator(model[0]); - Log.d("tmp", sql); - SQLiteDatabase db = MLDB.getReadableDatabase(); + SQLiteDatabase db = App.getDatabase(); try (Cursor cursor = db.rawQuery(sql, params)) { while (cursor.moveToNext()) { - if (isCancelled()) return null; + if (isCancelled()) + return null; - newList.add(new LedgerTransaction(cursor.getInt(0))); + accumulator.put(new LedgerTransaction(cursor.getInt(0)), + new SimpleDate(cursor.getInt(1), cursor.getInt(2), cursor.getInt(3))); } - Data.transactions.set(newList); - Log.d("transactions", "transaction value updated"); } - return newList; + accumulator.done(); + debug("UTT", "transaction list value updated"); + + return null; } finally { - Data.backgroundTaskCount.decrementAndGet(); + Data.backgroundTaskFinished(); } } }