Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.moveosoftware.cannabitech.model.repository;
- import android.util.Log;
- import com.moveosoftware.cannabitech.model.database.StatisticItem;
- import com.moveosoftware.cannabitech.model.database.Statistics;
- import com.moveosoftware.cannabitech.model.database.User;
- import com.moveosoftware.cannabitech.model.database.controller.StatisticsRealmController;
- import com.moveosoftware.cannabitech.model.database.controller.UserRealmController;
- import com.moveosoftware.cannabitech.model.network.Statistics.StatisticsApiController;
- import com.moveosoftware.cannabitech.model.network.Statistics.reponse.StatisticsResponse;
- import com.moveosoftware.cannabitech.model.network.user.UserApiController;
- import com.moveosoftware.cannabitech.model.network.user.UserRequest;
- import com.moveosoftware.cannabitech.model.network.user.response.UserResponse;
- import com.moveosoftware.infrastructure.mvp.model.repository.Repository;
- import java.util.List;
- import io.realm.Realm;
- import io.realm.RealmResults;
- import rx.Observable;
- import rx.Subscriber;
- import rx.functions.Func1;
- /**
- * Created by oferdan-on on 9/9/17
- */
- public class StatisticsRepository extends Repository<StatisticsApiController, StatisticsRealmController> {
- StatisticsCallbacks mStatisticsCallbacks;
- public StatisticsRepository(StatisticsCallbacks callbacks) {
- this.mStatisticsCallbacks = callbacks;
- }
- @Override
- public StatisticsApiController getApiController() {
- return new StatisticsApiController();
- }
- @Override
- public StatisticsRealmController getRealmController() {
- return new StatisticsRealmController(Statistics.class);
- }
- public RealmResults<Statistics> getAllStatistics(boolean toFetchServerData) {
- RealmResults<Statistics> cacheData = mRealmController.getList();
- if (toFetchServerData || cacheData.size() < 1) {
- mApiController.loadStatistics()
- //create observables from list
- .flatMap(res -> Observable.from(res)
- //Update response to realm and return realm manged object
- .map(item -> mRealmController.updateWithObject(item))
- //return as realm manged object list
- .toList()
- )
- .doOnError(e -> mStatisticsCallbacks.onError(e.getMessage()))
- .subscribe(new Subscriber<List<Statistics>>() {
- @Override
- public void onCompleted() {
- }
- @Override
- public void onError(Throwable e) {
- }
- @Override
- public void onNext(List<Statistics> statistics) {
- Log.i("Statistics items", "onNext: finished");
- }
- });
- }
- //Return cache data from local db
- return cacheData;
- }
- public void setStatisticsSelected(String itemId, boolean isSelected) {
- mRealmController.setAsSelected(itemId,isSelected);
- }
- public interface StatisticsCallbacks {
- void onSuccess();
- void onError(String s);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement