package com.example.administrator.cookman.presenter; import android.content.Context; import com.example.administrator.cookman.IView.ICookSearchView; import com.example.administrator.cookman.constants.Constants; import com.example.administrator.cookman.model.entity.CookEntity.subscriberEntity.SearchCookMenuSubscriberResultInfo; import com.example.administrator.cookman.model.interfaces.ICookRespository; import com.example.administrator.cookman.model.manager.CookSearchHistoryManager; import com.example.administrator.cookman.model.respository.CookRespository; import com.example.administrator.cookman.utils.ErrorExceptionUtil; import com.example.administrator.cookman.utils.Logger.Logger; import rx.Observable; import rx.Subscriber; /** * Created by Administrator on 2017/2/22. */ public class CookSearchPresenter extends Presenter{ private ICookSearchView iCookSearchView; private ICookRespository iCookRespository; public CookSearchPresenter(Context context, ICookSearchView iCookSearchView){ super(context); this.iCookSearchView = iCookSearchView; this.iCookRespository = CookRespository.getInstance(); } @Override public void destroy(){ if(searchCookMenuByNameSubscriber != null){ searchCookMenuByNameSubscriber.unsubscribe(); } } public void search(String name){ rxJavaExecuter.execute( iCookRespository.searchCookMenuByName(name, 1, Constants.Per_Page_Size) , searchCookMenuByNameSubscriber = new SearchCookMenuByNameSubscriber() ); } public void saveHistory(){ rxJavaExecuter.execute( Observable.create( new Observable.OnSubscribe<Void>() { @Override public void call(Subscriber<? super Void> subscriber) { CookSearchHistoryManager.getInstance().save(); } } ) , new Subscriber() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Object o) { } } ); } private SearchCookMenuByNameSubscriber searchCookMenuByNameSubscriber; private class SearchCookMenuByNameSubscriber extends Subscriber<SearchCookMenuSubscriberResultInfo> { @Override public void onCompleted(){ } @Override public void onError(Throwable e){ if(searchCookMenuByNameSubscriber != null){ searchCookMenuByNameSubscriber.unsubscribe(); } if(iCookSearchView != null) iCookSearchView.onCookSearchFaile(ErrorExceptionUtil.getErrorMsg(e)); } @Override public void onNext(SearchCookMenuSubscriberResultInfo data){ if(data == null || data.getResult() == null){ if(iCookSearchView != null) iCookSearchView.onCookSearchFaile("找不到相关菜谱"); this.onCompleted(); return ; } int totalPages = data.getResult().getTotal(); if(iCookSearchView != null) { if(data.getResult().getList().size() < 1){ iCookSearchView.onCookSearchEmpty(); } else { iCookSearchView.onCookSearchSuccess(data.getResult().getList(), totalPages); } } this.onCompleted(); } } }