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

float series book index

This commit is contained in:
Nikolay Pultsin 2011-03-20 03:57:55 +00:00
parent 76baa5f9e9
commit fdcd44597a
13 changed files with 44 additions and 28 deletions

View file

@ -21,8 +21,7 @@ package org.geometerplus.android.fbreader;
import java.io.File;
import java.text.DateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.*;
import android.app.Activity;
import android.content.Intent;
@ -216,7 +215,7 @@ public class BookInfoActivity extends Activity {
setupInfoPair(R.id.book_series, "series",
(series == null) ? null : series.Name);
setupInfoPair(R.id.book_series_index, "indexInSeries",
(series == null || series.Index <= 0) ? null : String.valueOf(series.Index));
(series == null || series.Index <= 0) ? null : String.format("%.1f", series.Index));
buffer.delete(0, buffer.length());
final HashSet<String> tagNames = new HashSet<String>();

View file

@ -61,7 +61,7 @@ public final class SQLiteBooksDatabase extends BooksDatabase {
private void migrate(Context context) {
final int version = myDatabase.getVersion();
final int currentVersion = 14;
final int currentVersion = 15;
if (version >= currentVersion) {
return;
}
@ -98,6 +98,8 @@ public final class SQLiteBooksDatabase extends BooksDatabase {
updateTables12();
case 13:
updateTables13();
case 14:
updateTables14();
}
myDatabase.setTransactionSuccessful();
myDatabase.endTransaction();
@ -240,7 +242,7 @@ public final class SQLiteBooksDatabase extends BooksDatabase {
if (book != null) {
String series = seriesById.get(cursor.getLong(1));
if (series != null) {
setSeriesInfo(book, series, cursor.getLong(2));
setSeriesInfo(book, series, cursor.getFloat(2));
}
}
}
@ -461,7 +463,7 @@ public final class SQLiteBooksDatabase extends BooksDatabase {
}
myInsertBookSeriesStatement.bindLong(1, bookId);
myInsertBookSeriesStatement.bindLong(2, seriesId);
myInsertBookSeriesStatement.bindLong(3, seriesInfo.Index);
myInsertBookSeriesStatement.bindDouble(3, seriesInfo.Index);
myInsertBookSeriesStatement.execute();
}
}
@ -1127,4 +1129,15 @@ public final class SQLiteBooksDatabase extends BooksDatabase {
"ALTER TABLE Bookmarks ADD COLUMN visible INTEGER DEFAULT 1"
);
}
private void updateTables14() {
myDatabase.execSQL("ALTER TABLE BookSeries RENAME TO BookSeries_Obsolete");
myDatabase.execSQL(
"CREATE TABLE BookSeries(" +
"series_id INTEGER NOT NULL REFERENCES Series(series_id)," +
"book_id INTEGER NOT NULL UNIQUE REFERENCES Books(book_id)," +
"book_index REAL)");
myDatabase.execSQL("INSERT INTO BookSeries (series_id,book_id,book_index) SELECT series_id,book_id,book_index FROM BookSeries_Obsolete");
myDatabase.execSQL("DROP TABLE BookSeries_Obsolete");
}
}

View file

