· 9 years ago · Dec 12, 2016, 03:12 PM
1package com.example.pedrofialho.myweatherapp.model.content
2
3import android.content.ContentProvider
4import android.content.ContentResolver
5import android.content.ContentValues
6import android.database.Cursor
7import android.database.sqlite.SQLiteDatabase
8import android.database.sqlite.SQLiteOpenHelper
9import android.net.Uri
10
11/**
12 * Created by Tiago on 12/12/2016.
13 */
14
15class WeatherInfoProvider : ContentProvider(){
16
17 companion object {
18 const val AUTHORITY = "isel.pdm.demos.mymoviedb"
19 const val WEATHER_TABLE_PATH = "weather"
20 const val FORECAST_TABLE_PATH = "weather_list"
21
22 const val UPCOMING_CONTENT = "content://$AUTHORITY/$WEATHER_TABLE_PATH"
23 val WEATHER_CONTENT_URI: Uri = Uri.parse(UPCOMING_CONTENT)
24 const val EXHIBITION_CONTENT = "content://$AUTHORITY/$FORECAST_TABLE_PATH"
25 val FORECAST_CONTENT_URI: Uri = Uri.parse(EXHIBITION_CONTENT)
26
27 val WEATHER_LIST_CONTENT_TYPE = "${ContentResolver.CURSOR_DIR_BASE_TYPE}/movies"
28 val WEATHER_ITEM_CONTENT_TYPE = "${ContentResolver.CURSOR_ITEM_BASE_TYPE}/movie"
29
30 const val COLUMN_ID = "_ID"
31 const val COLUMN_NAME = "NAME"
32 const val COLUMN_COD = "CODE"
33 const val COLUMN_WEATHER_DESC = "WEATHER DESCRIPTION"
34 const val COLUMN_TEMP = "TEMPERATURE" // main.temp
35 const val COLUMN_WIND = "WIND"
36
37 const val COLUMN_ID_IDX = 0
38 const val COLUMN_NAME_IDX = 1
39 const val COLUMN_COD_IDX = 2
40 const val COLUMN_WEATHER_DESC_IDX = 3
41 const val COLUMN_TEMP_IDX = 4
42 const val COLUMN_WIND_IDX = 5
43
44
45 // Private constants to be used by the implementation
46 private const val WEATHER_TABLE_NAME = "Weather"
47 private const val FORECAST_TABLE_NAME = "Forecast"
48
49 private const val WEATHER_LIST_CODE = 1010
50 private const val WEATHER_ITEM_CODE = 1011
51 private const val FORECAST_LIST_CODE = 1020
52 private const val FORECAST_ITEM_CODE = 1021
53 }
54
55
56 private inner class WeatherIndoDbHelper(version : Int = 1, dbName : String = "WEATHER_DB") :
57 SQLiteOpenHelper(this@WeatherInfoProvider.context,dbName,null,version){
58
59 private fun createTable(db : SQLiteDatabase?, tableName : String){
60 val CREATE_CMD = "CREATE TABLE $tableName ( "+
61 "$COLUMN_ID INTEGER PRIMARY KEY , " +
62 "$COLUMN_NAME TEXT NOT NULL , " +
63 "$COLUMN_COD INTEGER NOT NULL , " +
64 "$COLUMN_WEATHER_DESC TEXT NOT NULL , " +
65 "$COLUMN_TEMP FLOAT NOT NULL , " +
66 "$COLUMN_WIND FLOAT NOT NULL)"
67 db?.execSQL(CREATE_CMD)
68 }
69
70 private fun deleteTable(db : SQLiteDatabase?, tableName: String) {
71 val CREATE_CMD = "DELETE TABLE IF EXISTS $tableName"
72 db?.execSQL(CREATE_CMD)
73 }
74
75
76 override fun onCreate(p0: SQLiteDatabase?) {
77 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
78 }
79
80 override fun onUpgrade(p0: SQLiteDatabase?, p1: Int, p2: Int) {
81 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
82 }
83
84 }
85
86 override fun insert(p0: Uri?, p1: ContentValues?): Uri {
87 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
88 }
89
90 override fun query(p0: Uri?, p1: Array<out String>?, p2: String?, p3: Array<out String>?, p4: String?): Cursor {
91 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
92 }
93
94 override fun onCreate(): Boolean {
95 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
96 }
97
98 override fun update(p0: Uri?, p1: ContentValues?, p2: String?, p3: Array<out String>?): Int {
99 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
100 }
101
102 override fun delete(p0: Uri?, p1: String?, p2: Array<out String>?): Int {
103 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
104 }
105
106 override fun getType(p0: Uri?): String {
107 throw UnsupportedOperationException("not implemented") //To change body of created functions use File | Settings | File Templates.
108
109 }