1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-03 17:59:33 +02:00

Save and load book positionto/from db

This commit is contained in:
lidoxod 2013-08-15 23:50:46 +04:00
parent c722ec61ef
commit 9c1e06cfea
2 changed files with 40 additions and 1 deletions

View file

@ -78,7 +78,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
private void migrate() { private void migrate() {
final int version = myDatabase.getVersion(); final int version = myDatabase.getVersion();
final int currentVersion = 25; final int currentVersion = 26;
if (version >= currentVersion) { if (version >= currentVersion) {
return; return;
} }
@ -136,6 +136,8 @@ final class SQLiteBooksDatabase extends BooksDatabase {
updateTables23(); updateTables23();
case 24: case 24:
updateTables24(); updateTables24();
case 25:
updateTables25();
} }
myDatabase.setTransactionSuccessful(); myDatabase.setTransactionSuccessful();
myDatabase.setVersion(currentVersion); myDatabase.setVersion(currentVersion);
@ -1042,7 +1044,33 @@ final class SQLiteBooksDatabase extends BooksDatabase {
cursor.close(); cursor.close();
return links; return links;
} }
private SQLiteStatement myPositionStatement;
@Override
protected void savePosition(long bookId, long numerator, long denominator) {
if (myPositionStatement == null) {
myPositionStatement = myDatabase.compileStatement(
"INSERT OR REPLACE INTO Positions (book_id,numerator,denominator) VALUES (?,?,?)"
);
}
myStorePositionStatement.bindLong(1, bookId);
myStorePositionStatement.bindLong(2, numerator);
myStorePositionStatement.bindLong(3, denominator);
myStorePositionStatement.execute();
}
@Override
protected float loadPosition(long bookId) {
float position = 0;
Cursor cursor = myDatabase.rawQuery(
"SELECT numerator,denominator FROM Positions WHERE book_id = " + bookId, null
);
if (cursor.moveToNext()) {
position = cursor.getLong(0)/cursor.getLong(1);
}
cursor.close();
return position;
}
private void createTables() { private void createTables() {
myDatabase.execSQL( myDatabase.execSQL(
@ -1441,4 +1469,12 @@ final class SQLiteBooksDatabase extends BooksDatabase {
myDatabase.execSQL("INSERT OR REPLACE INTO HighlightingStyle (style_id, name, bg_color) VALUES (2, '', 245*256*256 + 121*256 + 0)"); // #f57900 myDatabase.execSQL("INSERT OR REPLACE INTO HighlightingStyle (style_id, name, bg_color) VALUES (2, '', 245*256*256 + 121*256 + 0)"); // #f57900
myDatabase.execSQL("INSERT OR REPLACE INTO HighlightingStyle (style_id, name, bg_color) VALUES (3, '', 114*256*256 + 159*256 + 207)"); // #729fcf myDatabase.execSQL("INSERT OR REPLACE INTO HighlightingStyle (style_id, name, bg_color) VALUES (3, '', 114*256*256 + 159*256 + 207)"); // #729fcf
} }
private void updateTables25() {
myDatabase.execSQL(
"CREATE TABLE IF NOT EXISTS Positions(" +
"book_id INTEGER PRIMARY KEY NOT NULL UNIQUE REFERENCES Books(book_id)," +
"numerator INTEGER," +
"denominator INTEGER NOT NULL)");
}
} }

View file

@ -122,4 +122,7 @@ public abstract class BooksDatabase {
protected abstract Collection<String> loadVisitedHyperlinks(long bookId); protected abstract Collection<String> loadVisitedHyperlinks(long bookId);
protected abstract void addVisitedHyperlink(long bookId, String hyperlinkId); protected abstract void addVisitedHyperlink(long bookId, String hyperlinkId);
protected abstract void savePosition(long bookId, long numerator, long denominator);
protected abstract float loadPosition(long bookId);
} }