mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-05 02:39: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;
|
return fileList;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void collectBooks() {
|
private void collectBooks(FileInfoSet fileInfos, Map<Long,Book> savedBooks) {
|
||||||
final List<ZLPhysicalFile> physicalFilesList = collectPhysicalFiles();
|
final List<ZLPhysicalFile> physicalFilesList = collectPhysicalFiles();
|
||||||
|
|
||||||
FileInfoSet fileInfos = new FileInfoSet();
|
|
||||||
|
|
||||||
final Map<Long,Book> savedBooks = BooksDatabase.Instance().loadBooks(fileInfos, true);
|
|
||||||
|
|
||||||
for (ZLPhysicalFile file : physicalFilesList) {
|
for (ZLPhysicalFile file : physicalFilesList) {
|
||||||
// TODO: better value for this flag
|
// TODO: better value for this flag
|
||||||
final boolean flag = !"epub".equals(file.getExtension());
|
final boolean flag = !"epub".equals(file.getExtension());
|
||||||
|
@ -266,9 +262,23 @@ public final class Library {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void build() {
|
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) {
|
for (Book book : myBooks) {
|
||||||
bookById.put(book.getId(), book);
|
bookById.put(book.getId(), book);
|
||||||
|
@ -289,39 +299,24 @@ public final class Library {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Tag> tags = book.tags();
|
if (doGroupTitlesByFirstLetter) {
|
||||||
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) {
|
|
||||||
final String letter = TitleTree.firstTitleLetter(book);
|
final String letter = TitleTree.firstTitleLetter(book);
|
||||||
if (letter != null) {
|
if (letter != null) {
|
||||||
final TitleTree tree =
|
final TitleTree tree =
|
||||||
getFirstLevelTree(ROOT_BY_TITLE).getTitleSubTree(letter);
|
getFirstLevelTree(ROOT_BY_TITLE).getTitleSubTree(letter);
|
||||||
tree.getBookSubTree(book, true);
|
tree.getBookSubTree(book, true);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
} else {
|
|
||||||
for (Book book : myBooks) {
|
|
||||||
getFirstLevelTree(ROOT_BY_TITLE).getBookSubTree(book, true);
|
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();
|
final BooksDatabase db = BooksDatabase.Instance();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue