Ejemplo n.º 1
0
  /**
   * @param fileNames - PDF files to import
   * @return true if the import succeeded, false otherwise
   */
  private List<BibEntry> importPdfFilesInternal(List<String> fileNames) {
    if (panel == null) {
      return Collections.emptyList();
    }
    ImportDialog importDialog = null;
    boolean doNotShowAgain = false;
    boolean neverShow = Globals.prefs.getBoolean(JabRefPreferences.IMPORT_ALWAYSUSE);
    int globalChoice = Globals.prefs.getInt(JabRefPreferences.IMPORT_DEFAULT_PDF_IMPORT_STYLE);

    List<BibEntry> res = new ArrayList<>();

    for (String fileName : fileNames) {
      if (!neverShow && !doNotShowAgain) {
        importDialog = new ImportDialog(dropRow >= 0, fileName);
        if (!XMPUtil.hasMetadata(Paths.get(fileName), Globals.prefs.getXMPPreferences())) {
          importDialog.disableXMPChoice();
        }
        importDialog.setLocationRelativeTo(frame);
        importDialog.showDialog();
        doNotShowAgain = importDialog.isDoNotShowAgain();
      }
      if (neverShow || (importDialog.getResult() == JOptionPane.OK_OPTION)) {
        int choice = neverShow ? globalChoice : importDialog.getChoice();
        switch (choice) {
          case ImportDialog.XMP:
            doXMPImport(fileName, res);
            break;

          case ImportDialog.CONTENT:
            doContentImport(fileName, res);
            break;
          case ImportDialog.NOMETA:
            createNewBlankEntry(fileName).ifPresent(res::add);
            break;
          case ImportDialog.ONLYATTACH:
            DroppedFileHandler dfh = new DroppedFileHandler(frame, panel);
            dfh.linkPdfToEntry(fileName, entryTable, dropRow);
            break;
          default:
            break;
        }
      }
    }
    return res;
  }
Ejemplo n.º 2
0
    @Override
    public void run() {
      if (files.isEmpty()) {
        message = Localization.lang("No PDF linked") + ".\n";
      } else {
        int written = 0;
        int error = 0;
        for (File file : files) {
          if (!file.exists()) {
            if (files.size() == 1) {
              message = Localization.lang("PDF does not exist");
            }
            error++;

          } else {
            try {
              XMPUtil.writeXMP(file, entry, panel.getDatabase(), Globals.prefs.getXMPPreferences());
              if (files.size() == 1) {
                message = Localization.lang("Wrote XMP-metadata");
              }
              written++;
            } catch (IOException | TransformerException e) {
              if (files.size() == 1) {
                message = Localization.lang("Error while writing") + " '" + file.getPath() + "'";
              }
              error++;
            }
          }
        }
        if (files.size() > 1) {
          StringBuilder sb = new StringBuilder();
          sb.append(
              Localization.lang(
                  "Finished writing XMP-metadata. Wrote to %0 file(s).", String.valueOf(written)));
          if (error > 0) {
            sb.append(' ')
                .append(Localization.lang("Error writing to %0 file(s).", String.valueOf(error)));
          }
          message = sb.toString();
        }
      }
    }