Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. package me.alhaz.tutorial.architecturecomponent.models.repositories.movie
  2.  
  3. import androidx.lifecycle.LiveData
  4. import androidx.paging.LivePagedListBuilder
  5. import androidx.paging.PagedList
  6. import me.alhaz.tutorial.architecturecomponent.helper.AppExecutors
  7. import me.alhaz.tutorial.architecturecomponent.helper.NetworkBoundResource
  8. import me.alhaz.tutorial.architecturecomponent.helper.valueobject.ApiResponse
  9. import me.alhaz.tutorial.architecturecomponent.helper.valueobject.Resource
  10. import me.alhaz.tutorial.architecturecomponent.models.repositories.movie.remote.MovieRemoteRepository
  11. import me.alhaz.tutorial.architecturecomponent.models.repositories.movie.remote.response.Movie
  12. import me.alhaz.tutorial.architecturecomponent.models.repositories.movie.local.MovieLocalRepository
  13. import me.alhaz.tutorial.architecturecomponent.models.repositories.movie.local.entity.MovieEntity
  14.  
  15. class MovieRepository(private val appExecutors: AppExecutors, private val movieRemoteRepository: MovieRemoteRepository, private val movieLocalRepository: MovieLocalRepository): MovieDataSource {
  16.  
  17. override fun getListMovie(): LiveData<Resource<PagedList<MovieEntity>>> {
  18.  
  19. return object: NetworkBoundResource<PagedList<MovieEntity>, ArrayList<Movie>>(appExecutors) {
  20.  
  21. override fun shouldFetch(data: PagedList<MovieEntity>?): Boolean {
  22. return (movieLocalRepository.counts() == 0)
  23. }
  24.  
  25. override fun createCall(): LiveData<ApiResponse<ArrayList<Movie>>> {
  26. return movieRemoteRepository.getListMovie()
  27. }
  28.  
  29. override fun saveCallResult(item: ArrayList<Movie>) {
  30. item.forEach { movie ->
  31. val movieEntity = MovieEntity(
  32. id = movie.id,
  33. title = movie.title,
  34. voteAverage = movie.voteAverage,
  35. overview = movie.overview,
  36. releaseDate = movie.releaseDate,
  37. runtime = movie.runtime,
  38. posterPath = movie.posterPath
  39. )
  40. movieLocalRepository.insert(movieEntity)
  41. }
  42. }
  43.  
  44. override fun loadFromDb(): LiveData<PagedList<MovieEntity>> {
  45. return LivePagedListBuilder(movieLocalRepository.getMovieList(), 10).build()
  46. }
  47.  
  48. }.asLiveData()
  49. }
  50.  
  51. override fun getDetailMovie(movieID: Long): MovieEntity {
  52. return movieLocalRepository.find(movieID)
  53. }
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement