private void addBook(Book book, boolean force) { if (book == null || book.getId() == -1) { return; } synchronized (myBooksByFile) { final Book existing = myBooksByFile.get(book.File); if (existing == null) { myBooksByFile.put(book.File, book); myBooksById.put(book.getId(), book); fireBookEvent(BookEvent.Added, book); } else if (force) { existing.updateFrom(book); fireBookEvent(BookEvent.Updated, existing); } } }