@ -186,7 +186,7 @@ public class NetworkBookInfoActivity extends Activity implements NetworkView.Eve
findViewById(R.id.network_book_series_title).setVisibility(View.VISIBLE);
setPairValueText(R.id.network_book_series_title, myBook.SeriesTitle);
if (myBook.IndexInSeries > 0) {
setPairValueText(R.id.network_book_series_index, String.valueOf(myBook.IndexInSeries));
setPairValueText(R.id.network_book_series_index, String.format("%.1f", myBook.IndexInSeries));
findViewById(R.id.network_book_series_index).setVisibility(View.VISIBLE);
} else {
findViewById(R.id.network_book_series_index).setVisibility(View.GONE);

View file

@ -41,7 +41,7 @@ class OEBMetaInfoReader extends ZLXMLReaderAdapter implements XMLNamespaces {
private String myMetaTag = "meta";
private String mySeriesTitle = "";
private int mySeriesIndex = 0;
private float mySeriesIndex = 0;
private final ArrayList<String> myAuthorList = new ArrayList<String>();
private final ArrayList<String> myAuthorList2 = new ArrayList<String>();
@ -138,7 +138,7 @@ class OEBMetaInfoReader extends ZLXMLReaderAdapter implements XMLNamespaces {
} else if (attributes.getValue("name").equals("calibre:series_index")) {
final String strIndex = attributes.getValue("content");
try {
mySeriesIndex = Integer.parseInt(strIndex);
mySeriesIndex = Float.parseFloat(strIndex);
} catch (NumberFormatException e) {
}
}
@ -200,7 +200,7 @@ class OEBMetaInfoReader extends ZLXMLReaderAdapter implements XMLNamespaces {
}
} else {
if (tag.equals(myMetaTag)) {
if (!mySeriesTitle.equals("") && mySeriesIndex > 0) {
if (!"".equals(mySeriesTitle) && mySeriesIndex > 0) {
myBook.setSeriesInfo(mySeriesTitle, mySeriesIndex);
}
}

View file

@ -231,11 +231,11 @@ public class Book {
return mySeriesInfo;
}
void setSeriesInfoWithNoCheck(String name, long index) {
void setSeriesInfoWithNoCheck(String name, float index) {
mySeriesInfo = new SeriesInfo(name, index);
}
public void setSeriesInfo(String name, long index) {
public void setSeriesInfo(String name, float index) {
if (mySeriesInfo == null) {
if (name != null) {
mySeriesInfo = new SeriesInfo(name, index);
@ -244,7 +244,7 @@ public class Book {
} else if (name == null) {
mySeriesInfo = null;
myIsSaved = false;
} else if (!mySeriesInfo.Name.equals(name) || (mySeriesInfo.Index != index)) {
} else if (!name.equals(mySeriesInfo.Name) || mySeriesInfo.Index != index) {
mySeriesInfo = new SeriesInfo(name, index);
myIsSaved = false;
}

View file

@ -29,10 +29,10 @@ public final class BookInSeriesTree extends BookTree {
@Override
public int compareTo(FBTree tree) {
if (tree instanceof BookInSeriesTree) {
final long difference =
final float difference =
Book.getSeriesInfo().Index - ((BookTree)tree).Book.getSeriesInfo().Index;
if (difference != 0) {
return (int)difference;
return difference > 0 ? 1 : -1;
}
}
return super.compareTo(tree);

View file

@ -49,7 +49,7 @@ public abstract class BooksDatabase {
protected void addTag(Book book, Tag tag) {
book.addTagWithNoCheck(tag);
}
protected void setSeriesInfo(Book book, String series, long index) {
protected void setSeriesInfo(Book book, String series, float index) {
book.setSeriesInfoWithNoCheck(series, index);
}

View file

@ -21,9 +21,9 @@ package org.geometerplus.fbreader.library;
public final class SeriesInfo {
public final String Name;
public final long Index;
public final float Index;
public SeriesInfo(String name, long index) {
public SeriesInfo(String name, float index) {
Name = name;
Index = index;
}

View file

@ -75,7 +75,7 @@ public final class NetworkBookItem extends NetworkItem {
public final LinkedList<AuthorData> Authors;
public final LinkedList<String> Tags;
public final String SeriesTitle;
public final int IndexInSeries;
public final float IndexInSeries;
private final LinkedList<BookReference> myReferences;
@ -98,7 +98,7 @@ public final class NetworkBookItem extends NetworkItem {
*/
public NetworkBookItem(INetworkLink link, String id, int index,
String title, String summary, /*String language, String date,*/
List<AuthorData> authors, List<String> tags, String seriesTitle, int indexInSeries,
List<AuthorData> authors, List<String> tags, String seriesTitle, float indexInSeries,
String cover,
List<BookReference> references) {
super(link, title, summary, cover);

View file

@ -68,9 +68,9 @@ public final class NetworkBookItemComparator implements Comparator<NetworkItem>
if (comp != 0) {
return comp;
} else {
final int diff = book0.IndexInSeries - book1.IndexInSeries;
final float diff = book0.IndexInSeries - book1.IndexInSeries;
if (diff != 0) {
return diff;
return diff > 0 ? 1 : -1;
}
}
return book0.Title.compareTo(book1.Title);

View file

@ -135,11 +135,15 @@ class BySeriesCatalogItem extends SortedCatalogItem {
public int compare(NetworkItem item0, NetworkItem item1) {
final NetworkBookItem book0 = (NetworkBookItem)item0;
final NetworkBookItem book1 = (NetworkBookItem)item1;
int diff = book0.SeriesTitle.compareTo(book1.SeriesTitle);
if (diff == 0) {
diff = book0.IndexInSeries - book1.IndexInSeries;
final int diff = book0.SeriesTitle.compareTo(book1.SeriesTitle);
if (diff != 0) {
return diff;
}
return diff != 0 ? diff : book0.Title.compareTo(book1.Title);
final float fdiff = book0.IndexInSeries - book1.IndexInSeries;
if (fdiff != 0) {
return fdiff > 0 ? 1 : -1;
}
return book0.Title.compareTo(book1.Title);
}
};
}

View file

@ -28,7 +28,7 @@ class OPDSEntry extends ATOMEntry {
public DCDate DCIssued;
public String SeriesTitle;
public int SeriesIndex;
public float SeriesIndex;
@Override
public String toString() {

View file

@ -681,7 +681,7 @@ class OPDSXMLReader extends ZLXMLReaderAdapter {
if (tagPrefix == myCalibreNamespaceId && tag == CALIBRE_TAG_SERIES_INDEX) {
if (bufferContent != null) {
try {
myEntry.SeriesIndex = Integer.parseInt(bufferContent);
myEntry.SeriesIndex = Float.parseFloat(bufferContent);
} catch (NumberFormatException ex) {
}
}