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

fixed BookCollection.getBookByFile() method for fb2.zip files

This commit is contained in:
Nikolay Pultsin 2013-01-25 20:21:38 +04:00
parent 8fb04e6404
commit 9dc1bc52ca
4 changed files with 15 additions and 7 deletions

View file

@ -8,6 +8,6 @@
# project structure. # project structure.
java.encoding=utf-8 java.encoding=utf-8
proguard.config=proguard.cfg #proguard.config=proguard.cfg
# Project target. # Project target.
target=android-9 target=android-9

View file

@ -149,7 +149,6 @@ public class BookCollectionShadow extends AbstractBookCollection implements Serv
try { try {
return SerializerUtil.deserializeBook(myInterface.getRecentBook(index)); return SerializerUtil.deserializeBook(myInterface.getRecentBook(index));
} catch (RemoteException e) { } catch (RemoteException e) {
e.printStackTrace();
return null; return null;
} }
} }

View file

@ -69,6 +69,7 @@ public class Book {
final FormatPlugin plugin = getPlugin(file); final FormatPlugin plugin = getPlugin(file);
File = plugin.realBookFile(file); File = plugin.realBookFile(file);
readMetaInfo(plugin); readMetaInfo(plugin);
myIsSaved = false;
} }
public void reloadInfoFromFile() { public void reloadInfoFromFile() {
@ -79,7 +80,7 @@ public class Book {
} }
} }
private FormatPlugin getPlugin(ZLFile file) throws BookReadingException { private static FormatPlugin getPlugin(ZLFile file) throws BookReadingException {
final FormatPlugin plugin = PluginCollection.Instance().getPlugin(file); final FormatPlugin plugin = PluginCollection.Instance().getPlugin(file);
if (plugin == null) { if (plugin == null) {
throw new BookReadingException("pluginNotFound", file); throw new BookReadingException("pluginNotFound", file);

View file

@ -28,6 +28,7 @@ import org.geometerplus.zlibrary.text.view.ZLTextPosition;
import org.geometerplus.fbreader.Paths; import org.geometerplus.fbreader.Paths;
import org.geometerplus.fbreader.bookmodel.BookReadingException; import org.geometerplus.fbreader.bookmodel.BookReadingException;
import org.geometerplus.fbreader.formats.*;
public class BookCollection extends AbstractBookCollection { public class BookCollection extends AbstractBookCollection {
private final BooksDatabase myDatabase; private final BooksDatabase myDatabase;
@ -57,6 +58,15 @@ public class BookCollection extends AbstractBookCollection {
if (bookFile == null) { if (bookFile == null) {
return null; return null;
} }
final FormatPlugin plugin = PluginCollection.Instance().getPlugin(bookFile);
if (plugin == null) {
return null;
}
try {
bookFile = plugin.realBookFile(bookFile);
} catch (BookReadingException e) {
return null;
}
Book book = myBooksByFile.get(bookFile); Book book = myBooksByFile.get(bookFile);
if (book != null) { if (book != null) {
@ -92,7 +102,6 @@ public class BookCollection extends AbstractBookCollection {
} }
saveBook(book, false); saveBook(book, false);
addBook(book, false);
return book; return book;
} }
@ -158,8 +167,9 @@ public class BookCollection extends AbstractBookCollection {
return false; return false;
} }
final boolean result = book.save(myDatabase, force);
addBook(book, true); addBook(book, true);
return book.save(myDatabase, force); return result;
} }
public void removeBook(Book book, boolean deleteFromDisk) { public void removeBook(Book book, boolean deleteFromDisk) {
@ -289,7 +299,6 @@ public class BookCollection extends AbstractBookCollection {
final Book book = getBookByFile(file); final Book book = getBookByFile(file);
if (book != null) { if (book != null) {
saveBook(book, false); saveBook(book, false);
addBook(book, false);
} }
} }
myFilesToRescan.clear(); myFilesToRescan.clear();
@ -394,7 +403,6 @@ public class BookCollection extends AbstractBookCollection {
public void run() { public void run() {
for (Book book : newBooks) { for (Book book : newBooks) {
saveBook(book, false); saveBook(book, false);
addBook(book, false);
} }
} }
}); });