package com.sudogeeks.talking_reminder; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import java.util.ArrayList; import java.util.List; public class ReminderDatabase extends SQLiteOpenHelper { // Database Version private static final int DATABASE_VERSION = 1; // Database Name private static final String DATABASE_NAME = "ReminderDatabase"; // Table name private static final String TABLE_REMINDERS = "ReminderTable"; // Table Columns names private static final String KEY_ID = "id"; private static final String KEY_TITLE = "title"; private static final String KEY_DATE = "date"; private static final String KEY_TIME = "time"; private static final String KEY_REPEAT = "repeat"; private static final String KEY_REPEAT_NO = "repeat_no"; private static final String KEY_REPEAT_TYPE = "repeat_type"; private static final String KEY_ACTIVE = "active"; public ReminderDatabase(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } // Creating Tables @Override public void onCreate(SQLiteDatabase db) { String CREATE_REMINDERS_TABLE = "CREATE TABLE " + TABLE_REMINDERS + "(" + KEY_ID + " INTEGER PRIMARY KEY," + KEY_TITLE + " TEXT," + KEY_DATE + " TEXT," + KEY_TIME + " INTEGER," + KEY_REPEAT + " BOOLEAN," + KEY_REPEAT_NO + " INTEGER," + KEY_REPEAT_TYPE + " TEXT," + KEY_ACTIVE + " BOOLEAN" + ")"; db.execSQL(CREATE_REMINDERS_TABLE); } // Upgrading database @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // Drop older table if existed if (oldVersion >= newVersion) return; db.execSQL("DROP TABLE IF EXISTS " + TABLE_REMINDERS); // Create tables again onCreate(db); } // Adding new Reminder public int addReminder(Reminder reminder) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_TITLE, reminder.getTitle()); values.put(KEY_DATE, reminder.getDate()); values.put(KEY_TIME, reminder.getTime()); values.put(KEY_REPEAT, reminder.getRepeat()); values.put(KEY_REPEAT_NO, reminder.getRepeatNo()); values.put(KEY_REPEAT_TYPE, reminder.getRepeatType()); values.put(KEY_ACTIVE, reminder.getActive()); // Inserting Row long ID = db.insert(TABLE_REMINDERS, null, values); db.close(); return (int) ID; } // Getting single Reminder public Reminder getReminder(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_REMINDERS, new String[] { KEY_ID, KEY_TITLE, KEY_DATE, KEY_TIME, KEY_REPEAT, KEY_REPEAT_NO, KEY_REPEAT_TYPE, KEY_ACTIVE }, KEY_ID + "=?", new String[]{String.valueOf(id)}, null, null, null, null); if (cursor != null) cursor.moveToFirst(); Reminder reminder = new Reminder(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2), cursor.getString(3), cursor.getString(4), cursor.getString(5), cursor.getString(6), cursor.getString(7)); return reminder; } // Getting all Reminders public List<Reminder> getAllReminders() { List<Reminder> reminderList = new ArrayList<>(); // Select all Query String selectQuery = "SELECT * FROM " + TABLE_REMINDERS; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); // Looping through all rows and adding to list if (cursor.moveToFirst()) { do { Reminder reminder = new Reminder(); reminder.setID(Integer.parseInt(cursor.getString(0))); reminder.setTitle(cursor.getString(1)); reminder.setDate(cursor.getString(2)); reminder.setTime(cursor.getString(3)); reminder.setRepeat(cursor.getString(4)); reminder.setRepeatNo(cursor.getString(5)); reminder.setRepeatType(cursor.getString(6)); reminder.setActive(cursor.getString(7)); // Adding Reminders to list reminderList.add(reminder); } while (cursor.moveToNext()); } return reminderList; } // Getting Reminders Count public int getRemindersCount() { String countQuery = "SELECT * FROM " + TABLE_REMINDERS; SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.rawQuery(countQuery, null); cursor.close(); return cursor.getCount(); } // Updating single Reminder public int updateReminder(Reminder reminder) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_TITLE, reminder.getTitle()); values.put(KEY_DATE, reminder.getDate()); values.put(KEY_TIME, reminder.getTime()); values.put(KEY_REPEAT, reminder.getRepeat()); values.put(KEY_REPEAT_NO, reminder.getRepeatNo()); values.put(KEY_REPEAT_TYPE, reminder.getRepeatType()); values.put(KEY_ACTIVE, reminder.getActive()); // Updating row return db.update(TABLE_REMINDERS, values, KEY_ID + "=?", new String[]{String.valueOf(reminder.getID())}); } // Deleting single Reminder public void deleteReminder(Reminder reminder) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_REMINDERS, KEY_ID + "=?", new String[]{String.valueOf(reminder.getID())}); db.close(); } }