X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FRetrieveAccountsTask.java;h=0956f63822b74bae4bd8efb291853d38f8485a91;hp=60e6c4564eace74d89facdad4f8667c509a6e70e;hb=4a80939836e8e3c3a63ca1d5e905f8f1e03fb122;hpb=eb198c42090580a7bc2e72e1ba4738eda914ce3e diff --git a/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java b/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java index 60e6c456..0956f638 100644 --- a/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java +++ b/app/src/main/java/net/ktnx/mobileledger/RetrieveAccountsTask.java @@ -1,26 +1,24 @@ package net.ktnx.mobileledger; import android.content.SharedPreferences; -import android.database.sqlite.SQLiteDatabase; import android.util.Log; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.MalformedURLException; -import java.net.PasswordAuthentication; -import java.net.URL; import java.net.URLDecoder; import java.util.regex.Matcher; import java.util.regex.Pattern; -public class RetrieveAccountsTask extends android.os.AsyncTask { - private int error; +import static net.ktnx.mobileledger.MobileLedgerDB.db; - SharedPreferences pref; +abstract public class RetrieveAccountsTask extends android.os.AsyncTask { + int error; + + private SharedPreferences pref; public void setPref(SharedPreferences pref) { this.pref = pref; } @@ -28,56 +26,74 @@ public class RetrieveAccountsTask extends android.os.AsyncTask\\s*([-+]?[\\d.,]+)(?:\\s+(\\S+))?"); + Pattern tr_re = Pattern.compile(""); + int count = 0; while ((line = buf.readLine()) != null) { + Matcher m = re.matcher(line); - while (m.find()) { + if (m.find()) { String acct_encoded = m.group(1); String acct_name = URLDecoder.decode(acct_encoded, "UTF-8"); acct_name = acct_name.replace("\"", ""); Log.d("account-parser", acct_name); - db.execSQL("insert into accounts(name) values(?)", new Object[]{acct_name} ); + db.execSQL("insert or replace into accounts(name, keep) values(?, 1)", new Object[]{acct_name} ); + publishProgress(++count); + + last_account_name = acct_name; + + continue; + } + + Matcher tr_m = tr_re.matcher(line); + if (tr_m.find()) { + last_account_name = null; + continue; + } + + if (last_account_name == null) continue; + + m = value_re.matcher(line); + while (m.find()) { + 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)}); } } + db.execSQL("delete from account_values where keep=0;"); + db.execSQL("delete from accounts where keep=0;"); db.setTransactionSuccessful(); } finally { @@ -104,10 +120,7 @@ public class RetrieveAccountsTask extends android.os.AsyncTask