1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-04 02:09:35 +02:00

BookmarksActivity optimization

This commit is contained in:
Nikolay Pultsin 2013-03-06 07:33:02 +04:00
parent 31247e39bf
commit 19aeb9c9b6
8 changed files with 95 additions and 24 deletions

View file

@ -735,10 +735,10 @@ final class SQLiteBooksDatabase extends BooksDatabase {
}
@Override
protected List<Bookmark> loadBookmarks(long bookId, boolean visible) {
protected List<Bookmark> loadInvisibleBookmarks(long bookId) {
LinkedList<Bookmark> list = new LinkedList<Bookmark>();
Cursor cursor = myDatabase.rawQuery(
"SELECT Bookmarks.bookmark_id,Bookmarks.book_id,Books.title,Bookmarks.bookmark_text,Bookmarks.creation_time,Bookmarks.modification_time,Bookmarks.access_time,Bookmarks.access_counter,Bookmarks.model_id,Bookmarks.paragraph,Bookmarks.word,Bookmarks.char FROM Bookmarks INNER JOIN Books ON Books.book_id = Bookmarks.book_id WHERE Bookmarks.book_id = ? AND Bookmarks.visible = ?", new String[] { "" + bookId, visible ? "1" : "0" }
"SELECT bm.bookmark_id,bm.book_id,b.title,bm.bookmark_text,bm.creation_time,bm.modification_time,bm.access_time,bm.access_counter,bm.model_id,bm.paragraph,bm.word,bm.char FROM Bookmarks AS bm INNER JOIN Books AS b ON b.book_id = bm.book_id WHERE bm.book_id = ? AND bm.visible = 0", new String[] { String.valueOf(bookId) }
);
while (cursor.moveToNext()) {
list.add(createBookmark(
@ -754,7 +754,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
(int)cursor.getLong(9),
(int)cursor.getLong(10),
(int)cursor.getLong(11),
visible
false
));
}
cursor.close();
@ -764,7 +764,6 @@ final class SQLiteBooksDatabase extends BooksDatabase {
@Override
protected List<Bookmark> loadVisibleBookmarks(long fromId, int limitCount) {
LinkedList<Bookmark> list = new LinkedList<Bookmark>();
myDatabase.execSQL("DELETE FROM Bookmarks WHERE book_id = -1");
Cursor cursor = myDatabase.rawQuery("SELECT" +
" bm.bookmark_id,bm.book_id,b.title,bm.bookmark_text," +
"bm.creation_time,bm.modification_time,bm.access_time,bm.access_counter," +
@ -794,6 +793,40 @@ final class SQLiteBooksDatabase extends BooksDatabase {
return list;
}
@Override
protected List<Bookmark> loadVisibleBookmarks(long bookId, long fromId, int limitCount) {
LinkedList<Bookmark> list = new LinkedList<Bookmark>();
Cursor cursor = myDatabase.rawQuery("SELECT" +
" bm.bookmark_id,bm.book_id,b.title,bm.bookmark_text," +
"bm.creation_time,bm.modification_time,bm.access_time,bm.access_counter," +
"bm.model_id,bm.paragraph,bm.word,bm.char" +
" FROM Bookmarks AS bm INNER JOIN Books AS b ON b.book_id = bm.book_id" +
" WHERE b.book_id = ? AND bm.bookmark_id >= ? AND bm.visible = 1" +
" ORDER BY bm.bookmark_id LIMIT ?",
new String[] { String.valueOf(bookId), String.valueOf(fromId), String.valueOf(limitCount) }
);
while (cursor.moveToNext()) {
list.add(createBookmark(
cursor.getLong(0),
cursor.getLong(1),
cursor.getString(2),
cursor.getString(3),
SQLiteUtil.getDate(cursor, 4),
SQLiteUtil.getDate(cursor, 5),
SQLiteUtil.getDate(cursor, 6),
(int)cursor.getLong(7),
cursor.getString(8),
(int)cursor.getLong(9),
(int)cursor.getLong(10),
(int)cursor.getLong(11),
true
));
}
cursor.close();
return list;
}
private SQLiteStatement myInsertBookmarkStatement;
private SQLiteStatement myUpdateBookmarkStatement;
@Override