X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fasync%2FRetrieveTransactionsTask.java;h=b004ec9a0f1a11e6077f3327c0425365a3b4e443;hb=b30e9bd1cb3347a5db4b53729e491f4adcbb12ba;hp=eea0490afe59ea8cf950a6af980eca7a1ada5655;hpb=6e815a8613c191e76a4346f0e23b88bf50a8b02c;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java index eea0490a..b004ec9a 100644 --- a/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/async/RetrieveTransactionsTask.java @@ -18,7 +18,6 @@ package net.ktnx.mobileledger.async; import android.annotation.SuppressLint; -import android.database.sqlite.SQLiteDatabase; import android.os.AsyncTask; import android.os.OperationCanceledException; @@ -28,7 +27,6 @@ import androidx.room.Transaction; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.RuntimeJsonMappingException; -import net.ktnx.mobileledger.App; import net.ktnx.mobileledger.dao.AccountDAO; import net.ktnx.mobileledger.dao.AccountValueDAO; import net.ktnx.mobileledger.dao.TransactionAccountDAO; @@ -52,6 +50,7 @@ import net.ktnx.mobileledger.model.LedgerTransactionAccount; import net.ktnx.mobileledger.ui.MainModel; import net.ktnx.mobileledger.utils.Logger; import net.ktnx.mobileledger.utils.NetworkUtil; +import net.ktnx.mobileledger.utils.Profiler; import java.io.BufferedReader; import java.io.IOException; @@ -88,6 +87,7 @@ public class RetrieveTransactionsTask extends private static final Pattern reEnd = Pattern.compile("\\bid=\"addmodal\""); private static final Pattern reDecimalPoint = Pattern.compile("\\.\\d\\d?$"); private static final Pattern reDecimalComma = Pattern.compile(",\\d\\d?$"); + private static final String TAG = "RTT"; // %3A is '=' private final Pattern reAccountName = Pattern.compile("/register\\?q=inacct%3A([a-zA-Z0-9%]+)\""); @@ -436,7 +436,6 @@ public class RetrieveTransactionsTask extends throw new HTTPException(http.getResponseCode(), http.getResponseMessage()); } publishProgress(Progress.indeterminate()); - SQLiteDatabase db = App.getDatabase(); ArrayList list = new ArrayList<>(); HashMap map = new HashMap<>(); throwIfCancelled(); @@ -627,6 +626,7 @@ public class RetrieveTransactionsTask extends AccountValueDAO valDao = DB.get() .getAccountValueDAO(); + Logger.debug(TAG, "Preparing account list"); final List list = new ArrayList<>(); for (LedgerAccount acc : accounts) { final AccountWithAmounts a = acc.toDBOWithAmounts(); @@ -640,24 +640,39 @@ public class RetrieveTransactionsTask extends list.add(a); } + Logger.debug(TAG, "Account list prepared. Storing"); accDao.storeAccountsSync(list, profile.getId()); + Logger.debug(TAG, "Account list stored"); + Profiler tranProfiler = new Profiler("transactions"); + Profiler tranAccProfiler = new Profiler("transaction accounts"); + + Logger.debug(TAG, "Storing transactions"); long trGen = trDao.getGenerationSync(profile.getId()); for (LedgerTransaction tr : transactions) { TransactionWithAccounts tran = tr.toDBO(); tran.transaction.setGeneration(trGen); tran.transaction.setProfileId(profile.getId()); + tranProfiler.opStart(); tran.transaction.setId(trDao.insertSync(tran.transaction)); + tranProfiler.opEnd(); for (TransactionAccount trAcc : tran.accounts) { trAcc.setGeneration(trGen); trAcc.setTransactionId(tran.transaction.getId()); + tranAccProfiler.opStart(); trAcc.setId(trAccDao.insertSync(trAcc)); + tranAccProfiler.opEnd(); } } + tranProfiler.dumpStats(); + tranAccProfiler.dumpStats(); + + Logger.debug(TAG, "Transactions stored. Purging old"); trDao.purgeOldTransactionsSync(profile.getId(), trGen); + Logger.debug(TAG, "Old transactions purged"); DB.get() .getOptionDAO()