//package com.nandaka.bakareaderclone.model; package com.dotcool.reader.model; import java.util.Date; import java.util.Iterator; import android.util.Log; import com.dotcool.model.Book; import com.dotcool.reader.Constants; import com.dotcool.reader.dao.NovelsDao; import com.dotcool.reader.helper.Util; //一页书的模型,有小说,内容等 public class PageModel { public static final String TYPE_NOVEL = "Novel"; public static final String TYPE_OTHER = "Other"; public static final String TYPE_CONTENT = "Content"; public static final String TYPE_TOS = "Copyrights"; private static final String TAG = PageModel.class.toString(); private int id = -1; private String page; private String language; /* Attribute for language marker */ private String title; private String type; private Date lastUpdate; private String parent; private PageModel parentPageModel; private PageModel pageModel; private Date lastCheck; private boolean isWatched; private boolean isFinishedRead = false; private boolean isDownloaded; private BookModel book; private int order; private String status; private boolean isHighlighted = false; private boolean isMissing = false; private boolean isExternal = false; private String summary; private String imgurl; private String redirectedTo; private int updateCount; // not saved to db private boolean isUpdated = false; public PageModel() { } public PageModel(String pageModel) { this.page = pageModel; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPage() { return page; } public void setPage(String page) { this.page = page; } public String getLanguage() { if (language == null) language = Constants.LANG_ENGLISH; return language; } public void setLanguage(String language) { this.language = language; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Date getLastUpdate() { return lastUpdate; } public void setLastUpdate(Date lastUpdate) { this.lastUpdate = lastUpdate; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getParent() { return parent; } public void setParent(String parent) { this.parent = parent; } public Date getLastCheck() { return lastCheck; } public void setLastCheck(Date lastCheck) { this.lastCheck = lastCheck; } public boolean isWatched() { return isWatched; } public void setWatched(boolean isWatched) { this.isWatched = isWatched; } public boolean isFinishedRead() { return isFinishedRead; } public void setFinishedRead(boolean isFinishedRead) { this.isFinishedRead = isFinishedRead; } public int getOrder() { return order; } public void setOrder(int order) { this.order = order; } public PageModel getParentPageModel() throws Exception { if (this.parentPageModel == null) { NovelsDao dao = NovelsDao.getInstance(); PageModel tempPage = new PageModel(); if (this.type.contentEquals(TYPE_CONTENT)) { String tempParent = parent.substring(0, parent.indexOf(Constants.NOVEL_BOOK_DIVIDER)); tempPage.setPage(tempParent); } else { tempPage.setPage(this.parent); } this.parentPageModel = dao.getPageModel(tempPage, null); } return parentPageModel; } public void setParentPageModel(PageModel parentPageModel) { this.parentPageModel = parentPageModel; } public PageModel getPageModel() throws Exception { if (this.pageModel == null) { NovelsDao dao = NovelsDao.getInstance(); PageModel tempPage = new PageModel(); tempPage.setPage(this.page); this.pageModel = dao.getPageModel(tempPage, null); } return pageModel; } public void setPageModel(PageModel pageModel) { this.pageModel = pageModel; } public boolean isDownloaded() { return isDownloaded; } public void setDownloaded(boolean isDownloaded) { this.isDownloaded = isDownloaded; } public BookModel getBook() { if (this.getType() != null && this.getType().equals(TYPE_CONTENT)) { if (this.book == null) { NovelsDao dao = NovelsDao.getInstance(); try { String bookTitle = parent.substring(parent.indexOf(Constants.NOVEL_BOOK_DIVIDER) + Constants.NOVEL_BOOK_DIVIDER.length()); NovelCollectionModel details = dao.getNovelDetails(getParentPageModel(), null); for (Iterator<BookModel> iBook = details.getBookCollections().iterator(); iBook.hasNext();) { BookModel tempBook = iBook.next(); if (tempBook.getTitle().equals(bookTitle)) { this.book = tempBook; break; } } } catch (Exception e) { Log.e(TAG, "Unable to get book for: " + getPage(), e); } } return this.book; } return null; } public void setBook(BookModel book) { this.book = book; } public boolean isUpdated() { return isUpdated; } public void setUpdated(boolean isUpdated) { this.isUpdated = isUpdated; } public String getRedirectedTo() { return redirectedTo; } public void setRedirectedTo(String redirectedTo) { this.redirectedTo = redirectedTo; } public boolean isHighlighted() { return isHighlighted; } public void setHighlighted(boolean isHighlighted) { this.isHighlighted = isHighlighted; } public boolean isMissing() { return isMissing; } public void setMissing(boolean isMissing) { this.isMissing = isMissing; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public boolean isTeaser() { if (status != null && status.length() > 0) { return status.contains(Constants.STATUS_TEASER); } return false; } public boolean isStalled() { if (status != null && status.length() > 0) { return status.contains(Constants.STATUS_STALLED); } return false; } public boolean isAbandoned() { if (status != null && status.length() > 0) { return status.contains(Constants.STATUS_ABANDONED); } return false; } public boolean isPending() { if (status != null && status.length() > 0) { return status.contains(Constants.STATUS_PENDING); } return false; } public boolean isExternal() { return isExternal; } public void setExternal(boolean isExternal) { this.isExternal = isExternal; } public int getUpdateCount() { return updateCount; } public void setUpdateCount(int updateCount) { this.updateCount = updateCount; } public boolean isRedlink() { if (Util.isStringNullOrEmpty(this.page)) return false; return this.page.endsWith("&action=edit&redlink=1"); } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public String getImgurl() { return imgurl; } public void setImgurl(String imgurl) { this.imgurl = imgurl; } }