· 6 years ago · Sep 25, 2019, 01:06 AM
1package com.example.choreapp.data
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.choreapp.model.*
10import java.text.DateFormat
11import java.util.*
12
13class ChoresDatabaseHandler(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) {
14
15 override fun onCreate(db: SQLiteDatabase?) {
16 val CREATE_CHORE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + KEY_ID + " INTEGER NOT NULL PRIMARY KEY," +
17 KEY_CHORE_NAME + " TEXT," +
18 KEY_CHORE_ASSIGNED_BY + " TEXT," +
19 KEY_CHORE_ASSIGNED_TO + " TEXT," +
20 KEY_CHORE_ASSIGNED_TIME + " LONG" +");"
21
22 db?.execSQL(CREATE_CHORE_TABLE)
23 }
24
25 override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
26 db?.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME) // Delete table
27
28 // Create Table again
29 onCreate(db)
30 }
31
32 fun createChore(chore: Chore) {
33 val db: SQLiteDatabase = this.writableDatabase
34 val values = ContentValues() // Use a hash map(ContentValues) to create a better object for inserting rows into database
35
36 values.put(KEY_CHORE_NAME, chore.choreName)
37 values.put(KEY_CHORE_ASSIGNED_BY, chore.assignedBy)
38 values.put(KEY_CHORE_ASSIGNED_TO, chore.assignedTo)
39 values.put(KEY_CHORE_ASSIGNED_TIME, System.currentTimeMillis())
40
41 db.insert(TABLE_NAME, null, values)
42
43 Log.d("DATA_INSERTED", "SUCCESS")
44 db.close()
45 }
46
47 fun readChore(id: Int): Chore{
48 val db: SQLiteDatabase = this.writableDatabase
49 val cursor: Cursor = db.query(TABLE_NAME,
50 arrayOf(KEY_ID, KEY_CHORE_NAME, KEY_CHORE_ASSIGNED_BY, KEY_CHORE_ASSIGNED_TIME, KEY_CHORE_ASSIGNED_TO),
51 KEY_ID + "=?", arrayOf(id.toString()),
52 null, null, null, null)
53
54 if(cursor.moveToFirst()) {
55 val chore = Chore()
56 chore.choreName = cursor.getString(cursor.getColumnIndex(KEY_CHORE_NAME))
57 chore.assignedTo = cursor.getString(cursor.getColumnIndex(KEY_CHORE_ASSIGNED_TO))
58 chore.assignedBy = cursor.getString(cursor.getColumnIndex(KEY_CHORE_ASSIGNED_BY))
59 chore.timeAssigned = cursor.getLong(cursor.getColumnIndex(KEY_CHORE_ASSIGNED_TIME))
60
61 val dateFormat: java.text.DateFormat = DateFormat.getDateInstance()
62 var formattedDate = dateFormat.format(Date(cursor.getLong(cursor.getColumnIndex(KEY_CHORE_ASSIGNED_TIME))).time)
63
64 cursor.close()
65 return chore
66 }
67 cursor.close()
68
69 val chore2 = Chore("not found","null","null",-1, -1)
70 return chore2
71 }
72}