public void updateMetaUi() {
    Book book = mSpritzer.getBook();
    Metadata meta = book.getMetadata();
    Author author = meta.getAuthors().get(0);
    int curChapter = mSpritzer.getCurrentChapter();

    mAuthorView.setText(author.getFirstname() + " " + author.getLastname());
    mTitleView.setText(meta.getFirstTitle());
    String chapterText;
    if (book.getSpine().getResource(curChapter).getTitle() == null
        || book.getSpine().getResource(curChapter).getTitle().trim().compareTo("") == 0) {
      chapterText = String.format("Chapter %d", curChapter);
    } else {
      chapterText = book.getSpine().getResource(curChapter).getTitle();
    }

    int startSpan = chapterText.length();
    chapterText =
        String.format(
            "%s  %s m left",
            chapterText,
            (mSpritzer.getMinutesRemainingInQueue() == 0)
                ? "<1"
                : String.valueOf(mSpritzer.getMinutesRemainingInQueue()));
    int endSpan = chapterText.length();
    Spannable spanRange = new SpannableString(chapterText);
    TextAppearanceSpan tas = new TextAppearanceSpan(mChapterView.getContext(), R.style.MinutesToGo);
    spanRange.setSpan(tas, startSpan, endSpan, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    mChapterView.setText(spanRange);

    mProgress.setMax(mSpritzer.getMaxChapter());
    mProgress.setProgress(curChapter);
  }
  @Override
  public void storeBook(String fileName, Book book, boolean updateLastRead, boolean copyFile)
      throws IOException {

    File bookFile = new File(fileName);

    boolean hasBook = hasBook(bookFile.getName());

    if (hasBook && !updateLastRead) {
      return;
    } else if (hasBook) {
      helper.updateLastRead(bookFile.getName(), -1);
      return;
    }

    Metadata metaData = book.getMetadata();

    String authorFirstName = "Unknown author";
    String authorLastName = "";

    if (metaData.getAuthors().size() > 0) {
      authorFirstName = metaData.getAuthors().get(0).getFirstname();
      authorLastName = metaData.getAuthors().get(0).getLastname();
    }

    byte[] thumbNail = null;

    try {
      if (book.getCoverImage() != null && book.getCoverImage().getSize() < MAX_COVER_SIZE) {
        thumbNail = resizeImage(book.getCoverImage().getData());
        book.getCoverImage().close();
      }
    } catch (IOException io) {

    } catch (OutOfMemoryError err) {
      // If the image resource is too big, just import without a cover.
    }

    String description = "";

    if (!metaData.getDescriptions().isEmpty()) {
      description = metaData.getDescriptions().get(0);
    }

    String title = book.getTitle();

    if (title.trim().length() == 0) {
      title = fileName.substring(fileName.lastIndexOf('/') + 1);
    }

    if (copyFile) {
      bookFile = copyToLibrary(fileName, authorLastName + ", " + authorFirstName, title);
    }

    this.helper.storeNewBook(
        bookFile.getAbsolutePath(),
        authorFirstName,
        authorLastName,
        title,
        description,
        thumbNail,
        updateLastRead);
  }