· 4 years ago · Jun 30, 2021, 07:58 PM
1package com.example.bibliotaph;
2
3import android.content.ContentValues;
4import android.content.Context;
5import android.database.Cursor;
6import android.database.sqlite.SQLiteDatabase;
7import android.database.sqlite.SQLiteOpenHelper;
8import android.util.Log;
9import com.example.bibliotaph.models.Article;
10import com.example.bibliotaph.models.CardModel;
11import com.example.bibliotaph.params.AppGlobals;
12import java.util.ArrayList;
13
14public class DbHandler extends SQLiteOpenHelper {
15
16 public DbHandler(Context context) {
17 super(context, AppGlobals.DB_NAME, null, AppGlobals.DB_VERSION);
18 }
19
20 @Override
21 public void onCreate(SQLiteDatabase db) {
22 String create = "Create table if not exists " + AppGlobals.TABLE_NAME + "(" +
23 AppGlobals.KEY_NAME + " Varchar Primary key, " + AppGlobals.KEY_BODY +
24 " Text, " + AppGlobals.KEY_DATE + " Datetime)";
25 db.execSQL(create);
26 Log.i("database", "Database created");
27 }
28
29 @Override
30 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
31
32 }
33
34 public void addArticle(Article article) {
35 SQLiteDatabase db = this.getWritableDatabase();
36 ContentValues values = new ContentValues();
37 values.put(AppGlobals.KEY_NAME, article.getFileName());
38 values.put(AppGlobals.KEY_BODY, article.getTextBody());
39 values.put(AppGlobals.KEY_DATE, article.getDateAdded());
40 db.insert(AppGlobals.TABLE_NAME, null, values);
41 db.close();
42 }
43
44 public ArrayList<CardModel> getAllArticles(int sortIndex) {
45 ArrayList<CardModel> cardList = new ArrayList<>();
46 SQLiteDatabase db = this.getReadableDatabase();
47 String select;
48
49 if(sortIndex == 0) {
50 select = "Select " + AppGlobals.KEY_NAME + ", " + AppGlobals.KEY_DATE
51 + " from " + AppGlobals.TABLE_NAME
52 + " Order by " + AppGlobals.KEY_DATE + " Desc";
53 }
54 else {
55 select = "Select " + AppGlobals.KEY_NAME + ", " + AppGlobals.KEY_DATE
56 + " from " + AppGlobals.TABLE_NAME
57 + " Order by Upper(" + AppGlobals.KEY_NAME + ")" + " Asc";
58 }
59
60 Cursor cursor = db.rawQuery(select, null);
61
62 int articleNameIndex = cursor.getColumnIndex(AppGlobals.KEY_NAME);
63 int dateAddedIndex = cursor.getColumnIndex(AppGlobals.KEY_DATE);
64
65 if(cursor.moveToFirst()) {
66 do {
67 CardModel card = new CardModel();
68 card.setFileName(cursor.getString(articleNameIndex));
69 card.setDateAdded(cursor.getString(dateAddedIndex));
70 cardList.add(card);
71 } while (cursor.moveToNext());
72 }
73 cursor.close();
74 db.close();
75 return cardList;
76 }
77
78 public String getArticleBody(String articleName) {
79 SQLiteDatabase db = this.getReadableDatabase();
80 String select = "Select " + AppGlobals.KEY_BODY + " from " +
81 AppGlobals.TABLE_NAME + " where " + AppGlobals.KEY_NAME +
82 " = '" + articleName + "'";
83
84 Cursor cursor = db.rawQuery(select, null);
85 int textBodyIndex = cursor.getColumnIndex(AppGlobals.KEY_BODY);
86 String textBody = null;
87 if(cursor.moveToFirst()) {
88 textBody = cursor.getString(textBodyIndex);
89 }
90 cursor.close();
91 db.close();
92 return textBody;
93 }
94
95 public void deleteArticle(String articleName) {
96 SQLiteDatabase db = this.getWritableDatabase();
97 db.delete(AppGlobals.TABLE_NAME, AppGlobals.KEY_NAME+"=?", new String[]{articleName});
98 db.close();
99 }
100
101 public boolean findArticle(String articleName) {
102 SQLiteDatabase db = this.getReadableDatabase();
103 String select = "Select * from " + AppGlobals.TABLE_NAME
104 + " where " + AppGlobals.KEY_NAME + " = '"
105 + articleName + "'";
106
107 Cursor cursor = db.rawQuery(select, null);
108 boolean result = cursor.moveToFirst();
109 cursor.close();
110 db.close();
111 return result;
112 }
113}
114