Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.84 KB | None | 0 0
  1. ### MovieProvider
  2. package com.ogi.submission4.moviereview.provider
  3.  
  4. import android.content.ContentProvider
  5. import android.content.ContentUris
  6. import android.content.ContentValues
  7. import android.content.UriMatcher
  8. import android.database.Cursor
  9. import android.net.Uri
  10. import com.ogi.submission4.moviereview.model.database.MovieReviewDB
  11. import com.ogi.submission4.moviereview.model.movie.entity.MovieData
  12.  
  13. class MovieProvider: ContentProvider() {
  14.     private val AUTHORITY = "com.ogi.submission4.moviereview"
  15.     private val MOVIES = 1
  16.     private val MOVIE_ITEM = 2
  17.     private lateinit var database: MovieReviewDB
  18.     private val MATCHER = UriMatcher(UriMatcher.NO_MATCH)
  19.  
  20.     private val uriMatcher = MATCHER.apply {
  21.         addURI(AUTHORITY, "movies", MOVIES)
  22.         addURI(AUTHORITY, "movies/#", MOVIE_ITEM)
  23.     }
  24.  
  25.     override fun insert(uri: Uri, values: ContentValues?): Uri? {
  26.         when(MATCHER.match(uri)){
  27.             MOVIES -> {
  28.                 if (context == null) return null
  29.                 val id = database.movieDao().insert(MovieData.fromContentValues(values))
  30.                 context?.contentResolver?.notifyChange(uri, null)
  31.                 return ContentUris.withAppendedId(uri, id)
  32.             }
  33.             MOVIE_ITEM -> throw IllegalArgumentException("Invalid URI, cannot insert with ID: " + uri)
  34.             else -> throw IllegalArgumentException("Unknown URI: " + uri)
  35.         }
  36.     }
  37.  
  38.     override fun query(p0: Uri, p1: Array<String>?, p2: String?, p3: Array<String>?, p4: String?): Cursor? {
  39.         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  40.     }
  41.  
  42.     override fun onCreate(): Boolean {
  43.         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  44.     }
  45.  
  46.     override fun update(p0: Uri, p1: ContentValues?, p2: String?, p3: Array<String>?): Int {
  47.         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  48.     }
  49.  
  50.     override fun delete(p0: Uri, p1: String?, p2: Array<String>?): Int {
  51.         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  52.     }
  53.  
  54.     override fun getType(p0: Uri): String? {
  55.         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  56.     }
  57. }
  58.  
  59.  
  60. ### MovieDao
  61. package com.ogi.submission4.moviereview.model.database.dao
  62.  
  63. import android.arch.persistence.room.*
  64. import android.arch.persistence.room.OnConflictStrategy.REPLACE
  65. import android.database.Cursor
  66. import com.ogi.submission4.moviereview.model.movie.entity.MovieData
  67.  
  68. @Dao
  69. interface MovieDao {
  70.     @get:Query("SELECT * FROM movies")
  71.     val all: List<MovieData>
  72.  
  73.     @Query("SELECT * FROM movies WHERE id = :id")
  74.     fun getById(id: Int?): MovieData
  75.  
  76.     @Insert(onConflict = REPLACE)
  77.     fun insert(movie: MovieData)
  78.  
  79.     @Delete
  80.     fun delete(movie: MovieData)
  81.  
  82.     @Query("DELETE FROM movies WHERE id = :id")
  83.     fun deleteById(id: Long): Int
  84.  
  85.     @Query("SELECT * FROM movies")
  86.     fun allFavorite(): Cursor
  87.  
  88.     @Query("SELECT * FROM movies WHERE id = :id")
  89.     fun getFavoriteById(id: Long): Cursor
  90.  
  91.     @Update
  92.     fun update(movie: MovieData): Int
  93. }
  94.  
  95. ### MovieData
  96. package com.ogi.submission4.moviereview.model.movie.entity
  97.  
  98. import android.arch.persistence.room.ColumnInfo
  99. import android.arch.persistence.room.Entity
  100. import android.arch.persistence.room.PrimaryKey
  101. import android.content.ContentValues
  102. import android.os.Parcel
  103. import android.os.Parcelable
  104. import com.google.gson.annotations.SerializedName
  105.  
  106. @Entity(tableName = "movies")
  107. class MovieData(
  108.  
  109.     @PrimaryKey(autoGenerate = false)
  110.     @ColumnInfo(name = "id")
  111.     var id: Int? = null,
  112.  
  113.     @ColumnInfo(name = "original_title")
  114.     @SerializedName("original_title")
  115.     var originalTitle: String? = null,
  116.  
  117.     @ColumnInfo(name = "overview")
  118.     var overview: String? = null,
  119.  
  120.     @ColumnInfo(name = "vote_average")
  121.     @SerializedName("vote_average")
  122.     var voteAverage: Float = 0f,
  123.  
  124.     @ColumnInfo(name = "poster_path")
  125.     @SerializedName("poster_path")
  126.     var posterPath: String? = null,
  127.  
  128.     @ColumnInfo(name = "backdrop_path")
  129.     @SerializedName("backdrop_path")
  130.     var backdropPath: String? = null,
  131.  
  132.     @ColumnInfo(name = "release_date")
  133.     @SerializedName("release_date")
  134.     var releaseDate: String? = null
  135.  
  136. ) : Parcelable {
  137.     constructor(source: Parcel) : this(
  138.         source.readValue(Int::class.java.classLoader) as Int?,
  139.         source.readString(),
  140.         source.readString(),
  141.         source.readFloat(),
  142.         source.readString(),
  143.         source.readString(),
  144.         source.readString()
  145.     )
  146.  
  147.     override fun describeContents() = 0
  148.  
  149.     override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
  150.         writeValue(id)
  151.         writeString(originalTitle)
  152.         writeString(overview)
  153.         writeFloat(voteAverage)
  154.         writeString(posterPath)
  155.         writeString(backdropPath)
  156.         writeString(releaseDate)
  157.     }
  158.  
  159.     companion object {
  160.         @JvmField
  161.         val CREATOR: Parcelable.Creator<MovieData> = object : Parcelable.Creator<MovieData> {
  162.             override fun createFromParcel(source: Parcel): MovieData =
  163.                 MovieData(source)
  164.             override fun newArray(size: Int): Array<MovieData?> = arrayOfNulls(size)
  165.         }
  166.  
  167.         fun fromContentValues(values: ContentValues?): MovieData {
  168.             return MovieData(
  169.                 values?.getAsInteger("id"),
  170.                 values?.getAsString("title"),
  171.                 values?.getAsString("overview"),
  172.                 values!!.getAsFloat("vote_average"),
  173.                 values.getAsString("poster_path"),
  174.                 values.getAsString("backdrop_path"),
  175.                 values.getAsString("release_date")
  176.             )
  177.         }
  178.     }
  179. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement