// Path: app/src/main/java/org/xdty/kindle/application/Application.java
// public class Application extends android.app.Application {
// 
//     private static AppComponent sAppComponent;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         sAppComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
//     }
// 
//     public static AppComponent getAppComponent() {
//         return sAppComponent;
//     }
// 
// }
// 
// Path: app/src/main/java/org/xdty/kindle/contract/MainContract.java
// public interface MainContract {
// 
//     interface View extends BaseView<Presenter> {
//         void refresh(List<Book> books);
//     }
// 
//     interface Presenter extends BasePresenter {
//         void loadBooks();
// 
//         void getBookNodes(Book book);
// 
//         void getReviews(String itemId);
// 
//         void setMode(Mode mode);
//     }
// }
// 
// Path: app/src/main/java/org/xdty/kindle/data/BookDataSource.java
// public interface BookDataSource {
// 
//     Observable<List<Book>> getDailyBooks();
// 
//     Observable<List<Book>> getFreeCnBooks();
// 
//     Observable<List<Book>> getFreeEnBooks();
// 
//     Observable<List<Book>> getBooks(Mode mode);
// 
//     Observable<List<Node>> getBookNodes(String itemId);
// 
//     Observable<List<Review>> getReviews(String itemId);
// 
//     Observable<Review> getReview(String itemId);
// 
//     Observable<Book> getBook(String itemId);
// }
// 
// Path: app/src/main/java/org/xdty/kindle/data/Mode.java
// public enum Mode {
//     DAILY_DEALS,
//     FREE_CN,
//     FREE_EN
// }


import android.util.Log;
import org.xdty.kindle.application.Application;
import org.xdty.kindle.contract.MainContract;
import org.xdty.kindle.data.BookDataSource;
import org.xdty.kindle.data.Mode;
import org.xdty.kindle.module.Book;
import org.xdty.kindle.module.Node;
import org.xdty.kindle.module.Review;
import java.util.List;
import javax.inject.Inject;
import rx.functions.Action1;
        mBookDataSource.getBooks(mMode).subscribe(new Action1<List<Book>>() {
            @Override
            public void call(List<Book> books) {
                mView.refresh(books);
            }
        });
    }

    @Override
    public void getBookNodes(Book book) {
        mBookDataSource.getBookNodes(book.getItemId()).subscribe(new Action1<List<Node>>() {
            @Override
            public void call(List<Node> nodes) {
                Log.e(TAG, "nodes: " + nodes);
            }
        });
    }

    @Override
    public void getReviews(String itemId) {
        mBookDataSource.getReviews(itemId).subscribe(new Action1<List<Review>>() {
            @Override
            public void call(List<Review> reviews) {
                Log.e(TAG, "reviews: " + reviews);
            }
        });
    }

    @Override
    public void setMode(Mode mode) {
// Path: app/src/main/java/org/xdty/kindle/application/Application.java
// public class Application extends android.app.Application {
// 
//     private static AppComponent sAppComponent;
// 
//     @Override
//     public void onCreate() {
//         super.onCreate();
//         sAppComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
//     }
// 
//     public static AppComponent getAppComponent() {
//         return sAppComponent;
//     }
// 
// }
// 
// Path: app/src/main/java/org/xdty/kindle/contract/MainContract.java
// public interface MainContract {
// 
//     interface View extends BaseView<Presenter> {
//         void refresh(List<Book> books);
//     }
// 
//     interface Presenter extends BasePresenter {
//         void loadBooks();
// 
//         void getBookNodes(Book book);
// 
//         void getReviews(String itemId);
// 
//         void setMode(Mode mode);
//     }
// }
// 
// Path: app/src/main/java/org/xdty/kindle/data/BookDataSource.java
// public interface BookDataSource {
// 
//     Observable<List<Book>> getDailyBooks();
// 
//     Observable<List<Book>> getFreeCnBooks();
// 
//     Observable<List<Book>> getFreeEnBooks();
// 
//     Observable<List<Book>> getBooks(Mode mode);
// 
//     Observable<List<Node>> getBookNodes(String itemId);
// 
//     Observable<List<Review>> getReviews(String itemId);
// 
//     Observable<Review> getReview(String itemId);
// 
//     Observable<Book> getBook(String itemId);
// }
// 
// Path: app/src/main/java/org/xdty/kindle/data/Mode.java
// public enum Mode {
//     DAILY_DEALS,
//     FREE_CN,
//     FREE_EN
// }


// Path: app/src/main/java/org/xdty/kindle/presenter/MainPresenter.java
import android.util.Log;
import org.xdty.kindle.application.Application;
import org.xdty.kindle.contract.MainContract;
import org.xdty.kindle.data.BookDataSource;
import org.xdty.kindle.data.Mode;
import org.xdty.kindle.module.Book;
import org.xdty.kindle.module.Node;
import org.xdty.kindle.module.Review;
import java.util.List;
import javax.inject.Inject;
import rx.functions.Action1;

        mBookDataSource.getBooks(mMode).subscribe(new Action1<List<Book>>() {
            @Override
            public void call(List<Book> books) {
                mView.refresh(books);
            }
        });
    }

    @Override
    public void getBookNodes(Book book) {
        mBookDataSource.getBookNodes(book.getItemId()).subscribe(new Action1<List<Node>>() {
            @Override
            public void call(List<Node> nodes) {
                Log.e(TAG, "nodes: " + nodes);
            }
        });
    }

    @Override
    public void getReviews(String itemId) {
        mBookDataSource.getReviews(itemId).subscribe(new Action1<List<Review>>() {
            @Override
            public void call(List<Review> reviews) {
                Log.e(TAG, "reviews: " + reviews);
            }
        });
    }

    @Override
    public void setMode(Mode mode) {
        mMode = mode;