· 6 years ago · Apr 04, 2019, 03:58 AM
1package com.example.hafidalim.mymovie.data;
2
3
4import android.content.ContentValues;
5import android.content.Context;
6import android.database.Cursor;
7import android.database.sqlite.SQLiteDatabase;
8import android.database.sqlite.SQLiteOpenHelper;
9import android.util.Log;
10
11import com.example.hafidalim.mymovie.Movie;
12
13import java.util.ArrayList;
14import java.util.List;
15
16public class FavoriteDBHelper extends SQLiteOpenHelper {
17 private static final String DATABASE_NAME = "favorite.db";
18 public static final int DATABASE_VERSION = 1;
19 public static final String LOGTAG = "FAVORITE";
20 SQLiteOpenHelper dbhandler;
21 SQLiteDatabase db;
22
23 public FavoriteDBHelper(Context context){
24 super(context, DATABASE_NAME, null, DATABASE_VERSION);
25 }
26
27 public void open(){
28 Log.i(LOGTAG, "Database Opened");
29 db = dbhandler.getWritableDatabase();
30 }
31
32 public void close(){
33 Log.i(LOGTAG, "Database Closed");
34 dbhandler.close();
35 }
36
37 @Override
38 public void onCreate(SQLiteDatabase sqLiteDatabase) {
39
40 final String SQL_CREATE_FAVORITE_TABLE = "CREATE TABLE " + FavoriteContract.FavoriteEntry.TABLE_NAME + " (" +
41 FavoriteContract.FavoriteEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
42 FavoriteContract.FavoriteEntry.COLUMN_MOVIEID + " INTEGER, " +
43 FavoriteContract.FavoriteEntry.COLUMN_TITLE + " TEXT NOT NULL, " +
44 FavoriteContract.FavoriteEntry.COLUMN_POSTER_PATH + " TEXT , " +
45 FavoriteContract.FavoriteEntry.COLUMN_PLOT_SYNOPSIS + " TEXT NOT NULL" +
46 "); ";
47
48 sqLiteDatabase.execSQL(SQL_CREATE_FAVORITE_TABLE);
49 }
50
51 @Override
52 public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
53
54 sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + FavoriteContract.FavoriteEntry.TABLE_NAME);
55 onCreate(sqLiteDatabase);
56
57 }
58
59 public void addFavorite(Movie movie){
60 SQLiteDatabase db = this.getWritableDatabase();
61
62 ContentValues values = new ContentValues();
63 values.put(FavoriteContract.FavoriteEntry.COLUMN_MOVIEID, movie.getId());
64 values.put(FavoriteContract.FavoriteEntry.COLUMN_TITLE, movie.getTitle());
65 values.put(FavoriteContract.FavoriteEntry.COLUMN_POSTER_PATH, movie.getPoster_path());
66 values.put(FavoriteContract.FavoriteEntry.COLUMN_PLOT_SYNOPSIS, movie.getOverview());
67
68 db.insert(FavoriteContract.FavoriteEntry.TABLE_NAME, null, values);
69 db.close();
70 }
71
72 public void deleteFavorite(int id){
73 SQLiteDatabase db = this.getWritableDatabase();
74 db.delete(FavoriteContract.FavoriteEntry.TABLE_NAME, FavoriteContract.FavoriteEntry.COLUMN_MOVIEID+ "=" + id, null);
75 }
76
77 public List<Movie> getAllFavorite(){
78 String[] columns = {
79 FavoriteContract.FavoriteEntry._ID,
80 FavoriteContract.FavoriteEntry.COLUMN_MOVIEID,
81 FavoriteContract.FavoriteEntry.COLUMN_TITLE,
82 FavoriteContract.FavoriteEntry.COLUMN_POSTER_PATH,
83 FavoriteContract.FavoriteEntry.COLUMN_PLOT_SYNOPSIS
84
85 };
86 String sortOrder =
87 FavoriteContract.FavoriteEntry._ID + " ASC";
88 List<Movie> favoriteList = new ArrayList<>();
89
90 SQLiteDatabase db = this.getReadableDatabase();
91
92 Cursor cursor = db.query(FavoriteContract.FavoriteEntry.TABLE_NAME,
93 columns,
94 null,
95 null,
96 null,
97 null,
98 sortOrder);
99
100 if (cursor.moveToFirst()){
101 do {
102 Movie movie = new Movie();
103 movie.setId(Integer.parseInt(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLUMN_MOVIEID))));
104 movie.setTitle(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLUMN_TITLE)));
105 movie.setPoster_path(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLUMN_POSTER_PATH)));
106 movie.setOverview(cursor.getString(cursor.getColumnIndex(FavoriteContract.FavoriteEntry.COLUMN_PLOT_SYNOPSIS)));
107
108 favoriteList.add(movie);
109
110 }while(cursor.moveToNext());
111 }
112 cursor.close();
113 db.close();
114
115 return favoriteList;
116 }
117
118}