搜索优化,新增每个引擎搜索失败次数限制,完全移除宜搜小说站点转载,添加部分注释

1105075896@qq.com 8 years ago
parent ae1763afe1
commit 303faa3681

@ -9,8 +9,8 @@ android {
applicationId "com.monke.monkeybook"
minSdkVersion 17
targetSdkVersion 25
versionCode 8
versionName "1.2.3"
versionCode 9
versionName "1.2.4"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "debug"]
}
@ -23,7 +23,6 @@ android {
}
}
lintOptions {
abortOnError false
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook;
import java.util.HashMap;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook;
import com.monke.monkeybook.base.observer.SimpleObserver;

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook;
import android.app.Application;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.widget.Toast;
import com.monke.monkeybook.service.DownloadService;
import com.umeng.analytics.MobclickAgent;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook;
import android.content.SharedPreferences;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.base;
import com.monke.basemvplib.IPresenter;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.base.observer;
import com.monke.monkeybook.utils.NetworkUtil;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.base.observer;
import io.reactivex.Observer;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import android.os.Parcel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import android.os.Parcel;

@ -1,6 +1,6 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import android.os.Parcel;
import android.os.Parcelable;
import com.monke.monkeybook.widget.contentswitchview.BookContentView;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import android.os.Parcel;
@ -7,6 +8,9 @@ import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Transient;
import org.greenrobot.greendao.annotation.Generated;
/**
*
*/
@Entity
public class ChapterListBean implements Parcelable,Cloneable{

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import android.os.Parcel;

@ -1,11 +1,14 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
public class DownloadChapterListBean implements Parcelable {
private List<DownloadChapterBean> data;

@ -1,7 +1,11 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import java.util.List;
/**
* Data bean
*/
public class LibraryBean {
private List<LibraryNewBookBean> libraryNewBooks;
private List<LibraryKindBookListBean> kindBooks;

@ -1,7 +1,11 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import java.util.List;
/**
*
*/
public class LibraryKindBookListBean {
private String kindName;
private String kindUrl;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
public class LibraryNewBookBean {

@ -1,31 +0,0 @@
package com.monke.monkeybook.bean;
public class LibraryRankBean {
private String coverUrl;
private String name;
private String author;
public String getCoverUrl() {
return coverUrl;
}
public void setCoverUrl(String coverUrl) {
this.coverUrl = coverUrl;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
public class LocBookShelfBean {

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import java.util.List;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import android.os.Parcel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
import org.greenrobot.greendao.annotation.Entity;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
public class WebChapterBean<T> {

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.bean;
public class WebContentBean {

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.cache;
import java.io.BufferedReader;

@ -1,6 +1,6 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.common;
public class RxBusTag {
public final static String HAD_ADD_BOOK = "rxbus_add_book";

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.common.api;
import io.reactivex.Observable;
@ -5,6 +6,9 @@ import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Url;
/**
* API ( )
*/
public interface IEasouApi {
@GET
@Headers({"Accept:text/html,application/xhtml+xml,application/xml",

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.common.api;
import io.reactivex.Observable;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.common.api;
import io.reactivex.Observable;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.dao;
import android.database.sqlite.SQLiteDatabase;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.listener;
import com.monke.monkeybook.bean.BookShelfBean;

@ -1,31 +1,28 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model;
import com.monke.monkeybook.bean.BookContentBean;
import com.monke.monkeybook.bean.BookShelfBean;
import com.monke.monkeybook.bean.LibraryBean;
import com.monke.monkeybook.bean.SearchBookBean;
import com.monke.monkeybook.cache.ACache;
import com.monke.monkeybook.listener.OnGetChapterListListener;
import java.util.List;
import io.reactivex.Observable;
public interface IEasouBookModel {
/**
*
*/
public Observable<List<SearchBookBean>> searchBook(String content, int page, int rankKind);
Observable<List<SearchBookBean>> searchBook(String content, int page, int rankKind);
/**
*
*/
public Observable<BookShelfBean> getBookInfo(final BookShelfBean bookShelfBean);
Observable<BookShelfBean> getBookInfo(final BookShelfBean bookShelfBean);
/**
*
*/
public void getChapterList(final BookShelfBean bookShelfBean, OnGetChapterListListener getChapterListListener);
void getChapterList(final BookShelfBean bookShelfBean, OnGetChapterListListener getChapterListListener);
/**
*

@ -1,24 +1,23 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model;
import com.monke.monkeybook.bean.LibraryBean;
import com.monke.monkeybook.bean.SearchBookBean;
import com.monke.monkeybook.cache.ACache;
import java.util.List;
import io.reactivex.Observable;
public interface IGxwztvBookModel extends IStationBookModel {
public Observable<List<SearchBookBean>> getKindBook(String url, int page);
Observable<List<SearchBookBean>> getKindBook(String url, int page);
/**
*
*/
public Observable<LibraryBean> getLibraryData(ACache aCache);
Observable<LibraryBean> getLibraryData(ACache aCache);
/**
*
*/
public Observable<LibraryBean> analyLibraryData(String data);
Observable<LibraryBean> analyLibraryData(String data);
}

@ -1,11 +1,8 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model;
import com.monke.monkeybook.bean.BookShelfBean;
import com.monke.monkeybook.bean.LocBookShelfBean;
import java.io.File;
import java.util.List;
import io.reactivex.Observable;
public interface IImportBookModel {

@ -1,12 +1,11 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model;
import com.monke.monkeybook.bean.BookContentBean;
import com.monke.monkeybook.bean.BookShelfBean;
import com.monke.monkeybook.bean.SearchBookBean;
import com.monke.monkeybook.listener.OnGetChapterListListener;
import java.util.List;
import io.reactivex.Observable;
public interface IStationBookModel {
@ -14,17 +13,17 @@ public interface IStationBookModel {
/**
*
*/
public Observable<List<SearchBookBean>> searchBook(String content, int page);
Observable<List<SearchBookBean>> searchBook(String content, int page);
/**
*
*/
public Observable<BookShelfBean> getBookInfo(final BookShelfBean bookShelfBean);
Observable<BookShelfBean> getBookInfo(final BookShelfBean bookShelfBean);
/**
*
*/
public void getChapterList(final BookShelfBean bookShelfBean, OnGetChapterListListener getChapterListListener);
void getChapterList(final BookShelfBean bookShelfBean, OnGetChapterListListener getChapterListListener);
/**
*

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model;
import com.monke.monkeybook.bean.BookContentBean;
@ -11,29 +12,24 @@ public interface IWebBookModel {
/**
*
*/
public Observable<BookShelfBean> getBookInfo(final BookShelfBean bookShelfBean);
Observable<BookShelfBean> getBookInfo(final BookShelfBean bookShelfBean);
/**
*
*/
public void getChapterList(final BookShelfBean bookShelfBean,OnGetChapterListListener getChapterListListener);
void getChapterList(final BookShelfBean bookShelfBean,OnGetChapterListListener getChapterListListener);
/**
*
*/
public Observable<BookContentBean> getBookContent(final String durChapterUrl, final int durChapterIndex, String tag);
/**
*
*/
public Observable<List<SearchBookBean>> searchBook(String content, int page,int rankKind);
Observable<BookContentBean> getBookContent(final String durChapterUrl, final int durChapterIndex, String tag);
/**
*
*/
public Observable<List<SearchBookBean>> getKindBook(String url,int page);
Observable<List<SearchBookBean>> getKindBook(String url,int page);
/**
*
*/
public Observable<List<SearchBookBean>> searchOtherBook(String content,int page,String tag);
Observable<List<SearchBookBean>> searchOtherBook(String content,int page,String tag);
}

@ -1,6 +1,7 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model;
public interface IWebContentModel {
public String analyBookcontent(String s,String realUrl) throws Exception;
String analyBookcontent(String s,String realUrl) throws Exception;
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class Content630bookCCModelImpl implements IWebContentModel{

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentAszwModelImpl implements IWebContentModel{

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentBaishukuModelImpl implements IWebContentModel{

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,12 +1,11 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.ErrorAnalyContentManager;
import com.monke.monkeybook.bean.BookContentBean;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentCommendModelImpl {

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentDhzwModelImpl implements IWebContentModel{

@ -1,10 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentEasouModelImpl implements IWebContentModel {

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
/**

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentKewaishuModelImpl implements IWebContentModel{

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentPpxsModelImpl implements IWebContentModel{

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentQulaModelImpl implements IWebContentModel{

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentQzreadModelImpl implements IWebContentModel{

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentRanwenaModelImpl implements IWebContentModel{

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,11 +1,10 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import java.util.List;
public class ContentSuimengModelImpl implements IWebContentModel{

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,15 +1,12 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.util.List;
public class ContentVodtwModelImpl implements IWebContentModel {
public static final String TAG = "http://www.vodtw.com";

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,7 +1,7 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;

@ -1,13 +1,12 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.util.List;
public class ContentYb3ModelImpl implements IWebContentModel{

@ -1,14 +1,11 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.model.IWebContentModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.util.List;
public class ContentZhulangModelImpl implements IWebContentModel{
public static final String TAG = "http://book.zhulang.com";

@ -1,555 +0,0 @@
package com.monke.monkeybook.model.impl;
import com.monke.basemvplib.impl.BaseModelImpl;
import com.monke.monkeybook.ErrorAnalyContentManager;
import com.monke.monkeybook.base.observer.SimpleObserver;
import com.monke.monkeybook.bean.BookContentBean;
import com.monke.monkeybook.bean.BookInfoBean;
import com.monke.monkeybook.bean.BookShelfBean;
import com.monke.monkeybook.bean.ChapterListBean;
import com.monke.monkeybook.bean.SearchBookBean;
import com.monke.monkeybook.bean.WebChapterBean;
import com.monke.monkeybook.common.api.IEasouApi;
import com.monke.monkeybook.listener.OnGetChapterListListener;
import com.monke.monkeybook.model.IEasouBookModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.ObservableSource;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class EasouBookModelImpl extends BaseModelImpl implements IEasouBookModel {
public static final String TAG = "http://book.easou.com";
public static EasouBookModelImpl getInstance() {
return new EasouBookModelImpl();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*
*/
@Override
public Observable<List<SearchBookBean>> searchBook(String content, int page, int rankKind) {
String temp = "/w/searchNovel/" + content + "_" + rankKind + "_" + page + ".html";
return getRetrofitObject(TAG).create(IEasouApi.class).searchBook(temp).flatMap(new Function<String, ObservableSource<List<SearchBookBean>>>() {
@Override
public ObservableSource<List<SearchBookBean>> apply(String s) throws Exception {
return analySearchBook(s);
}
});
}
public Observable<List<SearchBookBean>> analySearchBook(final String s) {
return Observable.create(new ObservableOnSubscribe<List<SearchBookBean>>() {
@Override
public void subscribe(ObservableEmitter<List<SearchBookBean>> e) throws Exception {
try {
Document doc = Jsoup.parse(s);
Elements booksE = doc.getElementsByClass("resultContent").get(0).getElementsByTag("li");
if (null != booksE && booksE.size() > 1) {
List<SearchBookBean> books = new ArrayList<SearchBookBean>();
for (Element bookItem : booksE) {
SearchBookBean item = new SearchBookBean();
item.setTag(TAG);
item.setAuthor(bookItem.getElementsByClass("attr").get(0).getElementsByTag("a").get(0).text());
item.setKind(bookItem.getElementsByClass("attr").get(0).getElementsByTag("a").get(1).text());
item.setState(bookItem.getElementsByTag("span").get(0).text());
item.setLastChapter(bookItem.getElementsByClass("lastchapter").get(0).text());
item.setOrigin(bookItem.getElementsByClass("source").get(0).text().replaceAll("来源:", ""));
item.setName(bookItem.getElementsByClass("name").get(0).getElementsByClass("common").get(0).text());
item.setNoteUrl(TAG + bookItem.getElementsByClass("name").get(0).getElementsByClass("common").get(0).attr("href"));
item.setCoverUrl(bookItem.getElementsByTag("img").get(0).attr("src"));
books.add(item);
}
e.onNext(books);
} else {
e.onNext(new ArrayList<SearchBookBean>());
}
} catch (Exception ex) {
ex.printStackTrace();
e.onNext(new ArrayList<SearchBookBean>());
}
e.onComplete();
}
});
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*
* return BookShelfBean
*/
@Override
public Observable<BookShelfBean> getBookInfo(final BookShelfBean bookShelfBean) {
return getRetrofitObject(TAG).create(IEasouApi.class).getBookInfo(bookShelfBean.getNoteUrl().replace(TAG, "")).flatMap(new Function<String, ObservableSource<BookShelfBean>>() {
@Override
public ObservableSource<BookShelfBean> apply(String s) throws Exception {
return analyBookInfo(s, bookShelfBean);
}
});
}
private Observable<BookShelfBean> analyBookInfo(final String s, final BookShelfBean bookShelfBean) {
return Observable.create(new ObservableOnSubscribe<BookShelfBean>() {
@Override
public void subscribe(ObservableEmitter<BookShelfBean> e) throws Exception {
bookShelfBean.setTag(TAG);
bookShelfBean.setBookInfoBean(analyBookinfo(s, bookShelfBean.getNoteUrl()));
e.onNext(bookShelfBean);
e.onComplete();
}
});
}
private BookInfoBean analyBookinfo(String s, String novelUrl) {
BookInfoBean bookInfoBean = new BookInfoBean();
bookInfoBean.setNoteUrl(novelUrl); //id
bookInfoBean.setTag(TAG);
Document doc = Jsoup.parse(s);
Element resultE = doc.getElementsByClass("content").get(0);
String coverUrl = resultE.getElementsByClass("imgShow").get(0).getElementsByTag("img").get(0).attr("src");
bookInfoBean.setCoverUrl(coverUrl.startsWith("http") ? coverUrl : (TAG + coverUrl));
bookInfoBean.setName(resultE.getElementsByClass("tit").get(1).getElementsByTag("h1").get(0).text());
bookInfoBean.setAuthor(resultE.getElementsByClass("author").get(0).getElementsByClass("common").get(0).text());
bookInfoBean.setIntroduce("\u3000\u3000" + resultE.getElementsByClass("desc").get(0).text().trim());
bookInfoBean.setChapterUrl(TAG + resultE.getElementsByClass("category").get(0).getElementsByTag("a").get(0).attr("href"));
bookInfoBean.setOrigin(resultE.getElementsByClass("attribute").get(0).getElementsByClass("source").get(0).getElementsByClass("t").get(0).text());
return bookInfoBean;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*
* return BookShelfBean
*/
@Override
public void getChapterList(final BookShelfBean bookShelfBean, OnGetChapterListListener getChapterListListener) {
getChapterListPage(bookShelfBean, getChapterListListener, 1);
}
private void getChapterListPage(final BookShelfBean bookShelfBean, final OnGetChapterListListener getChapterListListener, final int page) {
getRetrofitObject(TAG).create(IEasouApi.class).getChapterList(bookShelfBean.getBookInfoBean().getChapterUrl().replace(TAG, "").replace("1_", page + "_")).flatMap(new Function<String, ObservableSource<WebChapterBean<BookShelfBean>>>() {
@Override
public ObservableSource<WebChapterBean<BookShelfBean>> apply(String s) throws Exception {
return analyChapterList(s, bookShelfBean, page == 1 ? true : false);
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SimpleObserver<WebChapterBean<BookShelfBean>>() {
@Override
public void onNext(WebChapterBean<BookShelfBean> value) {
if (value.getNext()) {
getChapterListPage(value.getData(), getChapterListListener, page + 1);
} else {
if (value.getData().getBookInfoBean().getChapterlist() != null && value.getData().getBookInfoBean().getChapterlist().size() > 0) {
for (int i = 0; i < value.getData().getBookInfoBean().getChapterlist().size(); i++) {
int temp = i;
for (int j = i; j < value.getData().getBookInfoBean().getChapterlist().size(); j++) {
if (value.getData().getBookInfoBean().getChapterlist().get(temp).getDurChapterIndex() > value.getData().getBookInfoBean().getChapterlist().get(j).getDurChapterIndex()) {
temp = j;
}
}
ChapterListBean tempBean = value.getData().getBookInfoBean().getChapterlist().get(i);
value.getData().getBookInfoBean().getChapterlist().set(i, value.getData().getBookInfoBean().getChapterlist().get(temp));
value.getData().getBookInfoBean().getChapterlist().set(temp, tempBean);
}
for (int i = 0; i < value.getData().getBookInfoBean().getChapterlist().size(); i++) {
value.getData().getBookInfoBean().getChapterlist().get(i).setDurChapterIndex(i);
}
}
if (getChapterListListener != null) {
getChapterListListener.success(value.getData());
}
}
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
if (getChapterListListener != null) {
getChapterListListener.error();
}
}
});
}
private Observable<WebChapterBean<BookShelfBean>> analyChapterList(final String s, final BookShelfBean bookShelfBean, final Boolean isFirstPage) {
return Observable.create(new ObservableOnSubscribe<WebChapterBean<BookShelfBean>>() {
@Override
public void subscribe(ObservableEmitter<WebChapterBean<BookShelfBean>> e) throws Exception {
bookShelfBean.setTag(TAG);
WebChapterBean<List<ChapterListBean>> temp = analyChapterlist(s, bookShelfBean.getNoteUrl(), bookShelfBean.getTag());
if (isFirstPage) {
bookShelfBean.getBookInfoBean().setChapterlist(temp.getData());
} else {
bookShelfBean.getBookInfoBean().addChapterlist(temp.getData());
}
e.onNext(new WebChapterBean<BookShelfBean>(bookShelfBean, temp.getNext()));
e.onComplete();
}
});
}
private WebChapterBean<List<ChapterListBean>> analyChapterlist(String s, String novelUrl, String chapterUrl) {
Document doc = Jsoup.parse(s);
Element element = doc.getElementsByClass("content").get(0);
Elements chapterlist = element.getElementsByClass("category").get(0).getElementsByTag("li");
List<ChapterListBean> chapterBeans = new ArrayList<ChapterListBean>();
for (int i = 0; i < chapterlist.size(); i++) {
ChapterListBean temp = new ChapterListBean();
temp.setDurChapterUrl(chapterUrl + chapterlist.get(i).getElementsByTag("a").get(0).attr("href")); //id
String name = chapterlist.get(i).getElementsByTag("a").get(0).text();
setDurChapterData(i, name, temp);
temp.setNoteUrl(novelUrl);
temp.setTag(TAG);
chapterBeans.add(temp);
}
Elements nextE = doc.getElementsByClass("pager").get(0).getElementsByClass("next unable");
Boolean next = (nextE == null || nextE.size() <= 0) ? true : false;
return new WebChapterBean<List<ChapterListBean>>(chapterBeans, next);
}
private void setDurChapterData(int i, String name, ChapterListBean temp) {
try {
String regex = "第.{1,7}章";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(name);
if (m.find()) {
String indexTemp = m.group();
indexTemp = indexTemp.replace("第", "").replace("章", "").trim();
String regex3 = "[0-9]{1,6}";
Pattern p3 = Pattern.compile(regex3);
Matcher m3 = p3.matcher(indexTemp);
int resultIndex = i;
if (m3.matches()) {
resultIndex = Integer.parseInt(indexTemp);
} else {
resultIndex = parse(indexTemp);
}
temp.setDurChapterIndex(resultIndex);
} else {
String regex2 = "[0-9]{1,6}\\.";
Pattern p2 = Pattern.compile(regex2);
Matcher m2 = p2.matcher(name);
if (m2.find()) {
String indexTemp = m2.group();
indexTemp = indexTemp.replaceAll("\\.", "").trim();
int resultIndex = Integer.parseInt(indexTemp);
temp.setDurChapterIndex(resultIndex);
} else {
temp.setDurChapterIndex(i);
}
}
} catch (Exception e) {
e.printStackTrace();
temp.setDurChapterIndex(i);
}finally {
temp.setDurChapterName(name);
}
}
public static int parse(String money) {
int result = 0;
char c = 0;
boolean flag = Pattern.matches("^.*亿.*万.*$", money);
for (int i = 0; i < money.length(); i++) {
switch (money.charAt(i)) {
case '零':
break;
case '一':
c = 1;
break;
case '二':
c = 2;
break;
case '三':
c = 3;
break;
case '四':
c = 4;
break;
case '五':
c = 5;
break;
case '六':
c = 6;
break;
case '七':
c = 7;
break;
case '八':
c = 8;
break;
case '九':
c = 9;
break;
case '十':
result += (c == 0 ? 10 : c * 10);
c = 0;
break;
case '百':
result += c * 100;
c = 0;
break;
case '千':
result += c * 1000;
c = 0;
break;
case '万':
result = (result + c) * 10000;
c = 0;
break;
case '亿':
if (flag) {
result = (result + c) * 10000;
} else {
result = (result + c) * 100000000;
}
c = 0;
break;
default:
c = 0;
}
}
if (c != 0)
result += c;
return result;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
*
*/
@Override
public Observable<BookContentBean> getBookContent(final String durChapterUrl, final int durChapterIndex) {
return Observable.create(new ObservableOnSubscribe<BookContentBean>() {
@Override
public void subscribe(final ObservableEmitter<BookContentBean> e) throws Exception {
OkHttpClient client = clientBuilder.build();
Request.Builder requestBuilder = new Request.Builder().url(durChapterUrl).method("GET", null);
requestBuilder.addHeader("Accept", "text/html,application/xhtml+xml,application/xml");
requestBuilder.addHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3");
requestBuilder.addHeader("Accept-Charset", "UTF-8");
requestBuilder.addHeader("Keep-Alive", "300");
requestBuilder.addHeader("Cache-Control", "no-cache");
requestBuilder.addHeader("Connection", "Keep-Alive");
Call mcall = client.newCall(requestBuilder.build());
mcall.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException ex) {
ex.printStackTrace();
if (!e.isDisposed()) {
e.onError(ex);
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String url = response.request().url().toString();
BookContentBean bookContentBean = new BookContentBean();
try {
bookContentBean = choiceAnaly(response, url, durChapterUrl, durChapterIndex);
} catch (Exception e) {
e.printStackTrace();
ErrorAnalyContentManager.getInstance().writeMayByNetError(url);
bookContentBean = new BookContentBean();
bookContentBean.setDurChapterIndex(durChapterIndex);
bookContentBean.setDurChapterUrl(durChapterUrl);
bookContentBean.setDurCapterContent(url.substring(0, url.indexOf('/', 8)) + "站点服务器异常");
bookContentBean.setTag(TAG);
bookContentBean.setRight(false);
}
if (!e.isDisposed()) {
e.onNext(bookContentBean);
e.onComplete();
}
}
});
}
});
}
private BookContentBean choiceAnaly(Response response, String url, String durChapterUrl, int durChapterIndex) throws Exception {
BookContentBean bookContentBean = new BookContentBean();
bookContentBean.setDurChapterIndex(durChapterIndex);
bookContentBean.setDurChapterUrl(durChapterUrl);
bookContentBean.setTag(TAG);
if (url.contains(ContentEasouModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentEasouModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentShulouModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentShulouModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentPbtxtModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentPbtxtModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentXqingdouModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentXqingdouModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentSnwx8ModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentSnwx8ModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(Content17kModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(Content17kModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(Content92zwModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(Content92zwModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentSuimengModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentSuimengModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentKewaishuModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentKewaishuModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentWxguanModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentWxguanModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentBaishukuModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentBaishukuModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentAszwModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentAszwModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentXqingdouCCModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentXqingdouCCModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentFuheishuModelImpl.TAG)) {
String xml = response.body().string();
//站点有问题 未完全解析
bookContentBean.setDurCapterContent(ContentFuheishuModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentSyzwwModelImpl.TAG)) {
String xml = response.body().string();
//站点有问题 未完全解析
bookContentBean.setDurCapterContent(ContentSyzwwModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(Content630bookCCModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(Content630bookCCModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentBxwx9ModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentBxwx9ModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(Content44pqModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(Content44pqModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentQzreadModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentQzreadModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentLeduwoModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentLeduwoModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(Content17duxsModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(Content17duxsModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentDhzwModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentDhzwModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentYb3ModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentYb3ModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentZhulangModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentZhulangModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentRanwenaModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentRanwenaModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentPpxsModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GBK"));
bookContentBean.setDurCapterContent(ContentPpxsModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentVodtwModelImpl.TAG)) {
String xml = response.body().source().readString(Charset.forName("GB2312"));
bookContentBean.setDurCapterContent(ContentVodtwModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentQulaModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentQulaModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(ContentLewen8ModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(ContentLewen8ModelImpl.getInstance().analyBookcontent(xml, url));
} else if (url.contains(Content3dllcModelImpl.TAG)) {
String xml = response.body().string();
bookContentBean.setDurCapterContent(Content3dllcModelImpl.getInstance().analyBookcontent(xml, url));
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
else {
byte[] xmlData = response.body().source().readByteArray();
String xml = new String(xmlData, "UTF-8");
String charset = "UTF-8";
try {
Document doc = Jsoup.parse(xml);
String data = doc.getElementsByTag("head").get(0).getElementsByTag("meta").get(0).attr("content").toUpperCase().trim();
if (data.contains("CHARSET")) {
data = data.substring(data.indexOf("CHARSET=") + 8);
if (data.contains(";")) {
data = data.substring(0, data.indexOf(";"));
}
charset = data;
if (!charset.equals("UTF-8")) {
xml = new String(xmlData, charset);
}
}
} catch (Exception e) {
e.printStackTrace();
}
bookContentBean = ContentCommendModelImpl.getInstance().analyBookcontent(bookContentBean, xml, url);
}
return bookContentBean;
}
/*
*/
public static void main(String[] args) {
EasouBookModelImpl.getInstance().getBookContent("http://www.yb3.cc/5200/3186/7426551.html", 0)
.subscribe(new SimpleObserver<BookContentBean>() {
@Override
public void onNext(BookContentBean value) {
value.getRight();
}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
});
// EasouBookModelImpl.getInstance().setDurChapterData(1,"第42章学习",new ChapterListBean());
// EasouBookModelImpl.getInstance().getLibraryData(null)
// .subscribe(new SimpleObserver<LibraryBean>() {
// @Override
// public void onNext(LibraryBean value) {
// }
//
// @Override
// public void onError(Throwable e) {
// e.printStackTrace();
// }
// });
}
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.basemvplib.impl.BaseModelImpl;
@ -17,16 +18,13 @@ import com.monke.monkeybook.common.api.IGxwztvApi;
import com.monke.monkeybook.listener.OnGetChapterListListener;
import com.monke.monkeybook.model.IGxwztvBookModel;
import com.monke.monkeybook.presenter.impl.LibraryPresenterImpl;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.basemvplib.impl.BaseModelImpl;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.basemvplib.impl.BaseModelImpl;
@ -12,16 +13,13 @@ import com.monke.monkeybook.bean.WebChapterBean;
import com.monke.monkeybook.common.api.ILingdiankanshuApi;
import com.monke.monkeybook.listener.OnGetChapterListListener;
import com.monke.monkeybook.model.IStationBookModel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.model.impl;
import com.monke.monkeybook.bean.BookContentBean;
@ -25,10 +26,7 @@ public class WebBookModelImpl implements IWebBookModel {
*/
@Override
public Observable<BookShelfBean> getBookInfo(BookShelfBean bookShelfBean) {
if (bookShelfBean.getTag().equals(EasouBookModelImpl.TAG)) {
return EasouBookModelImpl.getInstance().getBookInfo(bookShelfBean);
}
else if(bookShelfBean.getTag().equals(GxwztvBookModelImpl.TAG)){
if(bookShelfBean.getTag().equals(GxwztvBookModelImpl.TAG)){
return GxwztvBookModelImpl.getInstance().getBookInfo(bookShelfBean);
}
else if(bookShelfBean.getTag().equals(LingdiankanshuStationBookModelImpl.TAG)){
@ -47,10 +45,7 @@ public class WebBookModelImpl implements IWebBookModel {
*/
@Override
public void getChapterList(final BookShelfBean bookShelfBean, OnGetChapterListListener getChapterListListener) {
if (bookShelfBean.getTag().equals(EasouBookModelImpl.TAG)) {
EasouBookModelImpl.getInstance().getChapterList(bookShelfBean, getChapterListListener);
}
else if(bookShelfBean.getTag().equals(GxwztvBookModelImpl.TAG)){
if(bookShelfBean.getTag().equals(GxwztvBookModelImpl.TAG)){
GxwztvBookModelImpl.getInstance().getChapterList(bookShelfBean, getChapterListListener);
}
else if(bookShelfBean.getTag().equals(LingdiankanshuStationBookModelImpl.TAG)){
@ -69,10 +64,7 @@ public class WebBookModelImpl implements IWebBookModel {
*/
@Override
public Observable<BookContentBean> getBookContent(String durChapterUrl, int durChapterIndex, String tag) {
if (tag.equals(EasouBookModelImpl.TAG)) {
return EasouBookModelImpl.getInstance().getBookContent(durChapterUrl, durChapterIndex);
}
else if(tag.equals(GxwztvBookModelImpl.TAG)){
if(tag.equals(GxwztvBookModelImpl.TAG)){
return GxwztvBookModelImpl.getInstance().getBookContent(durChapterUrl, durChapterIndex);
}
else if(tag.equals(LingdiankanshuStationBookModelImpl.TAG)){
@ -93,10 +85,7 @@ public class WebBookModelImpl implements IWebBookModel {
*/
@Override
public Observable<List<SearchBookBean>> searchOtherBook(String content,int page,String tag){
if(tag.equals(EasouBookModelImpl.TAG)){
return EasouBookModelImpl.getInstance().searchBook(content, page, 0);
}
else if(tag.equals(GxwztvBookModelImpl.TAG)){
if(tag.equals(GxwztvBookModelImpl.TAG)){
return GxwztvBookModelImpl.getInstance().searchBook(content, page);
}
else if(tag.equals(LingdiankanshuStationBookModelImpl.TAG)){
@ -112,14 +101,6 @@ public class WebBookModelImpl implements IWebBookModel {
});
}
}
/**
* //专用
*/
@Override
public Observable<List<SearchBookBean>> searchBook(String content, int page,int rankKind) {
return EasouBookModelImpl.getInstance().searchBook(content, page, rankKind);
}
/**
*
*/

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter;
import com.monke.basemvplib.IPresenter;
@ -6,17 +7,17 @@ import com.monke.monkeybook.bean.SearchBookBean;
public interface IBookDetailPresenter extends IPresenter{
public int getOpenfrom();
int getOpenfrom();
public SearchBookBean getSearchBook();
SearchBookBean getSearchBook();
public BookShelfBean getBookShelf();
BookShelfBean getBookShelf();
public Boolean getInBookShelf();
Boolean getInBookShelf();
public void getBookShelfInfo();
void getBookShelfInfo();
public void addToBookShelf();
void addToBookShelf();
public void removeFromBookShelf();
void removeFromBookShelf();
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter;
import android.app.Activity;
@ -10,27 +11,27 @@ import com.monke.monkeybook.widget.contentswitchview.BookContentView;
public interface IBookReadPresenter extends IPresenter{
public int getOpen_from();
int getOpen_from();
public BookShelfBean getBookShelf();
BookShelfBean getBookShelf();
public void initContent();
void initContent();
public void loadContent(BookContentView bookContentView,long bookTag, final int chapterIndex, final int page);
void loadContent(BookContentView bookContentView,long bookTag, final int chapterIndex, final int page);
public void updateProgress(int chapterIndex, int pageIndex);
void updateProgress(int chapterIndex, int pageIndex);
public void saveProgress();
void saveProgress();
public String getChapterTitle(int chapterIndex);
String getChapterTitle(int chapterIndex);
public void setPageLineCount(int pageLineCount);
void setPageLineCount(int pageLineCount);
public void addToShelf(final ReadBookPresenterImpl.OnAddListner addListner);
void addToShelf(final ReadBookPresenterImpl.OnAddListner addListner);
public Boolean getAdd();
Boolean getAdd();
public void initData(Activity activity);
void initData(Activity activity);
public void openBookFromOther(Activity activity);
void openBookFromOther(Activity activity);
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter;
import com.monke.basemvplib.IPresenter;
@ -5,13 +6,13 @@ import com.monke.monkeybook.bean.SearchBookBean;
public interface IChoiceBookPresenter extends IPresenter{
public int getPage();
int getPage();
public void initPage();
void initPage();
public void toSearchBooks(String key);
void toSearchBooks(String key);
public void addBookToShelf(final SearchBookBean searchBookBean);
void addBookToShelf(final SearchBookBean searchBookBean);
public String getTitle();
String getTitle();
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter;
import com.monke.basemvplib.IPresenter;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter;
import com.monke.basemvplib.IPresenter;
@ -5,7 +6,7 @@ import java.util.LinkedHashMap;
public interface ILibraryPresenter extends IPresenter{
public LinkedHashMap<String, String> getKinds();
LinkedHashMap<String, String> getKinds();
public void getLibraryData();
void getLibraryData();
}

@ -1,7 +1,8 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter;
import com.monke.basemvplib.IPresenter;
public interface IMainPresenter extends IPresenter{
public void queryBookShelf(Boolean needRefresh);
void queryBookShelf(Boolean needRefresh);
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter;
import com.monke.basemvplib.IPresenter;
@ -5,25 +6,25 @@ import com.monke.monkeybook.bean.SearchBookBean;
public interface ISearchPresenter extends IPresenter{
public Boolean getHasSearch();
Boolean getHasSearch();
public void setHasSearch(Boolean hasSearch);
void setHasSearch(Boolean hasSearch);
public void insertSearchHistory();
void insertSearchHistory();
public void querySearchHistory();
void querySearchHistory();
public void cleanSearchHistory();
void cleanSearchHistory();
public int getPage();
int getPage();
public void initPage();
void initPage();
public void toSearchBooks(String key);
void toSearchBooks(String key,Boolean fromError);
public void addBookToShelf(final SearchBookBean searchBookBean);
void addBookToShelf(final SearchBookBean searchBookBean);
public Boolean getInput();
Boolean getInput();
public void setInput(Boolean input);
void setInput(Boolean input);
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter.impl;
import android.content.Intent;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter.impl;
import android.content.Intent;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter.impl;
import android.os.Environment;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter.impl;
import android.os.Handler;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter.impl;
import android.support.annotation.NonNull;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter.impl;
import android.Manifest;
@ -316,7 +317,6 @@ public class ReadBookPresenterImpl extends BasePresenterImpl<IBookReadView> impl
TextPaint mPaint = (TextPaint) mView.getPaint();
mPaint.setSubpixelText(true);
Layout tempLayout = new StaticLayout(paragraphstr, mPaint, mView.getContentWidth(), Layout.Alignment.ALIGN_NORMAL, 0, 0, false);
;
List<String> linesdata = new ArrayList<String>();
for (int i = 0; i < tempLayout.getLineCount(); i++) {
linesdata.add(paragraphstr.substring(tempLayout.getLineStart(i), tempLayout.getLineEnd(i)));

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.presenter.impl;
import android.support.annotation.NonNull;
@ -16,7 +17,6 @@ import com.monke.monkeybook.common.RxBusTag;
import com.monke.monkeybook.dao.DbHelper;
import com.monke.monkeybook.dao.SearchHistoryBeanDao;
import com.monke.monkeybook.listener.OnGetChapterListListener;
import com.monke.monkeybook.model.impl.EasouBookModelImpl;
import com.monke.monkeybook.model.impl.GxwztvBookModelImpl;
import com.monke.monkeybook.model.impl.LingdiankanshuStationBookModelImpl;
import com.monke.monkeybook.model.impl.WebBookModelImpl;
@ -36,6 +36,12 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implements ISearchPresenter {
public static final String TAG_KEY = "tag";
public static final String HASMORE_KEY = "hasMore";
public static final String HASLOAD_KEY = "hasLoad";
public static final String DURREQUESTTIME = "durRequestTime"; //当前搜索引擎失败次数 成功一次会重新开始计数
public static final String MAXREQUESTTIME = "maxRequestTime"; //最大连续请求失败次数
public static final int BOOK = 2;
private Boolean hasSearch = false; //判断是否搜索过
@ -73,25 +79,24 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
}
});
//搜索引擎初始化
searchEngine = new ArrayList<>();
Map gxwztvMap = new HashMap();
gxwztvMap.put("tag", GxwztvBookModelImpl.TAG);
gxwztvMap.put("hasMore", true);
gxwztvMap.put("hasLoad", false);
gxwztvMap.put(TAG_KEY, GxwztvBookModelImpl.TAG);
gxwztvMap.put(HASMORE_KEY, true);
gxwztvMap.put(HASLOAD_KEY, false);
gxwztvMap.put(DURREQUESTTIME, 1);
gxwztvMap.put(MAXREQUESTTIME, 3);
searchEngine.add(gxwztvMap);
Map lingdiankanshu = new HashMap();
lingdiankanshu.put("tag", LingdiankanshuStationBookModelImpl.TAG);
lingdiankanshu.put("hasMore", true);
lingdiankanshu.put("hasLoad", false);
lingdiankanshu.put(TAG_KEY, LingdiankanshuStationBookModelImpl.TAG);
lingdiankanshu.put(HASMORE_KEY, true);
lingdiankanshu.put(HASLOAD_KEY, false);
lingdiankanshu.put(DURREQUESTTIME, 1);
lingdiankanshu.put(MAXREQUESTTIME, 3);
searchEngine.add(lingdiankanshu);
Map easou = new HashMap();
easou.put("tag", EasouBookModelImpl.TAG);
easou.put("hasMore", true);
easou.put("hasLoad", false);
searchEngine.add(easou);
}
@Override
@ -211,40 +216,63 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
}
@Override
public void toSearchBooks(String key) {
public void toSearchBooks(String key, Boolean fromError) {
if (key != null) {
durSearchKey = key;
this.startThisSearchTime = System.currentTimeMillis();
for (int i = 0; i < searchEngine.size(); i++) {
searchEngine.get(i).put("hasMore", true);
searchEngine.get(i).put("hasLoad", false);
searchEngine.get(i).put(HASMORE_KEY, true);
searchEngine.get(i).put(HASLOAD_KEY, false);
searchEngine.get(i).put(DURREQUESTTIME, 1);
}
}
searchBook(durSearchKey, startThisSearchTime, 0);
searchBook(durSearchKey, startThisSearchTime, fromError);
}
private void searchBook(final String content, final long searchTime, final int searchEngineIndex) {
private void searchBook(final String content, final long searchTime, Boolean fromError) {
if (searchTime == startThisSearchTime) {
Boolean hasMore = false;
Boolean canLoad = false;
for (Map temp : searchEngine) {
if ((Boolean) temp.get("hasMore")) {
hasMore = true;
if ((Boolean) temp.get(HASMORE_KEY) && (int) temp.get(DURREQUESTTIME) <= (int) temp.get(MAXREQUESTTIME)) {
canLoad = true;
break;
}
}
if (hasMore) {
if (searchEngineIndex < searchEngine.size()) {
if ((Boolean) searchEngine.get(searchEngineIndex).get("hasMore") && !(Boolean) searchEngine.get(searchEngineIndex).get("hasLoad")) {
WebBookModelImpl.getInstance().searchOtherBook(content, page, (String) searchEngine.get(searchEngineIndex).get("tag"))
if (canLoad) {
int searchEngineIndex = -1;
for (int i = 0; i < searchEngine.size(); i++) {
if (!(Boolean) searchEngine.get(i).get(HASLOAD_KEY) && (int) searchEngine.get(i).get(DURREQUESTTIME) <= (int) searchEngine.get(i).get(MAXREQUESTTIME)) {
searchEngineIndex = i;
break;
}
}
if (searchEngineIndex == -1) {
this.page++;
for (Map item : searchEngine) {
item.put(HASLOAD_KEY, false);
}
if (!fromError) {
if (page - 1 == 1) {
mView.refreshFinish(false);
} else {
mView.loadMoreFinish(false);
}
} else {
searchBook(content, searchTime, false);
}
} else {
final int finalSearchEngineIndex = searchEngineIndex;
WebBookModelImpl.getInstance().searchOtherBook(content, page, (String) searchEngine.get(searchEngineIndex).get(TAG_KEY))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.newThread())
.subscribe(new SimpleObserver<List<SearchBookBean>>() {
@Override
public void onNext(List<SearchBookBean> value) {
if (searchTime == startThisSearchTime) {
searchEngine.get(searchEngineIndex).put("hasLoad", true);
searchEngine.get(finalSearchEngineIndex).put(HASLOAD_KEY, true);
searchEngine.get(finalSearchEngineIndex).put(DURREQUESTTIME, 1);
if (value.size() == 0) {
searchEngine.get(searchEngineIndex).put("hasMore", false);
searchEngine.get(finalSearchEngineIndex).put(HASMORE_KEY, false);
} else {
for (SearchBookBean temp : value) {
for (BookShelfBean bookShelfBean : bookShelfs) {
@ -255,16 +283,16 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
}
}
}
if (page == 1 && searchEngineIndex == 0) {
if (page == 1 && finalSearchEngineIndex == 0) {
mView.refreshSearchBook(value);
} else {
if (value != null && value.size() > 0 && !mView.checkIsExist(value.get(0)))
mView.loadMoreSearchBook(value);
else {
searchEngine.get(searchEngineIndex).put("hasMore", false);
searchEngine.get(finalSearchEngineIndex).put(HASMORE_KEY, false);
}
}
searchBook(content, searchTime, searchEngineIndex + 1);
searchBook(content, searchTime, false);
}
}
@ -272,24 +300,12 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
public void onError(Throwable e) {
e.printStackTrace();
if (searchTime == startThisSearchTime) {
searchEngine.get(searchEngineIndex).put("hasLoad", false);
mView.searchBookError(page == 1 && (searchEngineIndex == 0 || (searchEngineIndex > 0 && mView.getSearchBookAdapter().getItemcount() == 0)));
searchEngine.get(finalSearchEngineIndex).put(HASLOAD_KEY, false);
searchEngine.get(finalSearchEngineIndex).put(DURREQUESTTIME, ((int) searchEngine.get(finalSearchEngineIndex).get(DURREQUESTTIME)) + 1);
mView.searchBookError(page == 1 && (finalSearchEngineIndex == 0 || (finalSearchEngineIndex > 0 && mView.getSearchBookAdapter().getItemcount() == 0)));
}
}
});
} else {
searchBook(content, searchTime, searchEngineIndex + 1);
}
} else {
if (page == 1) {
mView.refreshFinish(false);
} else {
mView.loadMoreFinish(false);
}
this.page++;
for (Map item : searchEngine) {
item.put("hasLoad", false);
}
}
} else {
if (page == 1) {
@ -299,7 +315,7 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
}
this.page++;
for (Map item : searchEngine) {
item.put("hasLoad", false);
item.put(HASLOAD_KEY, false);
}
}
}
@ -405,9 +421,9 @@ public class SearchPresenterImpl extends BasePresenterImpl<ISearchView> implemen
}
)
public void hadRemoveBook(BookShelfBean bookShelfBean) {
if(bookShelfs!=null){
for(int i=0;i<bookShelfs.size();i++){
if(bookShelfs.get(i).getNoteUrl().equals(bookShelfBean.getNoteUrl())){
if (bookShelfs != null) {
for (int i = 0; i < bookShelfs.size(); i++) {
if (bookShelfs.get(i).getNoteUrl().equals(bookShelfBean.getNoteUrl())) {
bookShelfs.remove(i);
break;
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.service;
import android.app.NotificationManager;
@ -29,7 +30,6 @@ import com.monke.monkeybook.dao.DbHelper;
import com.monke.monkeybook.dao.DownloadChapterBeanDao;
import com.monke.monkeybook.model.impl.WebBookModelImpl;
import com.monke.monkeybook.view.impl.MainActivity;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.utils;
import android.content.Context;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.utils;
import android.app.Activity;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.utils;
import android.content.Context;

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.utils;
public class NumberUtil {

@ -1,13 +1,4 @@
/*
* Copyright (C) 2016 ZED, Inc.
*
* This code contain confidential information from ZED Technologies Co.,Ltd.,
* which is intended only for the person or entity whose address is listed above.
* Any use of the information contained herein in any way (including, but not limited to,
* total or partial disclosure, reproduction, or dissemination)
* by persons other than the intended recipient(s) is prohibited
*
*/
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.utils;
import android.content.Context;
@ -18,18 +9,6 @@ import android.net.Uri;
import android.os.Build;
import android.support.v4.content.PermissionChecker;
/**
* <p>2016-</p>
* <p/>
* <p></p>
* <p></p>
* <p>2017/1/16</p>
* <p> </p>
* <p> </p>
* <p> </p>
*
* @version V1.0
*/
public class PremissionCheck {
public static Boolean checkPremission(Context context,String permission){
boolean result = false;
@ -37,7 +16,6 @@ public class PremissionCheck {
result = context.checkSelfPermission(permission)
== PackageManager.PERMISSION_GRANTED;
} else {
// targetSdkVersion < Android M, we have to use PermissionChecker
result = PermissionChecker.checkSelfPermission(context, permission)
== PermissionChecker.PERMISSION_GRANTED;
}

@ -1,9 +1,16 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view;
import com.monke.basemvplib.IView;
public interface IBookDetailView extends IView{
public void updateView();
/**
* UI
*/
void updateView();
public void getBookShelfError();
/**
*
*/
void getBookShelfError();
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view;
import android.graphics.Paint;
@ -5,23 +6,40 @@ import com.monke.basemvplib.IView;
public interface IBookReadView extends IView{
public Paint getPaint();
/**
* UI
* @return
*/
Paint getPaint();
public int getContentWidth();
/**
*
* @return
*/
int getContentWidth();
public void initContentSuccess(int durChapterIndex, int chapterAll, int durPageIndex);
/**
*
* @param durChapterIndex
* @param chapterAll
* @param durPageIndex
*/
void initContentSuccess(int durChapterIndex, int chapterAll, int durPageIndex);
public void startLoadingBook();
/**
*
*/
void startLoadingBook();
public void setHpbReadProgressMax(int count);
void setHpbReadProgressMax(int count);
public void initPop();
void initPop();
public void showLoadBook();
void showLoadBook();
public void dimissLoadBook();
void dimissLoadBook();
public void loadLocationBookError();
void loadLocationBookError();
public void showDownloadMenu();
void showDownloadMenu();
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view;
import com.monke.basemvplib.IView;
@ -7,23 +8,23 @@ import java.util.List;
public interface IChoiceBookView extends IView{
public void refreshSearchBook(List<SearchBookBean> books);
void refreshSearchBook(List<SearchBookBean> books);
public void loadMoreSearchBook(List<SearchBookBean> books);
void loadMoreSearchBook(List<SearchBookBean> books);
public void refreshFinish(Boolean isAll);
void refreshFinish(Boolean isAll);
public void loadMoreFinish(Boolean isAll);
void loadMoreFinish(Boolean isAll);
public void searchBookError();
void searchBookError();
public void addBookShelfSuccess(List<SearchBookBean> searchBooks);
void addBookShelfSuccess(List<SearchBookBean> searchBooks);
public void addBookShelfFailed(int code);
void addBookShelfFailed(int code);
public ChoiceBookAdapter getSearchBookAdapter();
ChoiceBookAdapter getSearchBookAdapter();
public void updateSearchItem(int index);
void updateSearchItem(int index);
public void startRefreshAnim();
void startRefreshAnim();
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view;
import com.monke.basemvplib.IView;
@ -5,11 +6,24 @@ import java.io.File;
public interface IImportBookView extends IView{
public void addNewBook(File newFile);
/**
*
* @param newFile
*/
void addNewBook(File newFile);
public void searchFinish();
/**
*
*/
void searchFinish();
public void addSuccess();
/**
*
*/
void addSuccess();
public void addError();
/**
*
*/
void addError();
}

@ -1,3 +1,4 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view;
import com.monke.basemvplib.IView;
@ -5,6 +6,14 @@ import com.monke.monkeybook.bean.LibraryBean;
public interface ILibraryView extends IView{
public void updateUI(LibraryBean library);
public void finishRefresh();
/**
* UI
* @param library
*/
void updateUI(LibraryBean library);
/**
* UI
*/
void finishRefresh();
}

@ -1,24 +1,43 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view;
import com.monke.basemvplib.IView;
import com.monke.monkeybook.bean.BookShelfBean;
import com.monke.monkeybook.view.adapter.BookShelfAdapter;
import java.util.List;
public interface IMainView extends IView{
public void refreshBookShelf(List<BookShelfBean> bookShelfBeanList);
public void activityRefreshView();
public void refreshFinish();
public void refreshError(String error);
public List<BookShelfBean> getBookShelfAdapterDatas();
public void refreshRecyclerViewItemAdd();
public void setRecyclerMaxProgress(int x);
/**
* UI
* @param bookShelfBeanList
*/
void refreshBookShelf(List<BookShelfBean> bookShelfBeanList);
/**
*
*/
void activityRefreshView();
/**
*
*/
void refreshFinish();
/**
*
* @param error
*/
void refreshError(String error);
/**
* UI
*/
void refreshRecyclerViewItemAdd();
/**
*
* @param x
*/
void setRecyclerMaxProgress(int x);
}

@ -1,37 +1,77 @@
//Copyright (c) 2017. 章钦豪. All rights reserved.
package com.monke.monkeybook.view;
import android.widget.EditText;
import com.monke.basemvplib.IView;
import com.monke.monkeybook.bean.SearchBookBean;
import com.monke.monkeybook.bean.SearchHistoryBean;
import com.monke.monkeybook.view.adapter.SearchBookAdapter;
import java.util.List;
public interface ISearchView extends IView{
public void insertSearchHistorySuccess(SearchHistoryBean searchHistoryBean);
public void querySearchHistorySuccess(List<SearchHistoryBean> datas);
public void refreshSearchBook(List<SearchBookBean> books);
public void loadMoreSearchBook(List<SearchBookBean> books);
public void refreshFinish(Boolean isAll);
public void loadMoreFinish(Boolean isAll);
public void searchBookError(Boolean isRefresh);
public EditText getEdtContent();
public void addBookShelfFailed(int code);
public SearchBookAdapter getSearchBookAdapter();
public void updateSearchItem(int index);
public Boolean checkIsExist(SearchBookBean searchBookBean);
/**
*
* @param searchHistoryBean
*/
void insertSearchHistorySuccess(SearchHistoryBean searchHistoryBean);
/**
*
* @param datas
*/
void querySearchHistorySuccess(List<SearchHistoryBean> datas);
/**
* UI
* @param books
*/
void refreshSearchBook(List<SearchBookBean> books);
/**
* UI
* @param books
*/
void loadMoreSearchBook(List<SearchBookBean> books);
/**
*
* @param isAll
*/
void refreshFinish(Boolean isAll);
/**
*
* @param isAll
*/
void loadMoreFinish(Boolean isAll);
/**
*
* @param isRefresh
*/
void searchBookError(Boolean isRefresh);
/**
* EditText
* @return
*/
EditText getEdtContent();
/**
*
* @param code
*/
void addBookShelfFailed(int code);
SearchBookAdapter getSearchBookAdapter();
void updateSearchItem(int index);
/**
*
* @param searchBookBean
* @return
*/
Boolean checkIsExist(SearchBookBean searchBookBean);
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save