Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. package com.moveosoftware.cannabitech.model.repository;
  2.  
  3. import android.util.Log;
  4.  
  5. import com.moveosoftware.cannabitech.model.database.StatisticItem;
  6. import com.moveosoftware.cannabitech.model.database.Statistics;
  7. import com.moveosoftware.cannabitech.model.database.User;
  8. import com.moveosoftware.cannabitech.model.database.controller.StatisticsRealmController;
  9. import com.moveosoftware.cannabitech.model.database.controller.UserRealmController;
  10. import com.moveosoftware.cannabitech.model.network.Statistics.StatisticsApiController;
  11. import com.moveosoftware.cannabitech.model.network.Statistics.reponse.StatisticsResponse;
  12. import com.moveosoftware.cannabitech.model.network.user.UserApiController;
  13. import com.moveosoftware.cannabitech.model.network.user.UserRequest;
  14. import com.moveosoftware.cannabitech.model.network.user.response.UserResponse;
  15. import com.moveosoftware.infrastructure.mvp.model.repository.Repository;
  16.  
  17. import java.util.List;
  18.  
  19. import io.realm.Realm;
  20. import io.realm.RealmResults;
  21. import rx.Observable;
  22. import rx.Subscriber;
  23. import rx.functions.Func1;
  24.  
  25. /**
  26. * Created by oferdan-on on 9/9/17
  27. */
  28.  
  29. public class StatisticsRepository extends Repository<StatisticsApiController, StatisticsRealmController> {
  30.  
  31. StatisticsCallbacks mStatisticsCallbacks;
  32.  
  33. public StatisticsRepository(StatisticsCallbacks callbacks) {
  34. this.mStatisticsCallbacks = callbacks;
  35. }
  36.  
  37. @Override
  38. public StatisticsApiController getApiController() {
  39. return new StatisticsApiController();
  40. }
  41.  
  42. @Override
  43. public StatisticsRealmController getRealmController() {
  44. return new StatisticsRealmController(Statistics.class);
  45. }
  46.  
  47.  
  48. public RealmResults<Statistics> getAllStatistics(boolean toFetchServerData) {
  49.  
  50. RealmResults<Statistics> cacheData = mRealmController.getList();
  51.  
  52. if (toFetchServerData || cacheData.size() < 1) {
  53. mApiController.loadStatistics()
  54. //create observables from list
  55. .flatMap(res -> Observable.from(res)
  56. //Update response to realm and return realm manged object
  57. .map(item -> mRealmController.updateWithObject(item))
  58. //return as realm manged object list
  59. .toList()
  60. )
  61. .doOnError(e -> mStatisticsCallbacks.onError(e.getMessage()))
  62. .subscribe(new Subscriber<List<Statistics>>() {
  63. @Override
  64. public void onCompleted() {
  65.  
  66. }
  67.  
  68. @Override
  69. public void onError(Throwable e) {
  70.  
  71. }
  72.  
  73. @Override
  74. public void onNext(List<Statistics> statistics) {
  75. Log.i("Statistics items", "onNext: finished");
  76. }
  77. });
  78. }
  79.  
  80. //Return cache data from local db
  81. return cacheData;
  82. }
  83.  
  84. public void setStatisticsSelected(String itemId, boolean isSelected) {
  85. mRealmController.setAsSelected(itemId,isSelected);
  86. }
  87.  
  88.  
  89. public interface StatisticsCallbacks {
  90.  
  91. void onSuccess();
  92.  
  93. void onError(String s);
  94.  
  95. }
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement