package com.novoda.demo.tddpersistence.db; import android.database.sqlite.SQLiteDatabase; import android.util.Log; public class AndroidTransactor { private static final String TAG = AndroidTransactor.class.getSimpleName(); public interface UnitOfWork { void work(SQLiteDatabase db) throws Exception; } private final TaskReaderDbHelper dbHelper; public AndroidTransactor(TaskReaderDbHelper dbHelper) { this.dbHelper = dbHelper; } public void perform(UnitOfWork unitOfWork) { SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); try { unitOfWork.work(db); db.setTransactionSuccessful(); } catch (Exception e) { Log.d(TAG, e.getMessage()); } finally { db.endTransaction(); } db.close(); } }