package org.bookdash.android.presentation.base;
import rx.Subscription;
import rx.subscriptions.CompositeSubscription;
public class BasePresenter<T extends MvpView> implements MvpPresenter<T> {
private T view;
private CompositeSubscription compositeSubscription = new CompositeSubscription();
@Override
public void attachView(T mvpView) {
view = mvpView;
}
@Override
public void detachView() {
view = null;
compositeSubscription.clear();
}
public T getView() {
return view;
}
public void checkViewAttached() {
if (!isViewAttached()) {
throw new MvpViewNotAttachedException();
}
}
public boolean isViewAttached() {
return view != null;
}
public void addSubscription(Subscription subscription) {
this.compositeSubscription.add(subscription);
}
public static class MvpViewNotAttachedException extends RuntimeException {
public MvpViewNotAttachedException() {
super("Please call Presenter.attachView(MvpView) before" + " requesting data to the Presenter");
}
}
}