/** * @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; }
@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(); } } }