- public final Comparator<LedgerTransactionItem> comparator =
- new Comparator<LedgerTransactionItem>() {
+ public final Comparator<LedgerTransactionAccount> comparator =
+ new Comparator<LedgerTransactionAccount>() {
int res = o1.getAccountName().compareTo(o2.getAccountName());
if (res != 0) return res;
res = o1.getCurrency().compareTo(o2.getCurrency());
int res = o1.getAccountName().compareTo(o2.getAccountName());
if (res != 0) return res;
res = o1.getCurrency().compareTo(o2.getCurrency());
private String dataHash;
private boolean dataLoaded;
public LedgerTransaction(Integer id, String date, String description) {
private String dataHash;
private boolean dataLoaded;
public LedgerTransaction(Integer id, String date, String description) {
- public Iterator<LedgerTransactionItem> getItemsIterator() {
- return new Iterator<LedgerTransactionItem>() {
+ public Iterator<LedgerTransactionAccount> getAccountsIterator() {
+ return new Iterator<LedgerTransactionAccount>() {
db.execSQL("INSERT INTO transactions(id, date, description, data_hash) values(?,?,?,?)",
new Object[]{id, date, description, dataHash});
db.execSQL("INSERT INTO transactions(id, date, description, data_hash) values(?,?,?,?)",
new Object[]{id, date, description, dataHash});
db.execSQL("INSERT INTO transaction_accounts(transaction_id, account_name, amount, " +
"currency) values(?, ?, ?, ?)",
new Object[]{id, item.getAccountName(), item.getAmount(), item.getCurrency()});
db.execSQL("INSERT INTO transaction_accounts(transaction_id, account_name, amount, " +
"currency) values(?, ?, ?, ?)",
new Object[]{id, item.getAccountName(), item.getAmount(), item.getCurrency()});
+ public boolean existsInDb(SQLiteDatabase db) {
+ fillDataHash();
+ try (Cursor c = db
+ .rawQuery("SELECT 1 from transactions where data_hash = ?", new String[]{dataHash}))
+ {
+ boolean result = c.moveToFirst();
+ Log.d("transactions", String.format("Transaction %d (%s) %s", id, dataHash,
+ result ? "already present" : "not present"));
+ return result;
+ }
+ }