mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-04 18:29:23 +02:00
library refactoring: one cycle through collected books
This commit is contained in:
parent
6f864809a5
commit
35ef743d40
1 changed files with 27 additions and 32 deletions
|
@ -204,13 +204,9 @@ public final class Library {
|
|||
return fileList;
|
||||
}
|
||||
|
||||
private void collectBooks() {
|
||||
private void collectBooks(FileInfoSet fileInfos, Map<Long,Book> savedBooks) {
|
||||
final List<ZLPhysicalFile> physicalFilesList = collectPhysicalFiles();
|
||||
|
||||
FileInfoSet fileInfos = new FileInfoSet();
|
||||
|
||||
final Map<Long,Book> savedBooks = BooksDatabase.Instance().loadBooks(fileInfos, true);
|
||||
|
||||
for (ZLPhysicalFile file : physicalFilesList) {
|
||||
// TODO: better value for this flag
|
||||
final boolean flag = !"epub".equals(file.getExtension());
|
||||
|
@ -266,9 +262,23 @@ public final class Library {
|
|||
}
|
||||
|
||||
private void build() {
|
||||
final HashMap<Long,Book> bookById = new HashMap<Long,Book>();
|
||||
final FileInfoSet fileInfos = new FileInfoSet();
|
||||
final Map<Long,Book> savedBooks = BooksDatabase.Instance().loadBooks(fileInfos, true);
|
||||
boolean doGroupTitlesByFirstLetter = false;
|
||||
if (savedBooks.size() > 10) {
|
||||
final HashSet<String> letterSet = new HashSet<String>();
|
||||
for (Book book : savedBooks.values()) {
|
||||
final String letter = TitleTree.firstTitleLetter(book);
|
||||
if (letter != null) {
|
||||
letterSet.add(letter);
|
||||
}
|
||||
}
|
||||
doGroupTitlesByFirstLetter = savedBooks.values().size() > letterSet.size() * 5 / 4;
|
||||
}
|
||||
|
||||
collectBooks();
|
||||
collectBooks(fileInfos, savedBooks);
|
||||
|
||||
final Map<Long,Book> bookById = new HashMap<Long,Book>();
|
||||
|
||||
for (Book book : myBooks) {
|
||||
bookById.put(book.getId(), book);
|
||||
|
@ -289,39 +299,24 @@ public final class Library {
|
|||
}
|
||||
}
|
||||
|
||||
List<Tag> tags = book.tags();
|
||||
if (tags.isEmpty()) {
|
||||
tags = (List<Tag>)myNullList;
|
||||
}
|
||||
for (Tag t : tags) {
|
||||
getTagTree(t).getBookSubTree(book, true);
|
||||
}
|
||||
}
|
||||
|
||||
boolean doGroupTitlesByFirstLetter = false;
|
||||
if (myBooks.size() > 10) {
|
||||
final HashSet<String> letterSet = new HashSet<String>();
|
||||
for (Book book : myBooks) {
|
||||
final String letter = TitleTree.firstTitleLetter(book);
|
||||
if (letter != null) {
|
||||
letterSet.add(letter);
|
||||
}
|
||||
}
|
||||
doGroupTitlesByFirstLetter = myBooks.size() > letterSet.size() * 5 / 4;
|
||||
}
|
||||
if (doGroupTitlesByFirstLetter) {
|
||||
for (Book book : myBooks) {
|
||||
if (doGroupTitlesByFirstLetter) {
|
||||
final String letter = TitleTree.firstTitleLetter(book);
|
||||
if (letter != null) {
|
||||
final TitleTree tree =
|
||||
getFirstLevelTree(ROOT_BY_TITLE).getTitleSubTree(letter);
|
||||
tree.getBookSubTree(book, true);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (Book book : myBooks) {
|
||||
} else {
|
||||
getFirstLevelTree(ROOT_BY_TITLE).getBookSubTree(book, true);
|
||||
}
|
||||
|
||||
List<Tag> tags = book.tags();
|
||||
if (tags.isEmpty()) {
|
||||
tags = (List<Tag>)myNullList;
|
||||
}
|
||||
for (Tag t : tags) {
|
||||
getTagTree(t).getBookSubTree(book, true);
|
||||
}
|
||||
}
|
||||
|
||||
final BooksDatabase db = BooksDatabase.Instance();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue