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

Merge branch 'positions' of github.com:geometer/FBReaderJ into positions

This commit is contained in:
Nikolay Pultsin 2013-08-15 21:38:23 +01:00
commit 8cfe8fc76e
4 changed files with 46 additions and 15 deletions

View file

@ -1047,29 +1047,31 @@ final class SQLiteBooksDatabase extends BooksDatabase {
private SQLiteStatement myPositionStatement; private SQLiteStatement myPositionStatement;
@Override @Override
protected void savePosition(long bookId, long numerator, long denominator) { protected void savePosition(long bookId, RationalNumber progress) {
if (myPositionStatement == null) { if (myPositionStatement == null) {
myPositionStatement = myDatabase.compileStatement( myPositionStatement = myDatabase.compileStatement(
"INSERT OR REPLACE INTO Positions (book_id,numerator,denominator) VALUES (?,?,?)" "INSERT OR REPLACE INTO BookReadingProgress (book_id,numerator,denominator) VALUES (?,?,?)"
); );
} }
myStorePositionStatement.bindLong(1, bookId); myStorePositionStatement.bindLong(1, bookId);
myStorePositionStatement.bindLong(2, numerator); myStorePositionStatement.bindLong(2, progress.getNumerator());
myStorePositionStatement.bindLong(3, denominator); myStorePositionStatement.bindLong(3, progress.getDenominator());
myStorePositionStatement.execute(); myStorePositionStatement.execute();
} }
@Override @Override
protected float loadPosition(long bookId) { protected RationalNumber loadPosition(long bookId) {
float position = 0; RationalNumber progress;
Cursor cursor = myDatabase.rawQuery( Cursor cursor = myDatabase.rawQuery(
"SELECT numerator,denominator FROM Positions WHERE book_id = " + bookId, null "SELECT numerator,denominator FROM BookReadingProgress WHERE book_id = " + bookId, null
); );
if (cursor.moveToNext()) { if (cursor.moveToNext()) {
position = cursor.getLong(0)/cursor.getLong(1); progress = new RationalNumber(cursor.getLong(0), cursor.getLong(1));
} else {
progress = new RationalNumber(0, 1);
} }
cursor.close(); cursor.close();
return position; return progress;
} }
private void createTables() { private void createTables() {
@ -1472,7 +1474,7 @@ final class SQLiteBooksDatabase extends BooksDatabase {
private void updateTables25() { private void updateTables25() {
myDatabase.execSQL( myDatabase.execSQL(
"CREATE TABLE IF NOT EXISTS Positions(" + "CREATE TABLE IF NOT EXISTS BookReadingProgress(" +
"book_id INTEGER PRIMARY KEY NOT NULL UNIQUE REFERENCES Books(book_id)," + "book_id INTEGER PRIMARY KEY NOT NULL UNIQUE REFERENCES Books(book_id)," +
"numerator INTEGER NOT NULL," + "numerator INTEGER NOT NULL," +
"denominator INTEGER NOT NULL)"); "denominator INTEGER NOT NULL)");

View file

@ -56,6 +56,8 @@ public class Book extends TitledEntity {
private static final WeakReference<ZLImage> NULL_IMAGE = new WeakReference<ZLImage>(null); private static final WeakReference<ZLImage> NULL_IMAGE = new WeakReference<ZLImage>(null);
private WeakReference<ZLImage> myCover; private WeakReference<ZLImage> myCover;
private RationalNumber myProgress;
Book(long id, ZLFile file, String title, String encoding, String language) { Book(long id, ZLFile file, String title, String encoding, String language) {
super(title); super(title);
myId = id; myId = id;
@ -541,4 +543,12 @@ public class Book extends TitledEntity {
.append("]") .append("]")
.toString(); .toString();
} }
public void setProgress(long numerator, long denominator) {
myProgress = new RationalNumber(numerator, denominator);
}
public RationalNumber getProgress() {
return myProgress;
}
} }

View file

@ -123,6 +123,6 @@ 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 void savePosition(long bookId, RationalNumber progress);
protected abstract float loadPosition(long bookId); protected abstract RationalNumber loadPosition(long bookId);
} }

View file

@ -0,0 +1,19 @@
package org.geometerplus.fbreader.book;
public class RationalNumber {
private long myNumerator;
private long myDenominator;
public RationalNumber(long numerator, long denominator) {
myNumerator = numerator;
myDenominator = denominator;
}
public long getNumerator() {
return myNumerator;
}
public long getDenominator() {
return myDenominator;
}
}