});
db.execSQL("INSERT INTO transaction_accounts(transaction_id, " +
"order_no, account_name, amount, currency, comment, generation) " +
- "select ?, ?, ?, ?, ?, ?, ?, ? WHERE (select changes() = 0)",
+ "select ?, ?, ?, ?, ?, ?, ? WHERE (select changes() = 0)",
new Object[]{tr.getId(), accountOrderNo, item.getAccountName(),
item.getAmount(), Misc.nullIsEmpty(item.getCurrency()),
item.getComment(), generation
this.themeHue = themeHue;
}
public int getNextTransactionsGeneration(SQLiteDatabase db) {
- int generation = 1;
try (Cursor c = db.rawQuery(
"SELECT generation FROM transactions WHERE profile_id=? LIMIT 1",
new String[]{String.valueOf(id)}))
{
- if (c.moveToFirst()) {
- generation = c.getInt(0) + 1;
- }
+ if (c.moveToFirst())
+ return c.getInt(0) + 1;
}
- return generation;
+ return 1;
}
private int getNextAccountsGeneration(SQLiteDatabase db) {
- int generation = 1;
try (Cursor c = db.rawQuery("SELECT generation FROM accounts WHERE profile_id=? LIMIT 1",
- new String[]{String.valueOf(id)}))
- {
- if (c.moveToFirst()) {
- generation = c.getInt(0) + 1;
- }
+ new String[]{String.valueOf(id)})) {
+ if (c.moveToFirst())
+ return c.getInt(0) + 1;
}
- return generation;
+ return 1;
}
private void deleteNotPresentAccounts(SQLiteDatabase db, int generation) {
Logger.debug("db/benchmark", "Deleting obsolete accounts");
- db.execSQL("DELETE FROM account_values WHERE profile=? AND generation <> ?",
+ db.execSQL("DELETE FROM account_values WHERE (select a.profile_id from accounts a where a" +
+ ".id=account_values.account_id)=? AND generation <> ?",
new Object[]{id, generation});
- db.execSQL("DELETE FROM accounts WHERE profile=? AND generation <> ?",
+ db.execSQL("DELETE FROM accounts WHERE profile_id=? AND generation <> ?",
new Object[]{id, generation});
Logger.debug("db/benchmark", "Done deleting obsolete accounts");
}
private void deleteNotPresentTransactions(SQLiteDatabase db, int generation) {
Logger.debug("db/benchmark", "Deleting obsolete transactions");
- db.execSQL("DELETE FROM transaction_accounts WHERE profile=? AND generation <> ?",
+ db.execSQL(
+ "DELETE FROM transaction_accounts WHERE (select t.profile_id from transactions t " +
+ "where t.id=transaction_accounts.transaction_id)=? AND generation" + " <> ?",
new Object[]{id, generation});
- db.execSQL("DELETE FROM transactions WHERE profile=? AND generation <> ?",
+ db.execSQL("DELETE FROM transactions WHERE profile_id=? AND generation <> ?",
new Object[]{id, generation});
Logger.debug("db/benchmark", "Done deleting obsolete transactions");
}