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(); } public DVD createDVD(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); 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 deleteDVD(DVD dvd) { long id = dvd.getId(); System.out.println("DVD deleted with id: " + id); database.delete(SQLiteHelper.TABLE_DVD, SQLiteHelper.COLUMN_ID + " = " + id, null); } 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; } }