/** The URL for the cached index file for this installer */
 protected URI getCachedIndexFile() throws InstallException {
   try {
     URI scratchdir =
         CWProject.instance()
             .getWriteableProjectSubdir(getTempFileExtension(host, catalogDirectory), true);
     return NetUtil.lengthenURI(scratchdir, FILE_LIST_GZ);
   } catch (IOException ex) {
     throw new InstallException(JSOtherMsg.lookupText("URL manipulation failed"), ex);
   }
 }
  private URI getIndexStorageArea(Book book) throws IOException {
    BookMetaData bmd = book.getBookMetaData();
    String driverName = bmd.getDriverName();
    String bookName = bmd.getInitials();

    assert driverName != null;
    assert bookName != null;

    URI base = CWProject.instance().getWriteableProjectSubdir(DIR_LUCENE, false);
    URI driver = NetUtil.lengthenURI(base, driverName);

    return NetUtil.lengthenURI(driver, bookName);
  }