pda/zhuike/.svn/pristine/c0/c0dca46599870330c7698e29f0e...

386 lines
9.4 KiB
Plaintext
Raw Normal View History

2024-02-06 22:23:29 +08:00
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(lastUpdateTime > nv.lastVisit && lastUpdateTime > nv.lastUpdateTime){
isUpdated =true;
}*/
isUpdated = lastUpdateTime > nv.lastVisit && 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 ,lastUpdateTime,nv.lastUpdateTime,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 ;
Log.d("Novel", String.format( " isupdated %s, server lastUpdateTime isLastReadchaptUpdated %s,isLastChaptUpdated %s" ,isUpdated,isLastReadchaptUpdated,isLastChaptUpdated ) );
*/
boolean isLastChaptUpdated = !TextUtils.isEmpty(chapterName) && !TextUtils.isEmpty(nv.chapterName) && !(chapterName.equals(nv.chapterName));
isUpdated = isUpdated && isLastChaptUpdated;
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;
}
}