KickStarterListPresenter.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.sunil.mvp.ui.KickStarterList;
  2. import android.support.annotation.NonNull;
  3. import com.sunil.mvp.api.APIService;
  4. import com.sunil.mvp.api.apiModel.KickStarterModel;
  5. import com.sunil.mvp.db.model.KickStarter;
  6. import com.sunil.mvp.db.source.KickStarterLocalSource;
  7. import org.reactivestreams.Subscription;
  8. import java.util.List;
  9. import io.reactivex.Flowable;
  10. import io.reactivex.android.schedulers.AndroidSchedulers;
  11. import io.reactivex.disposables.CompositeDisposable;
  12. import io.reactivex.functions.Action;
  13. import io.reactivex.functions.Consumer;
  14. import io.reactivex.schedulers.Schedulers;
  15. /**
  16. * Created by sunil on 12-08-2017.
  17. */
  18. public class KickStarterListPresenter implements KickStarterListContract.Presenter {
  19. @NonNull
  20. private KickStarterListContract.View mKickStartView;
  21. private CompositeDisposable mCompositeDisposable;
  22. private KickStarterLocalSource mKickStarterLocalDataSource;
  23. public KickStarterListPresenter( ) {
  24. mKickStarterLocalDataSource = new KickStarterLocalSource();
  25. }
  26. @Override
  27. public void subscribe() {
  28. if (mCompositeDisposable == null) {
  29. mCompositeDisposable = new CompositeDisposable();
  30. }
  31. }
  32. @Override
  33. public void unSubscribe() {
  34. mCompositeDisposable.clear();
  35. }
  36. @Override
  37. public void attachView(KickStarterListContract.View view) {
  38. mKickStartView = view;
  39. }
  40. @Override
  41. public void loadKickStartersAPI() {
  42. final Flowable<List<KickStarterModel>> listFlowable = APIService.Creator.newApiClient().getKickStarters();
  43. listFlowable .subscribeOn(Schedulers.io())
  44. .observeOn(AndroidSchedulers.mainThread()).doOnSubscribe(new Consumer<Subscription>() {
  45. @Override
  46. public void accept(@io.reactivex.annotations.NonNull Subscription subscription) throws Exception {
  47. }
  48. }).subscribe(new Consumer<List<KickStarterModel>>() {
  49. @Override
  50. public void accept(@io.reactivex.annotations.NonNull List<KickStarterModel> kickStarters) throws Exception {
  51. // save into db
  52. for (int index =0; index < kickStarters.size(); index++) {
  53. KickStarterModel model = kickStarters.get(index);
  54. KickStarter kickStarter = new KickStarter();
  55. kickStarter.setS_no(model.getSNo().toString());
  56. kickStarter.setAmt_pledged(model.getAmtPledged()+"");
  57. kickStarter.setBlurb(model.getBlurb());
  58. kickStarter.setBy(model.getBy());
  59. kickStarter.setCountry(model.getCountry());
  60. kickStarter.setCurrency(model.getCurrency());
  61. kickStarter.setEnd_time(model.getEndTime());
  62. kickStarter.setLocation(model.getLocation());
  63. kickStarter.setPercentage(model.getPercentageFunded()+"");
  64. kickStarter.setNum_backers(model.getNumBackers());
  65. kickStarter.setState(model.getState());
  66. kickStarter.setTitle(model.getTitle());
  67. kickStarter.setType(model.getType());
  68. kickStarter.setUrl(model.getUrl());
  69. mKickStarterLocalDataSource.saveKickStarter(kickStarter);
  70. }
  71. loadFromDb();
  72. }
  73. }, new Consumer<Throwable>() {
  74. @Override
  75. public void accept(@io.reactivex.annotations.NonNull Throwable throwable) throws Exception {
  76. //Preconditions.checkNotNull(throwable);
  77. mKickStartView.showLoadErrorMessage(throwable.getMessage());
  78. }
  79. }, new Action() {
  80. @Override
  81. public void run() throws Exception {
  82. // mKickStartView.onLoadFinish();
  83. }
  84. });
  85. }
  86. @Override
  87. public void loadKickStarterDb() {
  88. loadFromDb();
  89. }
  90. private void loadFromDb(){
  91. Flowable<List<KickStarter>> listFlowable = mKickStarterLocalDataSource.getKickStarters();
  92. listFlowable.doOnSubscribe(new Consumer<Subscription>() {
  93. @Override
  94. public void accept(@io.reactivex.annotations.NonNull Subscription subscription) throws Exception {
  95. }
  96. }).subscribe(new Consumer<List<KickStarter>>() {
  97. @Override
  98. public void accept(@io.reactivex.annotations.NonNull List<KickStarter> kickStarters) throws Exception {
  99. mKickStartView.onKickStartersOk(kickStarters);
  100. }
  101. }, new Consumer<Throwable>() {
  102. @Override
  103. public void accept(@io.reactivex.annotations.NonNull Throwable throwable) throws Exception {
  104. //Preconditions.checkNotNull(throwable);
  105. mKickStartView.showLoadErrorMessage(throwable.getMessage());
  106. }
  107. }, new Action() {
  108. @Override
  109. public void run() throws Exception {
  110. // mKickStartView.onLoadFinish();
  111. }
  112. });
  113. }
  114. @Override
  115. public void loadDetailKickStarter(boolean isDetail) {
  116. }
  117. @Override
  118. public long getCountDb() {
  119. return mKickStarterLocalDataSource.getKickStartCount();
  120. }
  121. }