392 lines
9.9 KiB
Plaintext
392 lines
9.9 KiB
Plaintext
package com.novelbook.android.db;
|
|
|
|
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
|
|
import com.novelbook.android.utils.CommonUtil;
|
|
import com.novelbook.android.utils.Constants;
|
|
|
|
import org.litepal.LitePal;
|
|
import org.litepal.annotation.Column;
|
|
import org.litepal.crud.LitePalSupport;
|
|
import org.w3c.dom.Text;
|
|
|
|
import java.io.Serializable;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
|
|
public class Novel extends LitePalSupport implements Serializable{
|
|
private int id;
|
|
//@Column(unique = true, defaultValue = "0")
|
|
private int novelId;
|
|
private String name;
|
|
private String infoUrl;
|
|
private String domain;
|
|
private String domainName;
|
|
private String muluUrl;
|
|
private String novelPath;
|
|
private long lastReadPos;
|
|
private int lastReadChapt=1;
|
|
private String charset;
|
|
private String novelType;
|
|
private String smallNovelType;
|
|
private String author;
|
|
private String cover;
|
|
private String chapterName;
|
|
private String desc;
|
|
private String progress;
|
|
private long lastUpdateTime;
|
|
private boolean isOnShelf; //是否入书架
|
|
private boolean isFinished; //是否完本
|
|
private boolean isUpdated;
|
|
private boolean isTop;//置顶
|
|
private long readtime; //阅读时间
|
|
private int chaptCnt; //总章数
|
|
private long lastVisit;//最近浏览,如何设置默认时间?
|
|
private String lastReadChaptName;
|
|
public int getChaptCnt() {
|
|
return chaptCnt;
|
|
}
|
|
|
|
public void setChaptCnt(int chaptCnt) {
|
|
this.chaptCnt = chaptCnt;
|
|
}
|
|
|
|
public long getReadtime() {
|
|
return readtime;
|
|
}
|
|
|
|
public void setReadtime(long readtime) {
|
|
this.readtime = readtime;
|
|
}
|
|
|
|
public String getDomainName() {
|
|
return domainName;
|
|
}
|
|
|
|
public void setDomainName(String domainName) {
|
|
this.domainName = domainName;
|
|
}
|
|
|
|
public long getLastVisit() {
|
|
return lastVisit;
|
|
}
|
|
|
|
public void setLastVisit(long lastVisit) {
|
|
this.lastVisit = lastVisit;
|
|
}
|
|
|
|
public boolean isTop() {
|
|
return isTop;
|
|
}
|
|
|
|
public void setTop(boolean top) {
|
|
isTop = top;
|
|
}
|
|
|
|
public boolean isUpdated() {
|
|
return isUpdated;
|
|
}
|
|
|
|
public void setUpdated(boolean updated) {
|
|
isUpdated = updated;
|
|
}
|
|
|
|
public String getInfoUrl() {
|
|
return infoUrl;
|
|
}
|
|
|
|
public void setInfoUrl(String infoUrl) {
|
|
this.infoUrl = infoUrl;
|
|
}
|
|
|
|
public String getSmallNovelType() {
|
|
return smallNovelType;
|
|
}
|
|
|
|
public void setSmallNovelType(String smallNovelType) {
|
|
this.smallNovelType = smallNovelType;
|
|
}
|
|
|
|
public String getChapterName() {
|
|
|
|
return chapterName;
|
|
}
|
|
|
|
public void setChapterName(String chapterName) {
|
|
this.chapterName = chapterName;
|
|
}
|
|
|
|
public String getDesc() {
|
|
return desc;
|
|
}
|
|
|
|
public void setDesc(String desc) {
|
|
this.desc = desc;
|
|
}
|
|
|
|
public String getProgress() {
|
|
return progress;
|
|
}
|
|
|
|
public void setProgress(String progress) {
|
|
this.progress = progress;
|
|
}
|
|
|
|
public int getId() {
|
|
return id;
|
|
}
|
|
|
|
public void setId(int id) {
|
|
this.id = id;
|
|
}
|
|
|
|
public int getNovelId() {
|
|
return novelId;
|
|
}
|
|
|
|
public void setNovelId(int novelId) {
|
|
this.novelId = novelId;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
public void setName(String novelName) {
|
|
this.name = novelName;
|
|
}
|
|
|
|
public String getDomain() {
|
|
return domain;
|
|
}
|
|
|
|
public void setDomain(String domain) {
|
|
this.domain = domain;
|
|
}
|
|
|
|
public String getMuluUrl() {
|
|
return muluUrl;
|
|
}
|
|
|
|
public void setMuluUrl(String muluUrl) {
|
|
this.muluUrl = muluUrl;
|
|
}
|
|
|
|
public String getNovelPath() {
|
|
return novelPath;
|
|
}
|
|
|
|
public void setNovelPath(String novelPath) {
|
|
this.novelPath = novelPath;
|
|
}
|
|
|
|
public long getLastReadPos() {
|
|
return lastReadPos;
|
|
}
|
|
|
|
public void setLastReadPos(long lastReadPos) {
|
|
this.lastReadPos = lastReadPos;
|
|
}
|
|
|
|
public int getLastReadChapt() {
|
|
// if(lastReadChapt<=0){lastReadChapt=1;}
|
|
return lastReadChapt;
|
|
}
|
|
|
|
public void setLastReadChapt(int lastReadChapt) {
|
|
// lastReadChapt = lastReadChapt >0 ? lastReadChapt :1;
|
|
this.lastReadChapt = lastReadChapt;
|
|
}
|
|
|
|
public String getCharset() {
|
|
return charset;
|
|
}
|
|
|
|
public void setCharset(String charset) {
|
|
this.charset = charset;
|
|
}
|
|
|
|
public String getNovelType() {
|
|
return novelType;
|
|
}
|
|
|
|
public void setNovelType(String novelType) {
|
|
this.novelType = novelType;
|
|
}
|
|
|
|
|
|
|
|
public String getAuthor() {
|
|
return author;
|
|
}
|
|
|
|
public void setAuthor(String author) {
|
|
this.author = author;
|
|
}
|
|
|
|
public String getCover() {
|
|
return cover;
|
|
}
|
|
|
|
public void setCover(String cover) {
|
|
this.cover = cover;
|
|
}
|
|
|
|
|
|
public long getLastUpdateTime() {
|
|
return lastUpdateTime;
|
|
}
|
|
|
|
public void setLastUpdateTime(long lastUpateTime) {
|
|
this.lastUpdateTime = lastUpateTime;
|
|
}
|
|
|
|
public boolean isOnShelf() {
|
|
return isOnShelf;
|
|
}
|
|
|
|
public void setOnShelf(boolean onShelf) {
|
|
isOnShelf = onShelf;
|
|
}
|
|
|
|
public boolean isFinished() {
|
|
return isFinished;
|
|
}
|
|
|
|
public void setFinished(boolean finished) {
|
|
isFinished = finished;
|
|
}
|
|
|
|
public boolean isLocalBook(){
|
|
return novelId==0;
|
|
}
|
|
public static Novel getNovelBySvrId(int novelId){
|
|
|
|
List<Novel> nvs = LitePal.where("novelId=?",novelId+"").limit(1).find(Novel.class);
|
|
if(nvs.size()>0){
|
|
return nvs.get(0);
|
|
}
|
|
return null;
|
|
}
|
|
public static List<Novel> getNovelsOnShelf(){
|
|
|
|
// return LitePal.where("isOnShelf=?","1").order("isTop desc,isUpdated desc,lastVisit desc,lastUpdateTime desc" ).find(Novel.class);
|
|
return LitePal.where("isOnShelf=?","1").order("isTop desc,lastUpdateTime desc" ).find(Novel.class);
|
|
|
|
|
|
}
|
|
public static List<Novel> getLocalNovels(){
|
|
|
|
return LitePal.where("novelPath !=? ","").find(Novel.class);
|
|
|
|
}
|
|
|
|
public static List<Novel> getNovelsHistory(){
|
|
|
|
return LitePal.where("lastVisit>0").order("lastVisit desc").limit(50).find(Novel.class);
|
|
|
|
}
|
|
|
|
/**
|
|
* 有没有新的更新
|
|
* @return
|
|
*/
|
|
/* public boolean isUpdated(){
|
|
return lastUpdateTime2 >0 && lastUpdateTime > lastUpdateTime2;
|
|
}
|
|
*/
|
|
private void setValues(){
|
|
lastVisit = new Date().getTime();
|
|
}
|
|
@Override
|
|
public boolean save(){
|
|
setValues();
|
|
return super.save();
|
|
}
|
|
@Override
|
|
public int update(long id){
|
|
setValues();
|
|
// checkAndUpdate();
|
|
Log.d("checkshelf", String.format("checkshelf:novel %s going to update,isUpdated %s,lastvist %s", getName() ,isUpdated, CommonUtil.getDateString(lastVisit )));
|
|
/* try {
|
|
throw new Exception("check update");
|
|
}catch (Exception e){
|
|
Log.e("checkshelf", "checkshelf ", e);
|
|
}*/
|
|
try {
|
|
return super.update(id);
|
|
}catch (Exception e){
|
|
Log.e("NOVELDB", "update:error ", e);
|
|
}
|
|
return 0;
|
|
}
|
|
public void testUpdate(){
|
|
isUpdated=true;
|
|
super.update(id);
|
|
}
|
|
public int checkAndUpdate(){
|
|
Novel nv = getNovelBySvrId(novelId);
|
|
if(nv==null){
|
|
return 0;
|
|
}
|
|
/* if(lastUpdateTime > nv.lastVisit && lastUpdateTime > nv.lastUpdateTime){
|
|
isUpdated =true;
|
|
}*/
|
|
// isUpdated = lastUpdateTime > nv.lastVisit && lastUpdateTime > nv.lastUpdateTime;
|
|
isUpdated = lastUpdateTime > nv.lastUpdateTime;
|
|
Log.d("Novel", String.format("book %s server lastUpdateTime %s, local lastupdatetime %s, local lastvist %s," +
|
|
"is updated %s, lastUpdateTime - nv.lastVisit %s,lastUpdateTime - nv.lastUpdateTime %s "
|
|
,name ,CommonUtil.getDateString(lastUpdateTime) ,CommonUtil.getDateString(nv.lastUpdateTime) ,CommonUtil.getDateString(nv.lastVisit) ,isUpdated,
|
|
lastUpdateTime - nv.lastVisit,
|
|
lastUpdateTime - nv.lastUpdateTime
|
|
|
|
) );
|
|
|
|
|
|
boolean isLastReadchaptUpdated = TextUtils.isEmpty(nv.lastReadChaptName) || !(chapterName.equals(nv.lastReadChaptName)); //没看过最新章节
|
|
boolean isLastChaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && !(chapterName.equals(nv.chapterName));
|
|
Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername %s,chaptername %s,lastreadchapt %s" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
|
/*
|
|
isUpdated = isUpdated && isLastReadchaptUpdated || isLastChaptUpdated ;
|
|
|
|
boolean isLastChaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && !(chapterName.equals(nv.chapterName));
|
|
*/
|
|
Log.d("Novel", String.format( " isupdated %s, server lastUpdateTime isLastReadchaptUpdated %s,isLastChaptUpdated %s" ,isUpdated,isLastReadchaptUpdated,isLastChaptUpdated ) );
|
|
|
|
Log.d("Novel", String.format( " server lastUpdateTime ,server chaptername %s,chaptername %s,lastreadchapt %s" , chapterName,nv.chapterName,nv.lastReadChaptName ) );
|
|
|
|
isUpdated = isUpdated && isLastChaptUpdated || lastUpdateTime > nv.lastVisit;
|
|
|
|
isUpdated = isUpdated && isLastReadchaptUpdated;
|
|
|
|
|
|
|
|
if(!isUpdated){
|
|
setToDefault("isUpdated");
|
|
}
|
|
|
|
return super.update(nv.id);
|
|
}
|
|
public int getMaxAge(){
|
|
int maxAge = Constants.MAXAGE_MULU;
|
|
if( isFinished){
|
|
maxAge =Constants.MAXAGE_MAX;
|
|
}else if(isUpdated){
|
|
maxAge = 0;
|
|
}
|
|
return maxAge; // return 0;// maxAge;
|
|
}
|
|
|
|
public String getLastReadChaptName() {
|
|
return lastReadChaptName;
|
|
}
|
|
|
|
public void setLastReadChaptName(String lastReadChaptName) {
|
|
this.lastReadChaptName = lastReadChaptName;
|
|
}
|
|
}
|