package com.dotcool.bll;
/**
* 对数据库的具体操作,如:返回数据集、添加、删除...
*/
import java.util.ArrayList;
import com.dotcool.model.Book;
import com.dotcool.model.BookMark;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
public class DbDataOperation
{
/**
* 得到书籍的详细信息
* @param resolver
* @return 返回添加了数据的book对象
*/
public static ArrayList<Book> getBookInfo(ContentResolver resolver)
{
ArrayList<Book> bookList = new ArrayList<Book>();
Book book;
Cursor cursor = resolver.query(Uri.parse(DbTags.URI_TABLE_BOOK_INFO), null, null, null, null);
while(cursor.moveToNext())
{
book = new Book();
book.setBookId(Integer.parseInt(getFieldContent(cursor, DbTags.FIELD_BOOK_ID)));
book.setBookName(getFieldContent(cursor, DbTags.FIELD_BOOK_NAME));
book.setBookAuthor(getFieldContent(cursor, DbTags.FIELD_BOOK_AUTHOR));
book.setBookPath(getFieldContent(cursor, DbTags.FIELD_BOOK_PATH));
book.setBookAddTime(getFieldContent(cursor, DbTags.FIELD_BOOK_ADD_TIME));
book.setBookOpenTime(getFieldContent(cursor, DbTags.FIELD_BOOK_OPEN_TIME));
book.setBookCategoryId(Integer.parseInt(getFieldContent(cursor, DbTags.FIELD_BOOK_CATEGORY_ID)));
book.setBookCategroyName(getFieldContent(cursor, DbTags.FIELD_BOOK_CATEGORY_NAME));
book.setBookSize(getFieldContent(cursor, DbTags.FIELD_BOOK_SIZE));
book.setBookProgress(getFieldContent(cursor, DbTags.FIELD_BOOK_PROGRESS));
book.setBookBeginPosition(Integer.parseInt(getFieldContent(cursor, DbTags.FIELD_BOOK_BEGIN_POSITION)));
bookList.add(book);
}
cursor.close();
return bookList;
}
/**
* 得到书签的详细信息
* @param resolver
* @return 返回添加了数据的bookmark对象列表
*/
public static ArrayList<BookMark> getBookMark(ContentResolver resolver)
{
ArrayList<BookMark> bookMarkList = new ArrayList<BookMark>();
BookMark bookMark;
Cursor cursor = resolver.query(Uri.parse(DbTags.URI_TABLE_BOOK_MARK), null, null, null, null);
while(cursor.moveToNext())
{
bookMark = new BookMark();
bookMark.setBookMarkId(Integer.parseInt(getFieldContent(cursor, DbTags.FIELD_BOOK_MARK_ID)));
bookMark.setBookId(Integer.parseInt(getFieldContent(cursor, DbTags.FIELD_BOOK_ID)));
bookMark.setBookName(getFieldContent(cursor, DbTags.FIELD_BOOK_NAME));
bookMark.setBookPath(getFieldContent(cursor, DbTags.FIELD_BOOK_PATH));
bookMark.setBookMarkAddTime(getFieldContent(cursor, DbTags.FIELD_BOOK_MARK_ADD_TIME));
bookMark.setBookMarkProgress(getFieldContent(cursor, DbTags.FIELD_BOOK_MARK_PROGRESS));
bookMark.setBookMarkBeginPosition(Integer.parseInt(getFieldContent(cursor, DbTags.FIELD_BOOK_MARK_BEGIN_POSITION)));
bookMark.setBookMarkDetail(getFieldContent(cursor, DbTags.FIELD_BOOK_MARK_DETAIL));
bookMarkList.add(bookMark);
}
cursor.close();
return bookMarkList;
}
/**
* 将书籍信息添加到书籍信息表
* @param resolver
* @param bookId 书籍ID
* @param bookName书籍名
* @param bookAuthor 书籍作者
* @param BookPath 书籍存放路径
* @param bookAddTime 书籍加入书架时间
* @param bookOpenTime 书籍最近一次打开时间
* @param bookCategoryId 书籍所属类别ID
* @param bookCategoryName 书籍所属类别名
* @param bookSize 书籍大小
* @param bookProgress 书籍最近一次阅读进度
*/
public static void insertToBookInfo(ContentResolver resolver,String bookName,String bookAuthor,String bookPath,String bookAddTime,
String bookOpenTime,int bookCategoryId,String bookCategoryName,String bookSize,String bookProgress)
{
ContentValues values = new ContentValues();
values.put(DbTags.FIELD_BOOK_NAME, bookName);
values.put(DbTags.FIELD_BOOK_AUTHOR, bookAuthor);
values.put(DbTags.FIELD_BOOK_PATH, bookPath);
values.put(DbTags.FIELD_BOOK_ADD_TIME, bookAddTime);
values.put(DbTags.FIELD_BOOK_OPEN_TIME, bookOpenTime);
values.put(DbTags.FIELD_BOOK_CATEGORY_ID, bookCategoryId);
values.put(DbTags.FIELD_BOOK_CATEGORY_NAME, bookCategoryName);
values.put(DbTags.FIELD_BOOK_SIZE, bookSize);
values.put(DbTags.FIELD_BOOK_PROGRESS, bookProgress);
resolver.insert(Uri.parse(DbTags.URI_TABLE_BOOK_INFO), values);
}
public static void updateValuesToTable(ContentResolver contentResolver,Uri uri,ContentValues values,String where,String[] selectionArgs)
{
contentResolver.update(uri, values, where, selectionArgs);
}
/**
* 根据表中字段名获得该字段的内容
* @param cursor 数据库游标
* @param fieldName 字段名
* @return 返回字段内容
*/
public static String getFieldContent(Cursor cursor,String fieldName)
{
return cursor.getString(cursor.getColumnIndex(fieldName));
}
public static void deleteBook(ContentResolver resolver,int bookId)
{
resolver.delete(Uri.parse(DbTags.URI_TABLE_BOOK_INFO), DbTags.FIELD_BOOK_ID+"=?", new String[]{bookId+""});
}
}