- Matcher m = transactionDetailsPattern.matcher(line);
- if (m.find()) {
- String acc_name = m.group(1);
- String amount = m.group(2);
- amount = amount.replace(',', '.');
- transaction.add_item(
- new LedgerTransactionItem(acc_name,
- Float.valueOf(amount)));
- }
- else throw new IllegalStateException(String.format(
- "Can't" + " parse transaction details"));
+ db.execSQL("DELETE from transactions WHERE id=?",
+ new Integer[]{transaction.getId()});
+ db.execSQL("DELETE from transaction_accounts WHERE " +
+ "transaction_id=?",
+ new Integer[]{transaction.getId()});
+ transaction.insertInto(db);
+ matchedTransactionsCount = 0;
+ progress.setTotal(maxTransactionId);
+ }
+
+ state = ParserState.EXPECTING_TRANSACTION;
+ L(String.format(
+ "transaction %s saved → expecting " + "transaction",
+ transaction.getId()));
+
+// sounds like a good idea, but transaction-1 may not be the first one chronologically
+// for example, when you add the initial seeding transaction after entering some others
+// if (transactionId == 1) {
+// L("This was the initial transaction. Terminating " +
+// "parser");
+// break LINES;
+// }
+ }
+ else {
+ m = transactionDetailsPattern.matcher(line);
+ if (m.find()) {
+ String acc_name = m.group(1);
+ String amount = m.group(2);
+ String currency = m.group(3);
+ amount = amount.replace(',', '.');
+ transaction.addAccount(
+ new LedgerTransactionAccount(acc_name,
+ Float.valueOf(amount), currency));
+ L(String.format("%s = %s", acc_name, amount));