· 9 years ago · Jan 03, 2017, 05:12 AM
1public class DatabaseHandler extends SQLiteOpenHelper{
2//database version
3private static final int DATABASE_VERSION = 1;
4//database name
5private static final String DATABASE_NAME = "moviesManager";
6//table name
7private static final String TABLE_MOVIES = "movies";
8//table column names
9private static final String KEY_ID = "idSTRING";
10private static final String KEY_TITLE = "Title";
11private static final String KEY_YEAR = "Year";
12private static final String KEY_RATING = "Rating";
13private static final String KEY_POSTER = "URL";
14
15public DatabaseHandler(Context context){
16 super(context,DATABASE_NAME,null,DATABASE_VERSION);
17}
18
19//creating tables
20@Override
21public void onCreate(SQLiteDatabase db) {
22 String CREATE_MOVIES_TABLE = "CREATE TABLE " + TABLE_MOVIES + "("
23 + KEY_ID + "STRING PRIMARY KEY," + KEY_TITLE + " TEXT,"
24 + KEY_YEAR + " TEXT," + KEY_RATING + " TEXT,"
25 + KEY_POSTER + " TEXT" + ")";
26 db.execSQL(CREATE_MOVIES_TABLE);
27}
28
29//upgrading database
30@Override
31public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
32 //drop older table if existed
33 db.execSQL("DROP TABLE IF EXISTS " + TABLE_MOVIES);
34 //create table again
35 onCreate(db);
36}
37
38//CRUD (Create, Read, Update, Delete) Operations
39//add new movie
40void addMovie(Movie movie){
41 SQLiteDatabase db = this.getWritableDatabase();
42 ContentValues values = new ContentValues();
43 values.put(KEY_ID, movie.getId());
44 values.put(KEY_TITLE, movie.getTitle());
45 values.put(KEY_YEAR, movie.getYear());
46 values.put(KEY_RATING, movie.getRating());
47 values.put(KEY_POSTER, movie.getImgUrl());
48 //Log.e("poster:", values.get(KEY_POSTER).toString());
49
50 //Inserting row
51 db.insert(TABLE_MOVIES, movie.getId(), values);
52 //Log.e("Poster in DB: ",getMovie(movie.getId()).getImgUrl());
53 db.close(); //closing database connection
54}
55
56public List<Movie> getAllMovies(){
57 List<Movie> movieList = new ArrayList<>();
58 String selectQuery = "SELECT * FROM " + TABLE_MOVIES;
59 SQLiteDatabase db = this.getReadableDatabase();
60 Cursor cursor = db.rawQuery(selectQuery, null);
61 //looping through all rows and adding to list
62 if(cursor.moveToFirst()) {
63 do{
64 Movie movie = new Movie();
65 movie.setId(cursor.getString(0));
66 movie.setTitle(cursor.getString(1));
67 movie.setYear(cursor.getString(2));
68 movie.setRating(cursor.getString(3));
69 movie.setPoster(cursor.getString(4));
70 movieList.add(movie);
71 }while(cursor.moveToNext());
72 }
73 //cursor.close();
74 return movieList;
75}
76 ...
77}
78
79@Override
80protected void onCreate(Bundle savedInstanceState) {
81 super.onCreate(savedInstanceState);
82 setContentView(R.layout.activity_main);
83 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
84 setSupportActionBar(toolbar);
85
86 ...
87
88 lv = (ListView) findViewById(R.id.list);
89 movies = db.getAllMovies();
90 mAdapter = new MovieAdapter(this, movies);
91 lv.setAdapter(mAdapter);
92
93 ...
94}
95
96...
97public void setPoster(String imgUrl) {
98 this.imgUrl = imgUrl;
99 this.poster = LoadImageFromWebOperations(this.imgUrl);
100}
101
102private static Drawable LoadImageFromWebOperations(String url) {
103 try {
104 InputStream is = (InputStream) new URL(url).getContent();
105 return Drawable.createFromStream(is, "src name");
106 } catch (Exception e) {
107 Log.e("err","poster not found at "+url);
108 return null;
109 }
110}