/** * @file IDatabaseService.java * * @revision: none * * @version 0.0.01 * @author: Zenki (zhajun), zenki2001cn@163.com * @date: 2011-7-19 上午08:35:52 */ package com.easyview.ebook.reader.engine.core; import java.util.HashMap; import java.util.List; import java.util.Map; import com.easyview.ebook.reader.engine.model.Book; import com.easyview.ebook.reader.engine.model.BookEmphasisInfo; import com.easyview.ebook.reader.engine.model.BookMarkInfo; /** * 數據庫的操作接口.<p> * 該接口針對Engine提供的數據庫Provider進行操作,需要在XML中配置以下Provider:<p> * <provider android:authorities="com.easyview.ebook.reader.engine.util.provider" * android:name="com.easyview.ebook.reader.engine.util.provider.ERSqliteProvider"> <p> * </provider> <p> * * 通過ERManager來獲取該數據庫接口:<p> * IDatabaseService dbs = (IDatabaseService) ERManager.getService(ERManager.DATABASE_SERVICE);<p> * dbs.addBook(book);<p> * dbs.queryBook(book);<p> * dbs.addBookmark(bookmark);<p> */ public interface IDatabaseService { /** 书籍信息的表名. */ public static final String BOOKINFO_TABLE_NAME = "bookinfo"; /** 书签信息的表名. */ public static final String BOOKMARK_TABLE_NAME = "bookmark"; /** 高亮信息的表名. */ public static final String BOOKEMPHASIS_TABLE_NAME = "bookemphasis"; /** 数据库名称. */ public static final String DATABASE_NAME = "ERProvider.db"; /** * 根据ID检查该书籍是否存在数据库中. * * @param book 书籍对象 * @return true, 存在. false, 不存在. */ public boolean checkBookInDb(Book book); /** * 添加书籍到数据库中. * * @param book Book对象 * @return true, 添加成功. false, 添加失败. */ public boolean addBook(Book book); /** * 添加书籍到数据库中. * * @param filePath 文件完整路径 * @return true, 添加成功. false, 添加失败. */ public boolean addBook(String filePath); /** * 批量添加书籍到数据库中. * * @param filePath 文件完整路徑的列表 * @return true, 添加成功. false, 添加失败. */ public boolean addBook(String[] filePath); /** * 删除书籍信息. * * @param book Book对象 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteBook(Book book); /** * 刪除書籍信息. * * @param filePath 書籍文件完整路徑 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteBook(String filePath); /** * 清空所有書籍信息,同時將書簽等其他相關信息清除. * * @return true, 清空成功. 清空失敗. */ public boolean deleteAllBooks(); /** * 更新書籍的信息. * * @param book Book對象 * @return true, 更新成功. false, 更新失敗. */ public boolean updateBook(Book book); /** * 查詢對應路徑名的書籍ID. * * @param filePath 書籍的完整路徑. * @return 書籍的ID. */ public int queryBook(String filePath); /** * 查詢所有書籍ID. * * @return 書籍ID的列表 */ public int[] queryBooksId(); /** * 查詢所有書籍完整路徑. * * @return 數據庫中的書籍路徑列表. */ public String[] queryBooksPath(); /** * 根據書籍的ID查詢書籍信息. * * @param book Book對象 * @return true, 查詢成功. false, 查詢失敗或沒有對應該書籍ID的信息. */ public boolean queryBook(Book book); /** * 添加書簽信息. * * @param bookmark 書簽對象 * @return true, 添加靄成功. false, 添加失敗. */ public boolean addBookmark(BookMarkInfo.Bookmark bookmark); /** * 刪除書簽信息. * * @param bookmark 書簽對象 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteBookmark(BookMarkInfo.Bookmark bookmark); /** * 更新書簽信息. * * @param bookmark 書簽對象 * @return true, 更新成功. false, 更新失敗. */ public boolean updateBookmark(BookMarkInfo.Bookmark bookmark); /** * 根據頁碼位置,刪除該書籍相應的書簽信息. * * @param book Book對象 * @param location 頁碼位置 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteBookmark(Book book, String location); /** * 根據相應的書籍ID, 刪除所有書籍信息. * * @param book Book對象 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteAllBookmark(Book book); /** * 根據頁碼位置,查詢書簽信息,并將信息更新到Book對象. * * @param book Book對象 * @param location 頁碼位置 * @return true, 該位置已存在書簽. false, 該位置不存在書簽. */ public boolean queryBookmark(Book book, String location); /** * 查詢對應書籍的所有書簽信息,并將信息更新到Book對象. * * @param book Book對象 * @return true, 查詢成功. false, 查詢失敗或該書籍沒有任何書簽. */ public boolean queryAllBookmarks(Book book); /** * 添加高亮對象. * * @param emphasis 高亮對象 * @return true, 添加成功. false, 添加失敗. */ public boolean addBookEmphasis(BookEmphasisInfo.BookEmphasis emphasis); /** * 根據頁碼位置,刪除該頁的所有高亮對象. * * @param book Book對象 * @param location 頁碼位置 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteBookEmphasis(Book book, String location); /** * 刪除單個高亮對象. * * @param emphasis 高亮對象 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteBookEmphasis(BookEmphasisInfo.BookEmphasis emphasis); /** * 更新對應的高亮對象信息. * * @param emphasis 高亮對象 * @return true, 更新成功. false, 更新失敗. */ public boolean updateBookEmphasis(BookEmphasisInfo.BookEmphasis emphasis); /** * 根據書籍ID,刪除所有對應該書籍的高亮對象. * * @param book Book對象 * @return true, 刪除成功. false, 刪除失敗. */ public boolean deleteAllBookEmphasis(Book book); /** * 根據頁位置,查詢該頁中的所有高亮對象,并將結果更新到書籍對象中. * * @param book Book對象 * @param location 頁位置 * @return true, 查詢成功. false, 查詢失敗或該頁位置無任何高亮對象. */ public boolean queryBookEmphasis(Book book, String location); /** * 根據書籍ID查詢該書所有的高亮對象,并更新至書籍對象中. * * @param book Book對象 * @return true, 查詢成功. false, 查詢失敗或該書籍無任何高亮信息. */ public boolean queryAllBookEmphasis(Book book); /** * 通過自定義的SQL語句進行數據庫操作,如插入、刪除和更新等操作. * * @param sql the sql */ public void executeSQL(String sql); /** * 獲取書籍信息的表名. * * @return 書籍信息的表名 */ public String getBookTableName(); /** * 獲取書簽信息的表名. * * @return the book mark table name */ public String getBookMarkTableName(); /** * 獲取高亮信息的表名. * * @return 獲取高亮信息的表名 */ public String getBookEmphasisTableName(); /** * 獲取數據庫名. * * @return 數據庫名 */ public String getDatabaseName(); }