X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FRetrieveAccountsTask.java;h=16919b336b62fac88f73489492924c0178c35dfd;hb=5a75a6d1ffb0c52d5aadca78aa2d6ee992bfbc84;hp=a2590300a2f51572f00e7feab66bf2b5c64eefd8;hpb=977ec47877ac3bd6f1b61b3edea8ad63cee7b982;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java b/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java index a2590300..16919b33 100644 --- a/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java @@ -1,10 +1,10 @@ package net.ktnx.mobileledger; import android.content.SharedPreferences; -import android.database.sqlite.SQLiteDatabase; import android.util.Log; import java.io.BufferedReader; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -14,19 +14,22 @@ import java.net.URLDecoder; import java.util.regex.Matcher; import java.util.regex.Pattern; -abstract public class RetrieveAccountsTask extends android.os.AsyncTask { +import static net.ktnx.mobileledger.MobileLedgerDB.db; + +abstract public class RetrieveAccountsTask extends android.os.AsyncTask { int error; private SharedPreferences pref; - public void setPref(SharedPreferences pref) { - this.pref = pref; - } - public RetrieveAccountsTask() { + + RetrieveAccountsTask() { error = 0; } - protected Void doInBackground(SQLiteDatabase... sqLiteDatabases) { - final SQLiteDatabase db = sqLiteDatabases[0]; + void setPref(SharedPreferences pref) { + this.pref = pref; + } + + protected Void doInBackground(Void... params) { try { HttpURLConnection http = NetworkUtil.prepare_connection( pref, "add"); http.setAllowUserInteraction(false); @@ -36,50 +39,89 @@ abstract public class RetrieveAccountsTask extends android.os.AsyncTask - another account expected"); + last_account_name = null; + continue; + } + + if (last_account_name != null) { + m = value_re.matcher(line); + boolean match_found = false; + while (m.find()) { + match_found = true; + String value = m.group(1); + String currency = m.group(2); + if (currency == null) currency = ""; + value = value.replace(',', '.'); + Log.d("db", "curr=" + currency + ", value=" + value); + db.execSQL("insert or replace into account_values(account, currency, value, keep) values(?, ?, ?, 1);", + new Object[]{last_account_name, currency, Float.valueOf(value)}); + } + + if (match_found) continue; + } + + m = descriptions_line_re.matcher(line); + if (m.find()) { + db.execSQL("update description_history set keep=0;"); + m = description_items_re.matcher(line); + while(m.find()) { + String description = m.group(1); + if (description.isEmpty()) continue; + + Log.d("db", String.format("Stored description: %s", description)); + db.execSQL("insert or replace into description_history" + + "(description, description_upper, keep) " + + "values(?, ?, 1);", + new Object[]{description, description.toUpperCase()}); + } } } + db.execSQL("delete from account_values where keep=0;"); + db.execSQL("delete from accounts where keep=0;"); +// db.execSQL("delete from description_history where keep=0;"); db.setTransactionSuccessful(); } finally { @@ -94,7 +136,12 @@ abstract public class RetrieveAccountsTask extends android.os.AsyncTask