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=bb3d3dde82fe94fa14d632b71f2a201d262ef239;hp=815f37fe5f1ab46046ab93c07e13e51164dc648d;hb=217da55a224e2ae899d0b50604e2e54f882ec04f;hpb=c0f56397f7912e5a316f19fa36599a4267d9d916 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 815f37fe..bb3d3dde 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/UpdateTransactionsTask.java @@ -1,5 +1,5 @@ /* - * Copyright © 2019 Damyan Ivanov. + * Copyright © 2020 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 @@ -26,18 +26,17 @@ 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.utils.Globals; +import net.ktnx.mobileledger.utils.SimpleDate; -import java.text.ParseException; import java.util.ArrayList; -import java.util.Date; import static net.ktnx.mobileledger.utils.Logger.debug; public class UpdateTransactionsTask extends AsyncTask { protected String doInBackground(String[] filterAccName) { final MobileLedgerProfile profile = Data.profile.getValue(); - if (profile == null) return "Profile not configured"; + if (profile == null) + return "Profile not configured"; String profile_uuid = profile.getUuid(); Data.backgroundTaskStarted(); @@ -48,46 +47,44 @@ public class UpdateTransactionsTask extends AsyncTask { String[] params; if (filterAccName[0] == null) { - sql = "SELECT id, date FROM transactions WHERE profile=? ORDER BY date desc, id " + - "desc"; + 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}; } else { - sql = "SELECT distinct tr.id, tr.date from transactions tr JOIN " + - "transaction_accounts ta " + + sql = "SELECT distinct tr.id, tr.year, tr.month, tr.day from transactions tr " + + "JOIN " + "transaction_accounts ta " + "ON ta.transaction_id=tr.id AND ta.profile=tr.profile WHERE tr.profile=? " + "and ta.account_name LIKE ?||'%' AND ta" + - ".amount <> 0 ORDER BY tr.date desc, tr.id desc"; + ".amount <> 0 ORDER BY tr.year desc, tr.month desc, tr.day desc, tr.id " + + "desc"; params = new String[]{profile_uuid, filterAccName[0]}; } debug("UTT", sql); SQLiteDatabase db = App.getDatabase(); - String lastDateString = Globals.formatLedgerDate(new Date()); - Calendar lastDate = Globals.parseLedgerDateAsCalendar(lastDateString); 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); - String dateString = cursor.getString(1); - Calendar date = Globals.parseLedgerDateAsCalendar(dateString); + SimpleDate date = + new SimpleDate(cursor.getInt(1), cursor.getInt(2), cursor.getInt(3)); - if (!lastDateString.equals(dateString)) { + if (!date.equals(lastDate)) { boolean showMonth = - (date.get(Calendar.MONTH) != lastDate.get(Calendar.MONTH)) || - (date.get(Calendar.YEAR) != lastDate.get(Calendar.YEAR)); - newList.add(new TransactionListItem(date.getTime(), 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; - lastDateString = dateString; odd = !odd; } Data.transactions.setList(newList); @@ -96,9 +93,6 @@ public class UpdateTransactionsTask extends AsyncTask { return null; } - catch (ParseException e) { - return String.format("Error parsing stored date '%s'", e.getMessage()); - } finally { Data.backgroundTaskFinished(); }