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