package ryuslash.org.dvdroid; import java.util.ArrayList; import java.util.List; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; public class DVDDataSource { private SQLiteDatabase database; private SQLiteHelper dbHelper; private String[] allColumns = { SQLiteHelper.COLUMN_ID, SQLiteHelper.COLUMN_TITLE, SQLiteHelper.COLUMN_WATCHED, SQLiteHelper.COLUMN_WISHLIST }; public DVDDataSource(Context context) { dbHelper = new SQLiteHelper(context); } public void open() throws SQLException { database = dbHelper.getWritableDatabase(); } public void close() { dbHelper.close(); } private ContentValues createValues(String title, int watched, int wishlist) { ContentValues values = new ContentValues(); values.put(SQLiteHelper.COLUMN_TITLE, title); values.put(SQLiteHelper.COLUMN_WATCHED, watched); values.put(SQLiteHelper.COLUMN_WISHLIST, wishlist); return values; } public DVD createDVD(String title, int watched, int wishlist) { ContentValues values = createValues(title, watched, wishlist); long insertId = database.insert(SQLiteHelper.TABLE_DVD, null, values); Cursor cursor = database.query(SQLiteHelper.TABLE_DVD, allColumns, SQLiteHelper.COLUMN_ID + " = " + insertId, null, null, null, null); cursor.moveToFirst(); DVD newDVD = cursorToDVD(cursor); cursor.close(); return newDVD; } public void updateDVD(long id, String title, int watched, int wishlist) { ContentValues values = createValues(title, watched, wishlist); String whereArgs[] = { "" + id }; database.update(SQLiteHelper.TABLE_DVD, values, "id = ?", whereArgs); } public void deleteDVD(DVD dvd) { deleteDVD(dvd.getId()); } public void deleteDVD(long id) { database.delete(SQLiteHelper.TABLE_DVD, SQLiteHelper.COLUMN_ID + " = " + id, null); } public DVD getById(long id) { Cursor cursor = database.query(SQLiteHelper.TABLE_DVD, allColumns, SQLiteHelper.COLUMN_ID + " = " + id, null, null, null, null); cursor.moveToFirst(); DVD dvd = cursorToDVD(cursor); cursor.close(); return dvd; } public List getListFromCursor(Cursor cursor) { List dvds = new ArrayList(); cursor.moveToFirst(); while(!cursor.isAfterLast()) { DVD dvd = cursorToDVD(cursor); dvds.add(dvd); cursor.moveToNext(); } cursor.close(); return dvds; } public List getWishList() { Cursor cursor = database.query(SQLiteHelper.TABLE_DVD, allColumns, "wishlist = 1", null, null, null, "title"); return getListFromCursor(cursor); } public List getWatchList() { Cursor cursor = database.query(SQLiteHelper.TABLE_DVD, allColumns, "watched = 0", null, null, null, "title"); return getListFromCursor(cursor); } public List getCollection() { Cursor cursor = database.query(SQLiteHelper.TABLE_DVD, allColumns, "wishlist = 0", null, null, null, "title"); return getListFromCursor(cursor); } private DVD cursorToDVD(Cursor cursor) { DVD dvd = new DVD(); dvd.setId(cursor.getLong(0)); dvd.setTitle(cursor.getString(1)); dvd.setWatched(cursor.getInt(2)); dvd.setWishlist(cursor.getInt(3)); return dvd; } }