content: /*
   *    Copyright (C) 2018 MINDORKS NEXTGEN PRIVATE LIMITED
   *
   *    Licensed under the Apache License, Version 2.0 (the "License");
   *    you may not use this file except in compliance with the License.
   *    You may obtain a copy of the License at
   *
   *        http://www.apache.org/licenses/LICENSE-2.0
   *
   *    Unless required by applicable law or agreed to in writing, software
   *    distributed under the License is distributed on an "AS IS" BASIS,
   *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   *    See the License for the specific language governing permissions and
   *    limitations under the License.
   */
  
  package com.amitshekhar.example.ui.base;
  
  /**
   * Created by amitshekhar on 13/01/17.
   */
  
  public class BasePresenter<V extends MvpView> implements MvpPresenter<V> {
  
      private V mMvpView;
  
      @Override
      public void attachView(V mvpView) {
          mMvpView = mvpView;
      }
  
      @Override
      public void detachView() {
          mMvpView = null;
      }
  
      public boolean isViewAttached() {
          return mMvpView != null;
      }
  
      public V getMvpView() {
          return mMvpView;
      }
  
      public void checkViewAttached() {
          if (!isViewAttached()) throw new MvpViewNotAttachedException();
      }
  
      public static class MvpViewNotAttachedException extends RuntimeException {
          public MvpViewNotAttachedException() {
              super("Please call Presenter.attachView(MvpView) before" +
                      " requesting data to the Presenter");
          }
      }
  
  }
  