private void writeTransactionsForAccount( QifBufferedWriter qifWriter, QifAccount qifAccount, Account account) throws IOException { Cursor c = getBlotterForAccount(account); try { boolean addHeader = true; while (c.moveToNext()) { if (addHeader) { qifWriter.write("!Type:").write(qifAccount.type).newLine(); addHeader = false; } QifTransaction qifTransaction = QifTransaction.fromBlotterCursor(c, categoriesMap); if (qifTransaction.isSplit()) { List<QifTransaction> qifSplits = fromTransactions( em.getSplitsForTransaction(qifTransaction.id), categoriesMap, accountsMap); qifTransaction.setSplits(qifSplits); } qifTransaction.writeTo(qifWriter, options); } } finally { c.close(); } }