From 2c1274ff5fd839a1047d94c211e8b97f3b707329 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:10:31 +0200 Subject: [PATCH 01/16] Refine JavaDoc for PdfMergeMetadataImporter --- .../fileformat/PdfMergeMetadataImporter.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java index 1f1ab2ebb9e..8c724ea5d41 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java @@ -30,18 +30,22 @@ import org.slf4j.LoggerFactory; /** - * PdfEmbeddedBibFileImporter imports an embedded Bib-File from the PDF. + * Tries to import BibTeX data trying multiple PDF content importers and merging the results. + * See {@Link org.jabref.logic.importer.fileformat.PdfMergeMetadataImporter#metadataImporters} for the list of importers used. + * + * After all importers are applied, this importer tries to fetch additional metadata for the entry using the DOI and ISBN. */ public class PdfMergeMetadataImporter extends Importer { private static final Logger LOGGER = LoggerFactory.getLogger(PdfMergeMetadataImporter.class); - private final List metadataImporters; private final ImportFormatPreferences importFormatPreferences; + private final List metadataImporters; public PdfMergeMetadataImporter(ImportFormatPreferences importFormatPreferences) { this.importFormatPreferences = importFormatPreferences; - this.metadataImporters = new ArrayList<>(); + + this.metadataImporters = new ArrayList<>(5); this.metadataImporters.add(new PdfVerbatimBibTextImporter(importFormatPreferences)); this.metadataImporters.add(new PdfEmbeddedBibFileImporter(importFormatPreferences)); if (importFormatPreferences.grobidPreferences().isGrobidEnabled()) { @@ -59,14 +63,14 @@ public boolean isRecognizedFormat(BufferedReader input) throws IOException { @Override public ParserResult importDatabase(BufferedReader reader) throws IOException { Objects.requireNonNull(reader); - throw new UnsupportedOperationException("PdfMergeMetadataImporter does not support importDatabase(BufferedReader reader)." + throw new UnsupportedOperationException("PdfMergeMetadataImporter does not support importDatabase(BufferedReader reader). " + "Instead use importDatabase(Path filePath, Charset defaultEncoding)."); } @Override public ParserResult importDatabase(String data) throws IOException { Objects.requireNonNull(data); - throw new UnsupportedOperationException("PdfMergeMetadataImporter does not support importDatabase(String data)." + throw new UnsupportedOperationException("PdfMergeMetadataImporter does not support importDatabase(String data). " + "Instead use importDatabase(Path filePath, Charset defaultEncoding)."); } @@ -84,7 +88,7 @@ public ParserResult importDatabase(Path filePath) throws IOException { if (candidates.isEmpty()) { return new ParserResult(); } - List fetchedCandidates = new ArrayList<>(); + List fetchedCandidates = new ArrayList<>(2); for (BibEntry candidate : candidates) { if (candidate.hasField(StandardField.DOI)) { try { From ab6ceda62ddaaa3c731b9ad095100aabff0cfbb3 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:17:20 +0200 Subject: [PATCH 02/16] Cosmetic improvement --- .../java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java index 2864c26872d..84afc0585ec 100644 --- a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java +++ b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java @@ -40,8 +40,8 @@ */ public class FetchAndMergeEntry { - // A list of all field which are supported public static List SUPPORTED_FIELDS = Arrays.asList(StandardField.DOI, StandardField.EPRINT, StandardField.ISBN); + private static final Logger LOGGER = LoggerFactory.getLogger(FetchAndMergeEntry.class); private final DialogService dialogService; private final UndoManager undoManager; From 96491c8dd7d7e67091da3f10583735463f552be4 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:26:42 +0200 Subject: [PATCH 03/16] Add some comment --- src/main/java/org/jabref/logic/importer/WebFetchers.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/WebFetchers.java b/src/main/java/org/jabref/logic/importer/WebFetchers.java index 88c4eee62b7..52fb01336cb 100644 --- a/src/main/java/org/jabref/logic/importer/WebFetchers.java +++ b/src/main/java/org/jabref/logic/importer/WebFetchers.java @@ -160,9 +160,6 @@ public static SortedSet getIdBasedFetchers(ImportFormatPreferenc return set; } - /** - * @return sorted set containing entry based fetchers - */ public static SortedSet getEntryBasedFetchers(ImporterPreferences importerPreferences, ImportFormatPreferences importFormatPreferences, FilePreferences filePreferences, @@ -178,9 +175,13 @@ public static SortedSet getEntryBasedFetchers(ImporterPrefere set.add(new MathSciNet(importFormatPreferences)); set.add(new CrossRef()); set.add(new ZbMATH(importFormatPreferences)); - set.add(new PdfMergeMetadataImporter.EntryBasedFetcherWrapper(importFormatPreferences, filePreferences, databaseContext)); set.add(new SemanticScholar(importerPreferences)); set.add(new ResearchGate(importFormatPreferences)); + + // Uses the PDFs - adn then uses the parsed Dpi. Makes it 10% a web fetcher. + // We list it here, because otherwise, it would be much more effort (other UI button, ...) + set.add(new PdfMergeMetadataImporter.EntryBasedFetcherWrapper(importFormatPreferences, filePreferences, databaseContext)); + return set; } From 7b60ddc6a11db732837309a2a2739b5968d599fc Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:26:57 +0200 Subject: [PATCH 04/16] Fix casing of "PDF" --- .../java/org/jabref/logic/pdf/search/IndexingTaskManager.java | 2 +- src/main/resources/l10n/JabRef_en.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/logic/pdf/search/IndexingTaskManager.java b/src/main/java/org/jabref/logic/pdf/search/IndexingTaskManager.java index 5380b000ad6..c1f1430f39c 100644 --- a/src/main/java/org/jabref/logic/pdf/search/IndexingTaskManager.java +++ b/src/main/java/org/jabref/logic/pdf/search/IndexingTaskManager.java @@ -34,7 +34,7 @@ public IndexingTaskManager(TaskExecutor taskExecutor) { willBeRecoveredAutomatically(true); // runs on fx thread, no need to wrap this.updateProgress(1, 1); - this.titleProperty().set(Localization.lang("Indexing pdf files")); + this.titleProperty().set(Localization.lang("Indexing PDF files")); } @Override diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 70999556ae2..3776cc4c6a7 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -457,7 +457,7 @@ Include\ subgroups\:\ When\ selected,\ view\ entries\ contained\ in\ this\ group Independent\ group\:\ When\ selected,\ view\ only\ this\ group's\ entries=Independent group: When selected, view only this group's entries I\ Agree=I Agree -Indexing\ pdf\ files=Indexing pdf files +Indexing\ PDF\ files=Indexing PDF files Indexing\ for\ %0=Indexing for %0 %0\ of\ %1\ linked\ files\ added\ to\ the\ index=%0 of %1 linked files added to the index From 816431394f8de03255db6941dd5ada023513424f Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:27:07 +0200 Subject: [PATCH 05/16] Reorder PDF strrings --- src/main/resources/l10n/JabRef_en.properties | 37 ++++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 3776cc4c6a7..33d0df76f09 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -267,8 +267,6 @@ Do\ not\ open\ any\ files\ at\ startup=Do not open any files at startup Do\ not\ wrap\ when\ saving=Do not wrap when saving -Do\ not\ write\ the\ following\ fields\ to\ XMP\ Metadata=Do not write the following fields to XMP Metadata - Donate\ to\ JabRef=Donate to JabRef Download\ file=Download file @@ -335,6 +333,24 @@ Processing\ PDF(s)=Processing PDF(s) Processing\ a\ large\ number\ of\ files=Processing a large number of files You\ are\ about\ to\ process\ %0\ files.\ Continue?=You are about to process %0 files. Continue? +Will\ write\ metadata\ to\ the\ PDFs\ linked\ from\ selected\ entries.=Will write metadata to the PDFs linked from selected entries. + +Write\ metadata\ for\ all\ PDFs\ in\ current\ library?=Write metadata for all PDFs in current library? +Writing\ metadata...=Writing metadata... + +Embed\ BibTeX\ as\ attached\ file\ in\ PDF.=Embed BibTeX as attached file in PDF. +Write\ BibTeX\ as\ XMP\ metadata\ to\ PDF.=Write BibTeX as XMP metadata to PDF. +Write\ BibTeX\ to\ PDF\ (XMP\ and\ embedded)=Write BibTeX to PDF (XMP and embedded) +Write\ metadata\ to\ PDF\ files=Write metadata to PDF files +XMP-annotated\ PDF=XMP-annotated PDF +XMP\ export\ privacy\ settings=XMP export privacy settings +XMP\ metadata=XMP metadata +Do\ not\ write\ the\ following\ fields\ to\ XMP\ Metadata=Do not write the following fields to XMP Metadata + +Could\ not\ extract\ Metadata\ from\:\ %0=Could not extract Metadata from: %0 +Parse\ Metadata\ from\ PDF.=Parse Metadata from PDF. +Merge\ PDF\ metadata=Merge PDF metadata + Exporting\ %0=Exporting %0 Could\ not\ export\ file\ '%0'\ (reason\:\ %1)=Could not export file '%0' (reason: %1) Unknown\ export\ format\ %0=Unknown export format %0 @@ -958,22 +974,8 @@ web\ link=web link What\ do\ you\ want\ to\ do?=What do you want to do? Whatever\ option\ you\ choose,\ Mr.\ DLib\ may\ share\ its\ data\ with\ research\ partners\ to\ further\ improve\ recommendation\ quality\ as\ part\ of\ a\ 'living\ lab'.\ Mr.\ DLib\ may\ also\ release\ public\ datasets\ that\ may\ contain\ anonymized\ information\ about\ you\ and\ the\ recommendations\ (sensitive\ information\ such\ as\ metadata\ of\ your\ articles\ will\ be\ anonymised\ through\ e.g.\ hashing).\ Research\ partners\ are\ obliged\ to\ adhere\ to\ the\ same\ strict\ data\ protection\ policy\ as\ Mr.\ DLib.=Whatever option you choose, Mr. DLib may share its data with research partners to further improve recommendation quality as part of a 'living lab'. Mr. DLib may also release public datasets that may contain anonymized information about you and the recommendations (sensitive information such as metadata of your articles will be anonymised through e.g. hashing). Research partners are obliged to adhere to the same strict data protection policy as Mr. DLib. -Will\ write\ metadata\ to\ the\ PDFs\ linked\ from\ selected\ entries.=Will write metadata to the PDFs linked from selected entries. - -Write\ metadata\ for\ all\ PDFs\ in\ current\ library?=Write metadata for all PDFs in current library? -Writing\ metadata...=Writing metadata... - -Embed\ BibTeX\ as\ attached\ file\ in\ PDF.=Embed BibTeX as attached file in PDF. -Write\ BibTeX\ as\ XMP\ metadata\ to\ PDF.=Write BibTeX as XMP metadata to PDF. -Write\ BibTeX\ to\ PDF\ (XMP\ and\ embedded)=Write BibTeX to PDF (XMP and embedded) -Write\ metadata\ to\ PDF\ files=Write metadata to PDF files - File\ '%0'\ is\ write\ protected.=File '%0' is write protected. -XMP-annotated\ PDF=XMP-annotated PDF -XMP\ export\ privacy\ settings=XMP export privacy settings -XMP\ metadata=XMP metadata - You\ must\ restart\ JabRef\ for\ this\ to\ come\ into\ effect.=You must restart JabRef for this to come into effect. The\ following\ fetchers\ are\ available\:=The following fetchers are available: @@ -2455,13 +2457,10 @@ Fetcher\ unknown\!=Fetcher unknown! Character\ by\ character=Character by character Embedded=Embedded Entry=Entry -Parse\ Metadata\ from\ PDF.=Parse Metadata from PDF. Symmetric\ character\ by\ character=Symmetric character by character Symmetric\ word\ by\ word=Symmetric word by word Verbatim=Verbatim Word\ by\ word=Word by word -Could\ not\ extract\ Metadata\ from\:\ %0=Could not extract Metadata from: %0 -Merge\ PDF\ metadata=Merge PDF metadata Add\ certificate=Add certificate Serial\ number=Serial number From fb76da27fdb5c948a86d007d3ae137721c09e5fc Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:29:40 +0200 Subject: [PATCH 06/16] Add translation possibility for description of PdfMergeMetadataImporter --- .../logic/importer/fileformat/PdfMergeMetadataImporter.java | 5 +++-- src/main/resources/l10n/JabRef_en.properties | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java index 8c724ea5d41..63356435cdc 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java @@ -18,6 +18,7 @@ import org.jabref.logic.importer.fetcher.DoiFetcher; import org.jabref.logic.importer.fetcher.isbntobibtex.IsbnFetcher; import org.jabref.logic.importer.util.FileFieldParser; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -135,7 +136,7 @@ public ParserResult importDatabase(Path filePath) throws IOException { @Override public String getName() { - return "PDFmergemetadata"; + return "PDF meta data merger"; } @Override @@ -145,7 +146,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "PdfMergeMetadataImporter imports metadata from a PDF using multiple strategies and merging the result."; + return Localization.lang("Imports BibTeX data from a PDF using multiple strategies (e.g., XMP, embedded BibTeX, text parsing, Grobid, and DOI lookup) and merges the result."); } public static class EntryBasedFetcherWrapper extends PdfMergeMetadataImporter implements EntryBasedFetcher { diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 33d0df76f09..ba1fcfeb4bf 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -351,6 +351,8 @@ Could\ not\ extract\ Metadata\ from\:\ %0=Could not extract Metadata from: %0 Parse\ Metadata\ from\ PDF.=Parse Metadata from PDF. Merge\ PDF\ metadata=Merge PDF metadata +Imports\ BibTeX\ data\ from\ a\ PDF\ using\ multiple\ strategies\ (e.g.,\ XMP,\ embedded\ BibTeX,\ text\ parsing,\ Grobid,\ and\ DOI\ lookup)\ and\ merges\ the\ result.=Imports BibTeX data from a PDF using multiple strategies (e.g., XMP, embedded BibTeX, text parsing, Grobid, and DOI lookup) and merges the result. + Exporting\ %0=Exporting %0 Could\ not\ export\ file\ '%0'\ (reason\:\ %1)=Could not export file '%0' (reason: %1) Unknown\ export\ format\ %0=Unknown export format %0 From 97e40d71c6659c31a6a115370935c045888352d0 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:29:59 +0200 Subject: [PATCH 07/16] Remove line break (as preparation for Localization.lang) --- .../jabref/logic/importer/fileformat/BiblioscapeImporter.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java index 482e184a40f..8df99e6b74f 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java @@ -38,8 +38,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Imports a Biblioscape Tag File.\n" + - "Several Biblioscape field types are ignored. Others are only included in the BibTeX field \"comment\"."; + return "Imports a Biblioscape Tag File.\nSeveral Biblioscape field types are ignored. Others are only included in the BibTeX field \"comment\"."; } @Override From f5928199dec63fab2d0489169c030bba98097a0c Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 00:34:27 +0200 Subject: [PATCH 08/16] Add missing doc and more consistency with "meta data" and "BibTeX" --- src/main/java/org/jabref/gui/externalfiles/ImportHandler.java | 4 ++-- src/main/resources/l10n/JabRef_en.properties | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java index 1a165f894ba..a7310540e46 100644 --- a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java +++ b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java @@ -134,7 +134,7 @@ protected List call() { addResultToList(file, true, Localization.lang("File was successfully imported as a new entry")); } else { entriesToAdd.add(createEmptyEntryWithLink(file)); - addResultToList(file, false, Localization.lang("No metadata was found. An empty entry was created with file link")); + addResultToList(file, false, Localization.lang("No BibTeX was found. An empty entry was created with file link.")); } } else if (FileUtil.isBibFile(file)) { var bibtexParserResult = contentImporter.importFromBibFile(file, fileUpdateMonitor); @@ -146,7 +146,7 @@ protected List call() { addResultToList(file, true, Localization.lang("Bib entry was successfully imported")); } else { entriesToAdd.add(createEmptyEntryWithLink(file)); - addResultToList(file, false, Localization.lang("No BibTeX data was found. An empty entry was created with file link")); + addResultToList(file, false, Localization.lang("No BibTeX data was found. An empty entry was created with file link.")); } } catch (IOException ex) { LOGGER.error("Error importing", ex); diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index ba1fcfeb4bf..798ef3587da 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -2355,8 +2355,7 @@ Error\ from\ import\:\ %0=Error from import\: %0 Error\ reading\ PDF\ content\:\ %0=Error reading PDF content\: %0 Bib\ entry\ was\ successfully\ imported=Bib entry was successfully imported File\ was\ successfully\ imported\ as\ a\ new\ entry=File was successfully imported as a new entry -No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=No BibTeX data was found. An empty entry was created with file link -No\ metadata\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link=No metadata was found. An empty entry was created with file link +No\ BibTeX\ data\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link.=No BibTeX data was found. An empty entry was created with file link. Processing\ file\ %0=Processing file %0 Export\ selected=Export selected From 17112f1e7fa66b1540bec08277175f898f24db60 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Mon, 5 Aug 2024 01:06:54 +0200 Subject: [PATCH 09/16] Have relative paths when creating BibTeX from a PDF --- CHANGELOG.md | 1 + .../gui/externalfiles/ImportHandler.java | 5 ++-- .../UnlinkedFilesDialogViewModel.java | 2 +- .../org/jabref/gui/maintable/MainTable.java | 12 +++++---- .../logic/importer/ImportFormatReader.java | 3 ++- .../fileformat/PdfMergeMetadataImporter.java | 5 +++- .../org/jabref/logic/util/io/FileUtil.java | 26 +++++++++++++++++++ 7 files changed, 44 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f24776931cc..45515888364 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv - We fixed an issue where the "Check for updates" preference was not saved. [#11485](https://github.com/JabRef/jabref/pull/11485) - We fixed an issue where an exception was thrown after changing "show preview as a tab" in the preferences. [#11515](https://github.com/JabRef/jabref/pull/11515) +- We fixed an issue where JabRef put file paths as absolute path when an entry was created using drag and drop of a PDF file. [#11173](https://github.com/JabRef/jabref/issues/11173) - We fixed an issue that online and offline mode for new library creation were handled incorrectly. [#11565](https://github.com/JabRef/jabref/pull/11565) - We fixed an issue with colors in the search bar when dark theme is enabled. [#11569](https://github.com/JabRef/jabref/issues/11569) - We fixed an issue where a new unsaved library was not marked with an asterisk. [#11519](https://github.com/JabRef/jabref/pull/11519) diff --git a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java index a7310540e46..73e1f4f602c 100644 --- a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java +++ b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java @@ -53,6 +53,7 @@ import org.jabref.model.groups.GroupTreeNode; import org.jabref.model.util.FileUpdateMonitor; import org.jabref.model.util.OptionalUtil; +import org.jabref.preferences.FilePreferences; import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.injection.Injector; @@ -99,7 +100,7 @@ public ExternalFilesEntryLinker getLinker() { return linker; } - public BackgroundTask> importFilesInBackground(final List files) { + public BackgroundTask> importFilesInBackground(final List files, final BibDatabaseContext bibDatabaseContext, final FilePreferences filePreferences) { return new BackgroundTask<>() { private int counter; private final List results = new ArrayList<>(); @@ -130,7 +131,7 @@ protected List call() { } if (!pdfEntriesInFile.isEmpty()) { - entriesToAdd.addAll(pdfEntriesInFile); + entriesToAdd.addAll(FileUtil.relativize(pdfEntriesInFile, bibDatabaseContext, filePreferences)); addResultToList(file, true, Localization.lang("File was successfully imported as a new entry")); } else { entriesToAdd.add(createEmptyEntryWithLink(file)); diff --git a/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java b/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java index dffa9a50b51..af72f03916b 100644 --- a/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java +++ b/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogViewModel.java @@ -151,7 +151,7 @@ public void startImport() { } resultList.clear(); - importFilesBackgroundTask = importHandler.importFilesInBackground(fileList) + importFilesBackgroundTask = importHandler.importFilesInBackground(fileList, bibDatabase, preferences.getFilePreferences()) .onRunning(() -> { progressValueProperty.bind(importFilesBackgroundTask.workDonePercentageProperty()); progressTextProperty.bind(importFilesBackgroundTask.messageProperty()); diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index d334aec7913..d2f8f59ba2c 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -56,6 +56,7 @@ import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.entry.BibtexString; import org.jabref.model.util.FileUpdateMonitor; +import org.jabref.preferences.FilePreferences; import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.injection.Injector; @@ -84,6 +85,7 @@ public class MainTable extends TableView { private final BibEntryTypesManager entryTypesManager; private final TaskExecutor taskExecutor; private final UndoManager undoManager; + private final FilePreferences filePreferences; private long lastKeyPressTime; private String columnSearchTerm; @@ -110,6 +112,8 @@ public MainTable(MainTableDataModel model, this.entryTypesManager = entryTypesManager; this.taskExecutor = taskExecutor; this.undoManager = libraryTab.getUndoManager(); + this.filePreferences = preferencesService.getFilePreferences(); + MainTablePreferences mainTablePreferences = preferencesService.getMainTablePreferences(); importHandler = new ImportHandler( @@ -492,8 +496,7 @@ private void handleOnDragDropped(TableRow row, BibEntryT // Center -> link files to entry // Depending on the pressed modifier, move/copy/link files to drop target switch (ControlHelper.getDroppingMouseLocation(row, event)) { - case TOP, BOTTOM -> - importHandler.importFilesInBackground(files).executeWith(taskExecutor); + case TOP, BOTTOM -> importHandler.importFilesInBackground(files, database, filePreferences).executeWith(taskExecutor); case CENTER -> { BibEntry entry = target.getEntry(); switch (event.getTransferMode()) { @@ -524,9 +527,8 @@ private void handleOnDragDroppedTableView(DragEvent event) { boolean success = false; if (event.getDragboard().hasFiles()) { - List files = event.getDragboard().getFiles().stream().map(File::toPath).collect(Collectors.toList()); - importHandler.importFilesInBackground(files).executeWith(taskExecutor); - + List files = event.getDragboard().getFiles().stream().map(File::toPath).toList(); + importHandler.importFilesInBackground(files, this.database, filePreferences).executeWith(taskExecutor); success = true; } diff --git a/src/main/java/org/jabref/logic/importer/ImportFormatReader.java b/src/main/java/org/jabref/logic/importer/ImportFormatReader.java index 8aeb145ab42..7732de876e3 100644 --- a/src/main/java/org/jabref/logic/importer/ImportFormatReader.java +++ b/src/main/java/org/jabref/logic/importer/ImportFormatReader.java @@ -55,7 +55,8 @@ public class ImportFormatReader { public ImportFormatReader(ImporterPreferences importerPreferences, ImportFormatPreferences importFormatPreferences, - CitationKeyPatternPreferences citationKeyPatternPreferences, FileUpdateMonitor fileUpdateMonitor) { + CitationKeyPatternPreferences citationKeyPatternPreferences, + FileUpdateMonitor fileUpdateMonitor) { this.importerPreferences = importerPreferences; this.importFormatPreferences = importFormatPreferences; this.fileUpdateMonitor = fileUpdateMonitor; diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java index 63356435cdc..75c3c4a503e 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java @@ -20,6 +20,7 @@ import org.jabref.logic.importer.util.FileFieldParser; import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; +import org.jabref.logic.util.io.FileUtil; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.LinkedFile; @@ -130,6 +131,8 @@ public ParserResult importDatabase(Path filePath) throws IOException { } } + // We use the absolute path here as we do not know the context where this import will be used. + // The caller is responsible for making the path relative if necessary. entry.addFile(new LinkedFile("", filePath, StandardFileType.PDF.getName())); return new ParserResult(List.of(entry)); } @@ -169,7 +172,7 @@ public List performSearch(BibEntry entry) throws FetcherException { try { ParserResult result = importDatabase(filePath.get()); if (!result.isEmpty()) { - return result.getDatabase().getEntries(); + return FileUtil.relativize(result.getDatabase().getEntries(), databaseContext, filePreferences); } } catch (IOException e) { LOGGER.error("Cannot read {}", filePath.get(), e); diff --git a/src/main/java/org/jabref/logic/util/io/FileUtil.java b/src/main/java/org/jabref/logic/util/io/FileUtil.java index 65f0fac7c23..b2bd50dbfaa 100644 --- a/src/main/java/org/jabref/logic/util/io/FileUtil.java +++ b/src/main/java/org/jabref/logic/util/io/FileUtil.java @@ -27,6 +27,8 @@ import org.jabref.model.database.BibDatabase; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.LinkedFile; +import org.jabref.model.entry.field.StandardField; import org.jabref.preferences.FilePreferences; import org.slf4j.Logger; @@ -268,6 +270,30 @@ public static Path relativize(Path path, BibDatabaseContext databaseContext, Fil return relativize(path, fileDirectories); } + /** + * Relativizes all BibEntries given to (!) the given database context + *

+ * ⚠ Modifies the entries in the list ⚠ + */ + public static List relativize(List entries, BibDatabaseContext databaseContext, FilePreferences filePreferences) { + List fileDirectories = databaseContext.getFileDirectories(filePreferences); + + return entries.stream() + .map(entry -> { + if (entry.hasField(StandardField.FILE)) { + List updatedLinkedFiles = entry.getFiles().stream().map(linkedFile -> { + if (!linkedFile.isOnlineLink()) { + String newPath = FileUtil.relativize(Path.of(linkedFile.getLink()), fileDirectories).toString(); + linkedFile.setLink(newPath); + } + return linkedFile; + }).toList(); + entry.setFiles(updatedLinkedFiles); + } + return entry; + }).toList(); + } + /** * Returns the list of linked files. The files have the absolute filename * From 3eb8396a64e1a6e3c9c0f2309cad6606c3c0afb2 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 6 Aug 2024 19:00:08 +0200 Subject: [PATCH 10/16] Remove SilverPlatterImporter --- CHANGELOG.md | 2 +- .../logic/importer/ImportFormatReader.java | 2 - .../fileformat/SilverPlatterImporter.java | 196 ------------------ .../fileformat/SilverPlatterImporterTest.java | 65 ------ .../fileformat/SilverPlatterImporterTest1.bib | 11 - .../fileformat/SilverPlatterImporterTest1.txt | 18 -- .../fileformat/SilverPlatterImporterTest2.bib | 9 - .../fileformat/SilverPlatterImporterTest2.txt | 29 --- 8 files changed, 1 insertion(+), 331 deletions(-) delete mode 100644 src/main/java/org/jabref/logic/importer/fileformat/SilverPlatterImporter.java delete mode 100644 src/test/java/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest.java delete mode 100644 src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.bib delete mode 100644 src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.txt delete mode 100644 src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.bib delete mode 100644 src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 45515888364..694a74b65bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,7 +43,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv ### Removed - +- We removed support for importing using the SilverPlatterImporter (`Record INSPEC`). [#11576](https://github.com/JabRef/jabref/pull/11576) diff --git a/src/main/java/org/jabref/logic/importer/ImportFormatReader.java b/src/main/java/org/jabref/logic/importer/ImportFormatReader.java index 7732de876e3..cb963a46c57 100644 --- a/src/main/java/org/jabref/logic/importer/ImportFormatReader.java +++ b/src/main/java/org/jabref/logic/importer/ImportFormatReader.java @@ -32,7 +32,6 @@ import org.jabref.logic.importer.fileformat.PdfXmpImporter; import org.jabref.logic.importer.fileformat.RepecNepImporter; import org.jabref.logic.importer.fileformat.RisImporter; -import org.jabref.logic.importer.fileformat.SilverPlatterImporter; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabases; import org.jabref.model.entry.BibEntry; @@ -85,7 +84,6 @@ public void reset() { formats.add(new PdfXmpImporter(importFormatPreferences.xmpPreferences())); formats.add(new RepecNepImporter(importFormatPreferences)); formats.add(new RisImporter()); - formats.add(new SilverPlatterImporter()); formats.add(new CffImporter(citationKeyPatternPreferences)); formats.add(new BiblioscapeImporter()); formats.add(new BibtexImporter(importFormatPreferences, fileUpdateMonitor)); diff --git a/src/main/java/org/jabref/logic/importer/fileformat/SilverPlatterImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/SilverPlatterImporter.java deleted file mode 100644 index e10eb401a46..00000000000 --- a/src/main/java/org/jabref/logic/importer/fileformat/SilverPlatterImporter.java +++ /dev/null @@ -1,196 +0,0 @@ -package org.jabref.logic.importer.fileformat; - -import java.io.BufferedReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.regex.Pattern; - -import org.jabref.logic.importer.Importer; -import org.jabref.logic.importer.ParserResult; -import org.jabref.logic.util.StandardFileType; -import org.jabref.model.entry.AuthorList; -import org.jabref.model.entry.BibEntry; -import org.jabref.model.entry.field.Field; -import org.jabref.model.entry.field.StandardField; -import org.jabref.model.entry.types.EntryType; -import org.jabref.model.entry.types.EntryTypeFactory; -import org.jabref.model.entry.types.StandardEntryType; - -/** - * Imports a SilverPlatter exported file. This is a poor format to parse, so it currently doesn't handle everything correctly. - */ -public class SilverPlatterImporter extends Importer { - - private static final Pattern START_PATTERN = Pattern.compile("Record.*INSPEC.*"); - - @Override - public String getName() { - return "SilverPlatter"; - } - - @Override - public StandardFileType getFileType() { - return StandardFileType.SILVER_PLATTER; - } - - @Override - public String getDescription() { - return "Imports a SilverPlatter exported file."; - } - - @Override - public boolean isRecognizedFormat(BufferedReader reader) throws IOException { - // This format is very similar to Inspec, so we have a two-fold strategy: - // If we see the flag signaling that it is an Inspec file, return false. - // This flag should appear above the first entry and prevent us from - // accepting the Inspec format. Then we look for the title entry. - String str; - while ((str = reader.readLine()) != null) { - if (START_PATTERN.matcher(str).find()) { - return false; // This is an Inspec file, so return false. - } - - if ((str.length() >= 5) && "TI: ".equals(str.substring(0, 5))) { - return true; - } - } - return false; - } - - @Override - public ParserResult importDatabase(BufferedReader reader) throws IOException { - List bibitems = new ArrayList<>(); - boolean isChapter = false; - String str; - StringBuilder sb = new StringBuilder(); - while ((str = reader.readLine()) != null) { - if (str.length() < 2) { - sb.append("__::__").append(str); - } else { - sb.append("__NEWFIELD__").append(str); - } - } - String[] entries = sb.toString().split("__::__"); - EntryType type = StandardEntryType.Misc; - Map h = new HashMap<>(); - for (String entry : entries) { - if (entry.trim().length() < 6) { - continue; - } - h.clear(); - String[] fields = entry.split("__NEWFIELD__"); - for (String field : fields) { - if (field.length() < 6) { - continue; - } - String f3 = field.substring(0, 2); - String frest = field.substring(5); - switch (f3) { - case "TI" -> - h.put(StandardField.TITLE, frest); - case "AU" -> { - if (frest.trim().endsWith("(ed)")) { - String ed = frest.trim(); - ed = ed.substring(0, ed.length() - 4); - h.put(StandardField.EDITOR, - AuthorList.fixAuthorLastNameFirst(ed.replace(",-", ", ").replace(";", " and "))); - } else { - h.put(StandardField.AUTHOR, - AuthorList.fixAuthorLastNameFirst(frest.replace(",-", ", ").replace(";", " and "))); - } - } - case "AB" -> - h.put(StandardField.ABSTRACT, frest); - case "DE" -> { - String kw = frest.replace("-;", ",").toLowerCase(Locale.ROOT); - h.put(StandardField.KEYWORDS, kw.substring(0, kw.length() - 1)); - } - case "SO" -> { - int m = frest.indexOf('.'); - if (m >= 0) { - String jr = frest.substring(0, m); - h.put(StandardField.JOURNAL, jr.replace("-", " ")); - frest = frest.substring(m); - m = frest.indexOf(';'); - if (m >= 5) { - String yr = frest.substring(m - 5, m).trim(); - h.put(StandardField.YEAR, yr); - frest = frest.substring(m); - m = frest.indexOf(':'); - int issueIndex = frest.indexOf('('); - int endIssueIndex = frest.indexOf(')'); - if (m >= 0) { - String pg = frest.substring(m + 1).trim(); - h.put(StandardField.PAGES, pg); - h.put(StandardField.VOLUME, frest.substring(1, issueIndex).trim()); - h.put(StandardField.ISSUE, frest.substring(issueIndex + 1, endIssueIndex).trim()); - } - } - } - } - case "PB" -> { - int m = frest.indexOf(':'); - if (m >= 0) { - String jr = frest.substring(0, m); - h.put(StandardField.PUBLISHER, jr.replace("-", " ").trim()); - frest = frest.substring(m); - m = frest.indexOf(", "); - if ((m + 2) < frest.length()) { - String yr = frest.substring(m + 2).trim(); - try { - Integer.parseInt(yr); - h.put(StandardField.YEAR, yr); - } catch (NumberFormatException ex) { - // Let's assume that this wasn't a number, since it - // couldn't be parsed as an integer. - } - } - } - } - case "AF" -> - h.put(StandardField.SCHOOL, frest.trim()); - case "DT" -> { - frest = frest.trim(); - if ("Monograph".equals(frest)) { - type = StandardEntryType.Book; - } else if (frest.startsWith("Dissertation")) { - type = StandardEntryType.PhdThesis; - } else if (frest.toLowerCase(Locale.ROOT).contains(StandardField.JOURNAL.getName())) { - type = StandardEntryType.Article; - } else if ("Contribution".equals(frest) || "Chapter".equals(frest)) { - type = StandardEntryType.InCollection; - // This entry type contains page numbers and booktitle in the - // title field. - isChapter = true; - } else { - type = EntryTypeFactory.parse(frest.replace(" ", "")); - } - } - } - } - - if (isChapter) { - String titleO = h.get(StandardField.TITLE); - if (titleO != null) { - String title = titleO.trim(); - int inPos = title.indexOf("\" in "); - if (inPos > 1) { - h.put(StandardField.TITLE, title.substring(0, inPos)); - } - } - } - - BibEntry b = new BibEntry(type); - // create one here - b.setField(h); - - bibitems.add(b); - } - - return new ParserResult(bibitems); - } -} diff --git a/src/test/java/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest.java deleted file mode 100644 index 580b469f7e7..00000000000 --- a/src/test/java/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.jabref.logic.importer.fileformat; - -import java.io.IOException; -import java.util.function.Predicate; -import java.util.stream.Stream; - -import org.jabref.logic.importer.Importer; -import org.jabref.logic.util.StandardFileType; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.MethodSource; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -class SilverPlatterImporterTest { - - private static final String FILE_ENDING = ".txt"; - - private Importer testImporter; - - @BeforeEach - void setUp() throws Exception { - testImporter = new SilverPlatterImporter(); - } - - private static Stream fileNames() throws IOException { - Predicate fileName = name -> name.startsWith("SilverPlatterImporterTest") && name.endsWith(FILE_ENDING); - return ImporterTestEngine.getTestFiles(fileName).stream(); - } - - private static Stream invalidFileNames() throws IOException { - Predicate fileName = name -> !name.startsWith("SilverPlatterImporterTest"); - return ImporterTestEngine.getTestFiles(fileName).stream(); - } - - @ParameterizedTest - @MethodSource("fileNames") - void isRecognizedFormat(String fileName) throws IOException { - ImporterTestEngine.testIsRecognizedFormat(testImporter, fileName); - } - - @ParameterizedTest - @MethodSource("invalidFileNames") - void isNotRecognizedFormat(String fileName) throws IOException { - ImporterTestEngine.testIsNotRecognizedFormat(testImporter, fileName); - } - - @ParameterizedTest - @MethodSource("fileNames") - void importEntries(String fileName) throws Exception { - ImporterTestEngine.testImportEntries(testImporter, fileName, FILE_ENDING); - } - - @Test - void sGetExtensions() { - assertEquals(StandardFileType.SILVER_PLATTER, testImporter.getFileType()); - } - - @Test - void getDescription() { - assertEquals("Imports a SilverPlatter exported file.", testImporter.getDescription()); - } -} diff --git a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.bib b/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.bib deleted file mode 100644 index 3cd807dc669..00000000000 --- a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.bib +++ /dev/null @@ -1,11 +0,0 @@ -@Article{, - author = {Supek-S and Aine-CJ}, - issue = {6}, - journal = {IEEE Trans Biomed Eng}, - pages = {529-540}, - title = {Simulation studies of multiple dipole neuromagnetic source localization, model order and limits of source resolution. }, - volume = {40}, - year = {1993}, - abstract = {Numerical}, - journal = {IEEE Trans Biomed Eng} -} \ No newline at end of file diff --git a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.txt b/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.txt deleted file mode 100644 index 921b4370a5f..00000000000 --- a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest1.txt +++ /dev/null @@ -1,18 +0,0 @@ - -TI: Simulation studies of multiple dipole neuromagnetic source localization, model order and limits of source resolution. -AU: Supek-S; Aine-CJ -AD: Neuromagnetism Laboratory, Los Alamos National Laboratory, NM 87545. -SO: IEEE-Trans-Biomed-Eng. , 1993;40(6) : 529-540 -DT: journal -ISSN: 0018-9294 -PY: 1993 -LA: ENGLISH -CP: UNITED-STATES -AB: Numerical -MESH: Data-Interpretation,-Statistical; Electromagnetic-Fields; Monte-Carlo-Method -MESH: *Magnetoencephalography-; *Models,-Biological; *Models,-Statistical -TG: Support,-U.S.-Gov't,-Non-P.H.S.; Support,-U.S.-Gov't,-P.H.S. -PT: JOURNAL-ARTICLE -CN: NEIEY08610EYNEI -AN: 94085977 -UD: 9403 diff --git a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.bib b/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.bib deleted file mode 100644 index 671fe7bc11e..00000000000 --- a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.bib +++ /dev/null @@ -1,9 +0,0 @@ -@Article{, - editor = {Supek-S and Aine-CJ}, - journal = {IEEE Trans Biomed Eng}, - keywords = {many-much-more-i don't know}, - publisher = {New York publishment}, - school = {Gymnasium Unterrieden}, - title = {Simulation studies of multiple dipole neuromagnetic }, - year = {3 Jun} -} \ No newline at end of file diff --git a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.txt b/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.txt deleted file mode 100644 index b67969ec46b..00000000000 --- a/src/test/resources/org/jabref/logic/importer/fileformat/SilverPlatterImporterTest2.txt +++ /dev/null @@ -1,29 +0,0 @@ - -TI: Simulation studies of multiple dipole neuromagnetic " in source localization: model order and limits of source resolution. -DT: journal -AU: Supek-S; Aine-CJ(ed) -DE: Many-much-more-i don't know -PB: New York publishment : 1993 -PB: New York publishment : jdaksla -PB: New York publishment 1993 -AF: Gymnasium Unterrieden -DT: Monograph -DT: Dissertation -DT: journal -DT: Contribution -DT: Chapter -DT: journal -SO: IEEE-Trans-Biomed-Eng 1993 Jun 40(6): 529-40 -SO: IEEE-Trans-Biomed-Eng., 1993 Jun 40(6): 529-40 -SO IEEE-Trans-Biomed-Eng., 1993 Jun; 40(6) 529-40 -ISSN: 0018-9294 -PY: 1993 -LA: ENGLISH -CP: UNITED-STATES -MESH: Data-Interpretation,-Statistical; Electromagnetic-Fields; Monte-Carlo-Method -MESH: *Magnetoencephalography-; *Models,-Biological; *Models,-Statistical -TG: Support,-U.S.-Gov't,-Non-P.H.S.; Support,-U.S.-Gov't,-P.H.S. -PT: JOURNAL-ARTICLE -CN: NEIEY08610EYNEI -AN: 94085977 -UD: 9403 From 439aff98d518389c72d72f8ed4e227dcdb8c4297 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 6 Aug 2024 20:24:21 +0200 Subject: [PATCH 11/16] Sort alphabetically --- .../org/jabref/logic/importer/ImporterTest.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/test/java/org/jabref/logic/importer/ImporterTest.java b/src/test/java/org/jabref/logic/importer/ImporterTest.java index 706a66aac3d..912ae206c17 100644 --- a/src/test/java/org/jabref/logic/importer/ImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/ImporterTest.java @@ -20,7 +20,6 @@ import org.jabref.logic.importer.fileformat.PdfXmpImporter; import org.jabref.logic.importer.fileformat.RepecNepImporter; import org.jabref.logic.importer.fileformat.RisImporter; -import org.jabref.logic.importer.fileformat.SilverPlatterImporter; import org.jabref.logic.xmp.XmpPreferences; import org.jabref.model.util.DummyFileUpdateMonitor; @@ -102,16 +101,15 @@ public void getDescriptionDoesNotReturnNull(Importer format) { } public static Stream instancesToTest() { - // all classes implementing {@link Importer} - // sorted alphabetically - ImportFormatPreferences importFormatPreferences = mock(ImportFormatPreferences.class, Answers.RETURNS_DEEP_STUBS); when(importFormatPreferences.bibEntryPreferences().getKeywordSeparator()).thenReturn(','); XmpPreferences xmpPreferences = mock(XmpPreferences.class); - // @formatter:off return Stream.of( + // all classes implementing {@link Importer} + // sorted alphabetically new BiblioscapeImporter(), new BibtexImporter(importFormatPreferences, new DummyFileUpdateMonitor()), + new CitaviXmlImporter(), new CopacImporter(), new EndnoteImporter(), new InspecImporter(), @@ -124,10 +122,7 @@ public static Stream instancesToTest() { new PdfContentImporter(), new PdfXmpImporter(xmpPreferences), new RepecNepImporter(importFormatPreferences), - new RisImporter(), - new SilverPlatterImporter(), - new CitaviXmlImporter() + new RisImporter() ); - // @formatter:on } } From efd80e0fe0edecfcd40058bbca72fa6cbf1923ad Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 6 Aug 2024 20:54:03 +0200 Subject: [PATCH 12/16] Localize getDescription() and remove meaningless test methods --- .../BibliographyFromPdfImporter.java | 2 +- .../fileformat/BiblioscapeImporter.java | 3 +- .../importer/fileformat/BibtexImporter.java | 3 +- .../importer/fileformat/CffImporter.java | 3 +- .../fileformat/CitaviXmlImporter.java | 3 +- .../importer/fileformat/CopacImporter.java | 3 +- .../importer/fileformat/EndnoteImporter.java | 3 +- .../fileformat/EndnoteXmlImporter.java | 3 +- .../importer/fileformat/InspecImporter.java | 3 +- .../importer/fileformat/IsiImporter.java | 3 +- .../importer/fileformat/MedlineImporter.java | 3 +- .../fileformat/MedlinePlainImporter.java | 3 +- .../importer/fileformat/ModsImporter.java | 3 +- .../importer/fileformat/MrDLibImporter.java | 2 +- .../importer/fileformat/MsBibImporter.java | 3 +- .../importer/fileformat/OvidImporter.java | 3 +- .../fileformat/PdfContentImporter.java | 2 +- .../PdfEmbeddedBibFileImporter.java | 6 ++-- .../fileformat/PdfGrobidImporter.java | 3 +- .../PdfVerbatimBibTextImporter.java | 2 +- .../importer/fileformat/PdfXmpImporter.java | 2 +- .../importer/fileformat/RepecNepImporter.java | 3 +- .../importer/fileformat/RisImporter.java | 3 +- src/main/resources/l10n/JabRef_en.properties | 23 ++++++++++++++ .../fileformat/InspecImporterTest.java | 5 --- .../importer/fileformat/IsiImporterTest.java | 6 ---- .../fileformat/MedlineImporterTest.java | 5 --- .../fileformat/MedlinePlainImporterTest.java | 11 ------- .../fileformat/MrDLibImporterTest.java | 16 ---------- .../fileformat/MsBibImporterTest.java | 29 +++++------------ .../importer/fileformat/OvidImporterTest.java | 29 +---------------- .../fileformat/PdfContentImporterTest.java | 12 ------- .../PdfEmbeddedBibFileImporterTest.java | 12 ------- .../PdfMergeMetadataImporterTest.java | 11 ------- .../PdfVerbatimBibTextImporterTest.java | 12 ------- .../fileformat/PdfXmpImporterTest.java | 16 ---------- .../importer/fileformat/RISImporterTest.java | 31 +------------------ .../fileformat/RepecNepImporterTest.java | 24 -------------- 38 files changed, 74 insertions(+), 235 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/fileformat/BibliographyFromPdfImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/BibliographyFromPdfImporter.java index 49d3ffa6291..9f7cd053bfd 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/BibliographyFromPdfImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/BibliographyFromPdfImporter.java @@ -96,7 +96,7 @@ public String getName() { @Override public String getDescription() { - return "Reads the references from the 'References' section of a PDF file."; + return Localization.lang("Reads the references from the 'References' section of a PDF file."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java index 8df99e6b74f..6809ee55060 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/BiblioscapeImporter.java @@ -11,6 +11,7 @@ import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; @@ -38,7 +39,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Imports a Biblioscape Tag File.\nSeveral Biblioscape field types are ignored. Others are only included in the BibTeX field \"comment\"."; + return Localization.lang("Imports a Biblioscape Tag File.\nSeveral Biblioscape field types are ignored. Others are only included in the BibTeX field \"comment\"."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/BibtexImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/BibtexImporter.java index b3c17bc49ad..e78f4d7db2e 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/BibtexImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/BibtexImporter.java @@ -17,6 +17,7 @@ import org.jabref.logic.importer.ImportFormatPreferences; import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.database.BibDatabaseModeDetection; import org.jabref.model.util.FileUpdateMonitor; @@ -139,7 +140,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "This importer enables `--importToOpen someEntry.bib`"; + return Localization.lang("This importer enables \"--importToOpen someEntry.bib\""); } /** diff --git a/src/main/java/org/jabref/logic/importer/fileformat/CffImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/CffImporter.java index 7a180d79c38..7b8ce084367 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/CffImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/CffImporter.java @@ -12,6 +12,7 @@ import org.jabref.logic.exporter.CffExporter; import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.Author; import org.jabref.model.entry.AuthorList; @@ -57,7 +58,7 @@ public String getId() { @Override public String getDescription() { - return "Importer for the CFF format, which is intended to make software and datasets citable."; + return Localization.lang("Importer for the CFF format, which is intended to make software and datasets citable."); } // POJO classes for yaml data diff --git a/src/main/java/org/jabref/logic/importer/fileformat/CitaviXmlImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/CitaviXmlImporter.java index 667769fe34a..78b0400932c 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/CitaviXmlImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/CitaviXmlImporter.java @@ -37,6 +37,7 @@ import org.jabref.logic.importer.fileformat.citavi.CitaviExchangeData.KnowledgeItems; import org.jabref.logic.importer.fileformat.citavi.CitaviExchangeData.KnowledgeItems.KnowledgeItem; import org.jabref.logic.importer.fileformat.citavi.CitaviExchangeData.Persons.Person; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.Author; import org.jabref.model.entry.AuthorList; @@ -108,7 +109,7 @@ public String getId() { @Override public String getDescription() { - return "Importer for the Citavi XML format."; + return Localization.lang("Importer for the Citavi XML format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/CopacImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/CopacImporter.java index d771ac42787..b5192be5509 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/CopacImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/CopacImporter.java @@ -9,6 +9,7 @@ import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; @@ -43,7 +44,7 @@ public String getId() { @Override public String getDescription() { - return "Importer for COPAC format."; + return Localization.lang("Importer for COPAC format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/EndnoteImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/EndnoteImporter.java index b4f9fe0f1bc..2112f9f4350 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/EndnoteImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/EndnoteImporter.java @@ -11,6 +11,7 @@ import org.jabref.logic.citationkeypattern.CitationKeyGenerator; import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.AuthorList; import org.jabref.model.entry.BibEntry; @@ -52,7 +53,7 @@ public String getId() { @Override public String getDescription() { - return "Importer for the Refer/Endnote format. Modified to use article number for pages if pages are missing."; + return Localization.lang("Importer for the Refer/Endnote format. Modified to use article number for pages if pages are missing."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/EndnoteXmlImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/EndnoteXmlImporter.java index 5c7f3aa6777..ec89f849cd4 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/EndnoteXmlImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/EndnoteXmlImporter.java @@ -23,6 +23,7 @@ import org.jabref.logic.importer.ParseException; import org.jabref.logic.importer.Parser; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.KeywordList; @@ -121,7 +122,7 @@ public String getId() { @Override public String getDescription() { - return "Importer for the EndNote XML format."; + return Localization.lang("Importer for the EndNote XML format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/InspecImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/InspecImporter.java index e1b6b52fc75..dd0e60dc011 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/InspecImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/InspecImporter.java @@ -10,6 +10,7 @@ import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.AuthorList; import org.jabref.model.entry.BibEntry; @@ -38,7 +39,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "INSPEC format importer."; + return Localization.lang("Importer for the INSPEC format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/IsiImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/IsiImporter.java index 47a1ef7967e..ab376a82cd2 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/IsiImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/IsiImporter.java @@ -15,6 +15,7 @@ import org.jabref.logic.formatter.casechanger.TitleCaseFormatter; import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.Month; @@ -72,7 +73,7 @@ public String getId() { @Override public String getDescription() { - return "Importer for the ISI Web of Science, INSPEC and Medline format."; + return Localization.lang("Importer for the ISI Web of Science, INSPEC and Medline format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/MedlineImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/MedlineImporter.java index 0cece860424..3a18c4c0476 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/MedlineImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/MedlineImporter.java @@ -29,6 +29,7 @@ import org.jabref.logic.importer.fileformat.medline.OtherId; import org.jabref.logic.importer.fileformat.medline.PersonalNameSubject; import org.jabref.logic.importer.util.MathMLParser; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.Date; @@ -85,7 +86,7 @@ public String getId() { @Override public String getDescription() { - return "Importer for the Medline format."; + return Localization.lang("Importer for the Medline format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/MedlinePlainImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/MedlinePlainImporter.java index d383377bd12..64281fc2812 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/MedlinePlainImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/MedlinePlainImporter.java @@ -12,6 +12,7 @@ import org.jabref.logic.importer.ImportFormatPreferences; import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.AuthorList; import org.jabref.model.entry.BibEntry; @@ -51,7 +52,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Importer for the MedlinePlain format."; + return Localization.lang("Importer for the MedlinePlain format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java index 0437cd611ce..e38743f294a 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java @@ -30,6 +30,7 @@ import org.jabref.logic.importer.fileformat.mods.Identifier; import org.jabref.logic.importer.fileformat.mods.Name; import org.jabref.logic.importer.fileformat.mods.RecordInfo; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.Date; @@ -624,7 +625,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Importer for the MODS format"; + return Localization.lang("Importer for the MODS format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/MrDLibImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/MrDLibImporter.java index b03be074ece..8d21d2465e1 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/MrDLibImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/MrDLibImporter.java @@ -66,7 +66,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Takes valid JSON documents from the Mr. DLib API and parses them into a BibEntry"; + return "Takes valid JSON documents from the Mr. DLib API and parses them into a BibEntry."; } /** diff --git a/src/main/java/org/jabref/logic/importer/fileformat/MsBibImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/MsBibImporter.java index f162f5e9c84..c633f88d09e 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/MsBibImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/MsBibImporter.java @@ -10,6 +10,7 @@ import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.msbib.MSBibDatabase; import org.jabref.logic.util.StandardFileType; @@ -87,7 +88,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Importer for the MS Office 2007 XML bibliography format."; + return Localization.lang("Importer for the MS Office 2007 XML bibliography format."); } /** diff --git a/src/main/java/org/jabref/logic/importer/fileformat/OvidImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/OvidImporter.java index bcea23f0489..c9019585e7e 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/OvidImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/OvidImporter.java @@ -11,6 +11,7 @@ import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.AuthorList; import org.jabref.model.entry.BibEntry; @@ -59,7 +60,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Imports an Ovid file."; + return Localization.lang("Importer for the Ovid format."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java index b48283e06b4..2f857cb9528 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfContentImporter.java @@ -592,6 +592,6 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "PdfContentImporter parses data of the first page of the PDF and creates a BibTeX entry. Currently, Springer and IEEE formats are supported."; + return Localization.lang("This importer parses data of the first page of the PDF and creates a BibTeX entry. Currently, Springer and IEEE formats are supported."); } } diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporter.java index 57b94653d62..0406488f8ba 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporter.java @@ -48,14 +48,14 @@ public boolean isRecognizedFormat(BufferedReader input) throws IOException { @Override public ParserResult importDatabase(BufferedReader reader) throws IOException { Objects.requireNonNull(reader); - throw new UnsupportedOperationException("PdfEmbeddedBibFileImporter does not support importDatabase(BufferedReader reader)." + throw new UnsupportedOperationException("PdfEmbeddedBibFileImporter does not support importDatabase(BufferedReader reader). " + "Instead use importDatabase(Path filePath, Charset defaultEncoding)."); } @Override public ParserResult importDatabase(String data) throws IOException { Objects.requireNonNull(data); - throw new UnsupportedOperationException("PdfEmbeddedBibFileImporter does not support importDatabase(String data)." + throw new UnsupportedOperationException("PdfEmbeddedBibFileImporter does not support importDatabase(String data). " + "Instead use importDatabase(Path filePath, Charset defaultEncoding)."); } @@ -157,6 +157,6 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "PdfEmbeddedBibFileImporter imports an embedded Bib-File from the PDF."; + return Localization.lang("Imports a BibTeX file found inside a PDF."); } } diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfGrobidImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfGrobidImporter.java index 98893d3941e..95ee3f4b6f8 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfGrobidImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfGrobidImporter.java @@ -11,6 +11,7 @@ import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; import org.jabref.logic.importer.util.GrobidService; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.logic.util.io.FileUtil; import org.jabref.model.entry.BibEntry; @@ -91,6 +92,6 @@ public String getId() { @Override public String getDescription() { - return "Wraps the GrobidService function to be used as an Importer."; + return Localization.lang("Imports BibTeX data of a PDF using Grobid."); } } diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporter.java index 67feff964b7..9848075eedf 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporter.java @@ -94,6 +94,6 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "PdfVerbatimBibTextImporter imports a verbatim BibTeX entry from the first page of the PDF."; + return Localization.lang("Scrapes the first page of a PDF for BibTeX information."); } } diff --git a/src/main/java/org/jabref/logic/importer/fileformat/PdfXmpImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/PdfXmpImporter.java index 0b8fe47c3dc..f9398633b78 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/PdfXmpImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/PdfXmpImporter.java @@ -83,6 +83,6 @@ public String getId() { @Override public String getDescription() { - return "Wraps the XMPUtility function to be used as an Importer."; + return Localization.lang("Imports BibTeX data using XMP data of a PDF."); } } diff --git a/src/main/java/org/jabref/logic/importer/fileformat/RepecNepImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/RepecNepImporter.java index bdaaf19ad0e..19df88f0979 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/RepecNepImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/RepecNepImporter.java @@ -11,6 +11,7 @@ import org.jabref.logic.importer.ImportFormatPreferences; import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.Date; @@ -170,7 +171,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Imports a New Economics Papers-Message from the REPEC-NEP Service."; + return Localization.lang("Imports a New Economics Papers-Message from the REPEC-NEP Service."); } @Override diff --git a/src/main/java/org/jabref/logic/importer/fileformat/RisImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/RisImporter.java index ca94829a6e7..fd1d26864da 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/RisImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/RisImporter.java @@ -16,6 +16,7 @@ import org.jabref.logic.importer.Importer; import org.jabref.logic.importer.ParserResult; +import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.AuthorList; import org.jabref.model.entry.BibEntry; @@ -45,7 +46,7 @@ public StandardFileType getFileType() { @Override public String getDescription() { - return "Imports a Biblioscape Tag File."; + return Localization.lang("Imports a Biblioscape tag file."); } @Override diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 798ef3587da..72dc906d79f 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -351,7 +351,30 @@ Could\ not\ extract\ Metadata\ from\:\ %0=Could not extract Metadata from: %0 Parse\ Metadata\ from\ PDF.=Parse Metadata from PDF. Merge\ PDF\ metadata=Merge PDF metadata +Importer\ for\ COPAC\ format.=Importer for COPAC format. +Importer\ for\ the\ CFF\ format,\ which\ is\ intended\ to\ make\ software\ and\ datasets\ citable.=Importer for the CFF format, which is intended to make software and datasets citable. +Importer\ for\ the\ Citavi\ XML\ format.=Importer for the Citavi XML format. +Importer\ for\ the\ EndNote\ XML\ format.=Importer for the EndNote XML format. +Importer\ for\ the\ INSPEC\ format.=Importer for the INSPEC format. +Importer\ for\ the\ ISI\ Web\ of\ Science,\ INSPEC\ and\ Medline\ format.=Importer for the ISI Web of Science, INSPEC and Medline format. +Importer\ for\ the\ MODS\ format.=Importer for the MODS format. +Importer\ for\ the\ MS\ Office\ 2007\ XML\ bibliography\ format.=Importer for the MS Office 2007 XML bibliography format. +Importer\ for\ the\ Medline\ format.=Importer for the Medline format. +Importer\ for\ the\ MedlinePlain\ format.=Importer for the MedlinePlain format. +Importer\ for\ the\ Ovid\ format.=Importer for the Ovid format. +Importer\ for\ the\ Refer/Endnote\ format.\ Modified\ to\ use\ article\ number\ for\ pages\ if\ pages\ are\ missing.=Importer for the Refer/Endnote format. Modified to use article number for pages if pages are missing. Imports\ BibTeX\ data\ from\ a\ PDF\ using\ multiple\ strategies\ (e.g.,\ XMP,\ embedded\ BibTeX,\ text\ parsing,\ Grobid,\ and\ DOI\ lookup)\ and\ merges\ the\ result.=Imports BibTeX data from a PDF using multiple strategies (e.g., XMP, embedded BibTeX, text parsing, Grobid, and DOI lookup) and merges the result. +Imports\ BibTeX\ data\ of\ a\ PDF\ using\ Grobid.=Imports BibTeX data of a PDF using Grobid. +Imports\ BibTeX\ data\ using\ XMP\ data\ of\ a\ PDF.=Imports BibTeX data using XMP data of a PDF. +Imports\ a\ BibTeX\ file\ found\ inside\ a\ PDF.=Imports a BibTeX file found inside a PDF. +Imports\ a\ Biblioscape\ Tag\ File.\nSeveral\ Biblioscape\ field\ types\ are\ ignored.\ Others\ are\ only\ included\ in\ the\ BibTeX\ field\ "comment".=Imports a Biblioscape Tag File.\nSeveral Biblioscape field types are ignored. Others are only included in the BibTeX field "comment". +Imports\ a\ Biblioscape\ tag\ file.=Imports a Biblioscape tag file. +Imports\ a\ New\ Economics\ Papers-Message\ from\ the\ REPEC-NEP\ Service.=Imports a New Economics Papers-Message from the REPEC-NEP Service. +No\ BibTeX\ was\ found.\ An\ empty\ entry\ was\ created\ with\ file\ link.=No BibTeX was found. An empty entry was created with file link. +Reads\ the\ references\ from\ the\ 'References'\ section\ of\ a\ PDF\ file.=Reads the references from the 'References' section of a PDF file. +Scrapes\ the\ first\ page\ of\ a\ PDF\ for\ BibTeX\ information.=Scrapes the first page of a PDF for BibTeX information. +This\ importer\ enables\ "--importToOpen\ someEntry.bib"=This importer enables "--importToOpen someEntry.bib" +This\ importer\ parses\ data\ of\ the\ first\ page\ of\ the\ PDF\ and\ creates\ a\ BibTeX\ entry.\ Currently,\ Springer\ and\ IEEE\ formats\ are\ supported.=This importer parses data of the first page of the PDF and creates a BibTeX entry. Currently, Springer and IEEE formats are supported. Exporting\ %0=Exporting %0 Could\ not\ export\ file\ '%0'\ (reason\:\ %1)=Could not export file '%0' (reason: %1) diff --git a/src/test/java/org/jabref/logic/importer/fileformat/InspecImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/InspecImporterTest.java index e4abd486231..2b8b14d4ca1 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/InspecImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/InspecImporterTest.java @@ -118,9 +118,4 @@ public void getCLIId() { public void sGetExtensions() { assertEquals(StandardFileType.TXT, importer.getFileType()); } - - @Test - public void getDescription() { - assertEquals("INSPEC format importer.", importer.getDescription()); - } } diff --git a/src/test/java/org/jabref/logic/importer/fileformat/IsiImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/IsiImporterTest.java index 29f86b5fed0..9c89d6178b7 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/IsiImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/IsiImporterTest.java @@ -60,12 +60,6 @@ public void sGetExtensions() { assertEquals(StandardFileType.ISI, importer.getFileType()); } - @Test - public void getDescription() { - assertEquals("Importer for the ISI Web of Science, INSPEC and Medline format.", - importer.getDescription()); - } - @ParameterizedTest @MethodSource("fileNames") public void isRecognizedFormatAccepted(String fileName) throws IOException { diff --git a/src/test/java/org/jabref/logic/importer/fileformat/MedlineImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/MedlineImporterTest.java index 1e8a2562d88..a971a25bc83 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/MedlineImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/MedlineImporterTest.java @@ -40,9 +40,4 @@ public void getCLIId() { public void sGetExtensions() { assertEquals(StandardFileType.MEDLINE, importer.getFileType()); } - - @Test - public void getDescription() { - assertEquals("Importer for the Medline format.", importer.getDescription()); - } } diff --git a/src/test/java/org/jabref/logic/importer/fileformat/MedlinePlainImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/MedlinePlainImporterTest.java index 7871ef805b1..e23df96ffe4 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/MedlinePlainImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/MedlinePlainImporterTest.java @@ -14,7 +14,6 @@ import org.jabref.logic.bibtex.BibEntryAssert; import org.jabref.logic.importer.ImportFormatPreferences; -import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.types.StandardEntryType; @@ -57,16 +56,6 @@ void setUp() { importer = new MedlinePlainImporter(importFormatPreferences); } - @Test - void sGetExtensions() { - assertEquals(StandardFileType.MEDLINE_PLAIN, importer.getFileType()); - } - - @Test - void getDescription() { - assertEquals("Importer for the MedlinePlain format.", importer.getDescription()); - } - @ParameterizedTest @MethodSource("fileNames") void isRecognizedFormat(String fileName) throws Exception { diff --git a/src/test/java/org/jabref/logic/importer/fileformat/MrDLibImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/MrDLibImporterTest.java index 2a51be11490..0fb7dbd1fad 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/MrDLibImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/MrDLibImporterTest.java @@ -6,7 +6,6 @@ import java.util.List; import org.jabref.logic.importer.ParserResult; -import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.StandardField; @@ -28,21 +27,6 @@ public void setUp() { input = new BufferedReader(new StringReader(testInput)); } - @Test - public void getDescription() { - assertEquals("Takes valid JSON documents from the Mr. DLib API and parses them into a BibEntry", importer.getDescription()); - } - - @Test - public void getName() { - assertEquals("MrDLibImporter", importer.getName()); - } - - @Test - public void getFileExtention() { - assertEquals(StandardFileType.JSON, importer.getFileType()); - } - @Test public void importDatabaseIsYearSetCorrectly() throws IOException { ParserResult parserResult = importer.importDatabase(input); diff --git a/src/test/java/org/jabref/logic/importer/fileformat/MsBibImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/MsBibImporterTest.java index 0d53a2f60b9..143f0c1755e 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/MsBibImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/MsBibImporterTest.java @@ -7,7 +7,7 @@ import java.util.Collections; import java.util.List; -import org.jabref.logic.util.StandardFileType; +import org.jabref.logic.importer.Importer; import org.jabref.model.entry.BibEntry; import org.junit.jupiter.api.Test; @@ -17,54 +17,39 @@ public class MsBibImporterTest { - @Test - public void sGetExtensions() { - MsBibImporter importer = new MsBibImporter(); - assertEquals(StandardFileType.XML, importer.getFileType()); - } - - @Test - public void getDescription() { - MsBibImporter importer = new MsBibImporter(); - assertEquals("Importer for the MS Office 2007 XML bibliography format.", importer.getDescription()); - } + Importer importer = new MsBibImporter(); @Test public final void isNotRecognizedFormat() throws Exception { - MsBibImporter testImporter = new MsBibImporter(); List notAccepted = Arrays.asList("CopacImporterTest1.txt", "IsiImporterTest1.isi", "IsiImporterTestInspec.isi", "emptyFile.xml", "IsiImporterTestWOS.isi"); for (String s : notAccepted) { Path file = Path.of(MsBibImporter.class.getResource(s).toURI()); - assertFalse(testImporter.isRecognizedFormat(file)); + assertFalse(importer.isRecognizedFormat(file)); } } @Test public final void importEntriesEmpty() throws IOException, URISyntaxException { - MsBibImporter testImporter = new MsBibImporter(); Path file = Path.of(MsBibImporter.class.getResource("EmptyMsBib_Test.xml").toURI()); - List entries = testImporter.importDatabase(file).getDatabase().getEntries(); + List entries = importer.importDatabase(file).getDatabase().getEntries(); assertEquals(Collections.emptyList(), entries); } @Test public final void importEntriesNotRecognizedFormat() throws IOException, URISyntaxException { - MsBibImporter testImporter = new MsBibImporter(); Path file = Path.of(MsBibImporter.class.getResource("CopacImporterTest1.txt").toURI()); - List entries = testImporter.importDatabase(file).getDatabase().getEntries(); + List entries = importer.importDatabase(file).getDatabase().getEntries(); assertEquals(0, entries.size()); } @Test public final void getFormatName() { - MsBibImporter testImporter = new MsBibImporter(); - assertEquals("MSBib", testImporter.getName()); + assertEquals("MSBib", importer.getName()); } @Test public final void getCommandLineId() { - MsBibImporter testImporter = new MsBibImporter(); - assertEquals("msbib", testImporter.getId()); + assertEquals("msbib", importer.getId()); } } diff --git a/src/test/java/org/jabref/logic/importer/fileformat/OvidImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/OvidImporterTest.java index 4b680c0d7a0..76593200034 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/OvidImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/OvidImporterTest.java @@ -11,13 +11,11 @@ import java.util.stream.Stream; import org.jabref.logic.bibtex.BibEntryAssert; -import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.field.UnknownField; import org.jabref.model.entry.types.StandardEntryType; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -28,7 +26,7 @@ public class OvidImporterTest { private static final String FILE_ENDING = ".txt"; - private OvidImporter importer; + private OvidImporter importer = new OvidImporter(); private static Stream fileNames() throws IOException { Predicate fileName = name -> name.startsWith("OvidImporterTest") @@ -42,31 +40,6 @@ private static Stream invalidFileNames() throws IOException { return ImporterTestEngine.getTestFiles(fileName).stream(); } - @BeforeEach - public void setUp() { - importer = new OvidImporter(); - } - - @Test - public void getFormatName() { - assertEquals("Ovid", importer.getName()); - } - - @Test - public void getCLIId() { - assertEquals("ovid", importer.getId()); - } - - @Test - public void sGetExtensions() { - assertEquals(StandardFileType.TXT, importer.getFileType()); - } - - @Test - public void getDescription() { - assertEquals("Imports an Ovid file.", importer.getDescription()); - } - @ParameterizedTest @MethodSource("fileNames") public void isRecognizedFormatAccept(String fileName) throws IOException, URISyntaxException { diff --git a/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java index cc5baf59824..83e6466f411 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/PdfContentImporterTest.java @@ -5,7 +5,6 @@ import java.util.List; import java.util.Optional; -import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.LinkedFile; import org.jabref.model.entry.field.StandardField; @@ -25,17 +24,6 @@ void setUp() { importer = new PdfContentImporter(); } - @Test - void sGetExtensions() { - assertEquals(StandardFileType.PDF, importer.getFileType()); - } - - @Test - void getDescription() { - assertEquals("PdfContentImporter parses data of the first page of the PDF and creates a BibTeX entry. Currently, Springer and IEEE formats are supported.", - importer.getDescription()); - } - @Test void doesNotHandleEncryptedPdfs() throws Exception { Path file = Path.of(PdfContentImporter.class.getResource("/pdfs/encrypted.pdf").toURI()); diff --git a/src/test/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporterTest.java index e7433323f1c..82e79d10698 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/PdfEmbeddedBibFileImporterTest.java @@ -7,7 +7,6 @@ import javafx.collections.FXCollections; import org.jabref.logic.importer.ImportFormatPreferences; -import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.types.StandardEntryType; @@ -31,17 +30,6 @@ void setUp() { importer = new PdfEmbeddedBibFileImporter(importFormatPreferences); } - @Test - void sGetExtensions() { - assertEquals(StandardFileType.PDF, importer.getFileType()); - } - - @Test - void getDescription() { - assertEquals("PdfEmbeddedBibFileImporter imports an embedded Bib-File from the PDF.", - importer.getDescription()); - } - @Test void doesNotHandleEncryptedPdfs() throws Exception { Path file = Path.of(PdfEmbeddedBibFileImporter.class.getResource("/pdfs/encrypted.pdf").toURI()); diff --git a/src/test/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporterTest.java index 7cc2e714bb3..6951e6bd64a 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporterTest.java @@ -43,17 +43,6 @@ void setUp() { importer = new PdfMergeMetadataImporter(importFormatPreferences); } - @Test - void sGetExtensions() { - assertEquals(StandardFileType.PDF, importer.getFileType()); - } - - @Test - void getDescription() { - assertEquals("PdfMergeMetadataImporter imports metadata from a PDF using multiple strategies and merging the result.", - importer.getDescription()); - } - @Test void doesNotHandleEncryptedPdfs() throws Exception { Path file = Path.of(PdfMergeMetadataImporter.class.getResource("/pdfs/encrypted.pdf").toURI()); diff --git a/src/test/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporterTest.java index 15fa9aabbda..a5ddb3ec89b 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/PdfVerbatimBibTextImporterTest.java @@ -7,7 +7,6 @@ import javafx.collections.FXCollections; import org.jabref.logic.importer.ImportFormatPreferences; -import org.jabref.logic.util.StandardFileType; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.LinkedFile; import org.jabref.model.entry.field.StandardField; @@ -32,17 +31,6 @@ void setUp() { importer = new PdfVerbatimBibTextImporter(importFormatPreferences); } - @Test - void sGetExtensions() { - assertEquals(StandardFileType.PDF, importer.getFileType()); - } - - @Test - void getDescription() { - assertEquals("PdfVerbatimBibTextImporter imports a verbatim BibTeX entry from the first page of the PDF.", - importer.getDescription()); - } - @Test void doesNotHandleEncryptedPdfs() throws Exception { Path file = Path.of(PdfVerbatimBibTextImporter.class.getResource("/pdfs/encrypted.pdf").toURI()); diff --git a/src/test/java/org/jabref/logic/importer/fileformat/PdfXmpImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/PdfXmpImporterTest.java index 2e097bd13eb..5ae13cce82a 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/PdfXmpImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/PdfXmpImporterTest.java @@ -9,7 +9,6 @@ import java.util.stream.Stream; import org.jabref.logic.importer.ParserResult; -import org.jabref.logic.util.StandardFileType; import org.jabref.logic.xmp.XmpPreferences; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.StandardField; @@ -38,21 +37,6 @@ public void setUp() { importer = new PdfXmpImporter(mock(XmpPreferences.class)); } - @Test - public void getFormatName() { - assertEquals("XMP-annotated PDF", importer.getName()); - } - - @Test - public void sGetExtensions() { - assertEquals(StandardFileType.PDF, importer.getFileType()); - } - - @Test - public void getDescription() { - assertEquals("Wraps the XMPUtility function to be used as an Importer.", importer.getDescription()); - } - @Disabled("XMP reader prints warnings to the logger when parsing does not work") @Test public void importEncryptedFileReturnsError() throws URISyntaxException { diff --git a/src/test/java/org/jabref/logic/importer/fileformat/RISImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/RISImporterTest.java index 4f29d20567a..7ec30c0ca81 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/RISImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/RISImporterTest.java @@ -4,42 +4,13 @@ import java.net.URISyntaxException; import java.nio.file.Path; -import org.jabref.logic.util.StandardFileType; - -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; public class RISImporterTest { - private RisImporter importer; - - @BeforeEach - public void setUp() { - importer = new RisImporter(); - } - - @Test - public void getFormatName() { - assertEquals("RIS", importer.getName()); - } - - @Test - public void getCLIId() { - assertEquals("ris", importer.getId()); - } - - @Test - public void sGetExtensions() { - assertEquals(StandardFileType.RIS, importer.getFileType()); - } - - @Test - public void getDescription() { - assertEquals("Imports a Biblioscape Tag File.", importer.getDescription()); - } + private RisImporter importer = new RisImporter(); @Test public void ifNotRecognizedFormat() throws IOException, URISyntaxException { diff --git a/src/test/java/org/jabref/logic/importer/fileformat/RepecNepImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/RepecNepImporterTest.java index 7768bbef2b2..8c09d43d142 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/RepecNepImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/RepecNepImporterTest.java @@ -5,15 +5,12 @@ import java.util.stream.Stream; import org.jabref.logic.importer.ImportFormatPreferences; -import org.jabref.logic.util.StandardFileType; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.Answers; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -59,25 +56,4 @@ public void isNotRecognizedFormat(String fileName) throws IOException { public void importEntries(String fileName) throws Exception { ImporterTestEngine.testImportEntries(testImporter, fileName, FILE_ENDING); } - - @Test - public final void getFormatName() { - assertEquals("REPEC New Economic Papers (NEP)", testImporter.getName()); - } - - @Test - public final void getCliId() { - assertEquals("repecnep", testImporter.getId()); - } - - @Test - public void getExtension() { - assertEquals(StandardFileType.TXT, testImporter.getFileType()); - } - - @Test - public final void getDescription() { - assertEquals("Imports a New Economics Papers-Message from the REPEC-NEP Service.", - testImporter.getDescription()); - } } From 8d4d3865ad436b474cd8849f869dbb9d8310d99c Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 6 Aug 2024 20:56:19 +0200 Subject: [PATCH 13/16] Fix typos --- src/main/java/org/jabref/logic/importer/WebFetchers.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/logic/importer/WebFetchers.java b/src/main/java/org/jabref/logic/importer/WebFetchers.java index 52fb01336cb..85dabf130bc 100644 --- a/src/main/java/org/jabref/logic/importer/WebFetchers.java +++ b/src/main/java/org/jabref/logic/importer/WebFetchers.java @@ -178,7 +178,7 @@ public static SortedSet getEntryBasedFetchers(ImporterPrefere set.add(new SemanticScholar(importerPreferences)); set.add(new ResearchGate(importFormatPreferences)); - // Uses the PDFs - adn then uses the parsed Dpi. Makes it 10% a web fetcher. + // Uses the PDFs - and then uses the parsed DOI. Makes it 10% a web fetcher. // We list it here, because otherwise, it would be much more effort (other UI button, ...) set.add(new PdfMergeMetadataImporter.EntryBasedFetcherWrapper(importFormatPreferences, filePreferences, databaseContext)); From 46c91978423463ec07d375e9411039d493f84262 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 6 Aug 2024 22:17:41 +0200 Subject: [PATCH 14/16] Add test --- .../org/jabref/model/entry/LinkedFile.java | 7 +++ .../jabref/logic/util/io/FileUtilTest.java | 48 ++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/model/entry/LinkedFile.java b/src/main/java/org/jabref/model/entry/LinkedFile.java index b27982b73ee..aedc2394119 100644 --- a/src/main/java/org/jabref/model/entry/LinkedFile.java +++ b/src/main/java/org/jabref/model/entry/LinkedFile.java @@ -88,6 +88,13 @@ public LinkedFile(String description, URL link, String fileType, String sourceUr this(description, Objects.requireNonNull(link).toString(), Objects.requireNonNull(fileType), Objects.requireNonNull(sourceUrl)); } + /** + * Constructs a new LinkedFile with an empty file type and an empty description + */ + public LinkedFile(Path link) { + this("", Objects.requireNonNull(link), ""); + } + public StringProperty descriptionProperty() { return description; } diff --git a/src/test/java/org/jabref/logic/util/io/FileUtilTest.java b/src/test/java/org/jabref/logic/util/io/FileUtilTest.java index 10c601dc3dd..c759607097a 100644 --- a/src/test/java/org/jabref/logic/util/io/FileUtilTest.java +++ b/src/test/java/org/jabref/logic/util/io/FileUtilTest.java @@ -12,19 +12,26 @@ import org.jabref.architecture.AllowedToUseLogic; import org.jabref.logic.util.OS; +import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.LinkedFile; import org.jabref.model.entry.field.StandardField; +import org.jabref.preferences.FilePreferences; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; @AllowedToUseLogic("uses OS from logic package") class FileUtilTest { @@ -334,7 +341,6 @@ void getLinkedDirNamePatternEmpty() { @Test void isBibFile() throws IOException { Path bibFile = Files.createFile(rootDir.resolve("test.bib")); - assertTrue(FileUtil.isBibFile(bibFile)); } @@ -345,7 +351,7 @@ void isNotBibFile() throws IOException { } @Test - void findinPath() { + void findInPath() { Optional resultPath1 = FileUtil.findSingleFileRecursively("existingTestFile.txt", rootDir); assertEquals(resultPath1.get().toString(), existingTestFile.toString()); } @@ -421,6 +427,44 @@ public void testCTemp() { } } + @TempDir + static Path bibTempDir; + + /** + * @implNote Tests inspired by {@link org.jabref.model.database.BibDatabaseContextTest#getFileDirectoriesWithRelativeMetadata} + */ + public static Stream relativize() { + Path bibPath = bibTempDir.resolve("bibliography.bib"); + Path filesPath = bibTempDir.resolve("files").resolve("pdfs"); + + BibDatabaseContext database = new BibDatabaseContext(); + database.setDatabasePath(bibPath); + database.getMetaData().setDefaultFileDirectory(filesPath.toString()); + + FilePreferences fileDirPrefs = mock(FilePreferences.class); + when(fileDirPrefs.shouldStoreFilesRelativeToBibFile()).thenReturn(true); + + Path testPdf = filesPath.resolve("test.pdf"); + BibEntry source1 = new BibEntry().withFiles(List.of(new LinkedFile(testPdf))); + BibEntry target1 = new BibEntry().withFiles(List.of(new LinkedFile(filesPath.relativize(testPdf)))); + + testPdf = bibPath.resolve("test.pdf"); + BibEntry source2 = new BibEntry().withFiles(List.of(new LinkedFile(testPdf))); + BibEntry target2 = new BibEntry().withFiles(List.of(new LinkedFile(bibTempDir.relativize(testPdf)))); + + return Stream.of( + Arguments.of(List.of(target1), List.of(source1), database, fileDirPrefs), + Arguments.of(List.of(target2), List.of(source2), database, fileDirPrefs) + ); + } + + @ParameterizedTest + @MethodSource + public void relativize(List expected, List entries, BibDatabaseContext databaseContext, FilePreferences filePreferences) { + List actual = FileUtil.relativize(entries, databaseContext, filePreferences); + assertEquals(expected, actual); + } + @ParameterizedTest @ValueSource(strings = {"/mnt/tmp/test.pdf"}) public void legalPaths(String fileName) { From 49da3f099983fd2d0a3c02ac568c7712c90037db Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Tue, 6 Aug 2024 22:43:44 +0200 Subject: [PATCH 15/16] fix test --- src/main/java/org/jabref/logic/util/StandardFileType.java | 1 - .../logic/importer/ImportFormatReaderIntegrationTest.java | 1 - .../logic/importer/fileformat/BibtexImporterTest.java | 6 ------ 3 files changed, 8 deletions(-) diff --git a/src/main/java/org/jabref/logic/util/StandardFileType.java b/src/main/java/org/jabref/logic/util/StandardFileType.java index e0464c4d1eb..a18af13513d 100644 --- a/src/main/java/org/jabref/logic/util/StandardFileType.java +++ b/src/main/java/org/jabref/logic/util/StandardFileType.java @@ -15,7 +15,6 @@ public enum StandardFileType implements FileType { MEDLINE("Medline", "nbib", "xml"), MEDLINE_PLAIN("Medline Plain", "nbib", "txt"), PUBMED("Pubmed", "fcgi"), - SILVER_PLATTER("SilverPlatter", "dat", "txt"), AUX("Aux file", "aux"), BIBTEX_DB("Bibtex library", "bib"), BST("BibTeX-Style file", "bst"), diff --git a/src/test/java/org/jabref/logic/importer/ImportFormatReaderIntegrationTest.java b/src/test/java/org/jabref/logic/importer/ImportFormatReaderIntegrationTest.java index 7bbef2de9b4..e9548dc9667 100644 --- a/src/test/java/org/jabref/logic/importer/ImportFormatReaderIntegrationTest.java +++ b/src/test/java/org/jabref/logic/importer/ImportFormatReaderIntegrationTest.java @@ -62,7 +62,6 @@ private static Stream importFormats() { Collection result = new ArrayList<>(); result.add(new Object[]{"fileformat/RisImporterTest1.ris", "ris", 1}); result.add(new Object[]{"fileformat/IsiImporterTest1.isi", "isi", 1}); - result.add(new Object[]{"fileformat/SilverPlatterImporterTest1.txt", "silverplatter", 1}); result.add(new Object[]{"fileformat/RepecNepImporterTest2.txt", "repecnep", 1}); result.add(new Object[]{"fileformat/OvidImporterTest3.txt", "ovid", 1}); result.add(new Object[]{"fileformat/Endnote.entries.enw", "refer", 5}); diff --git a/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java index 50e82e542c7..a0a79a6cafe 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java @@ -130,12 +130,6 @@ public void sGetExtensions() { assertEquals(StandardFileType.BIBTEX_DB, importer.getFileType()); } - @Test - public void getDescription() { - assertEquals( - "This importer enables `--importToOpen someEntry.bib`", - importer.getDescription()); - } @Test public void recognizesDatabaseID() throws Exception { From 07b3b7c7ccc428fb043f2e0837cc83b3186a8c03 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Tue, 6 Aug 2024 22:46:46 +0200 Subject: [PATCH 16/16] fix --- .../logic/importer/fileformat/BibtexImporterTest.java | 3 +-- src/test/java/org/jabref/logic/util/io/FileUtilTest.java | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java b/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java index a0a79a6cafe..351ddf1fe9f 100644 --- a/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java +++ b/src/test/java/org/jabref/logic/importer/fileformat/BibtexImporterTest.java @@ -126,11 +126,10 @@ public void getFormatName() { } @Test - public void sGetExtensions() { + public void getExtensions() { assertEquals(StandardFileType.BIBTEX_DB, importer.getFileType()); } - @Test public void recognizesDatabaseID() throws Exception { Path file = Path.of(BibtexImporterTest.class.getResource("AutosavedSharedDatabase.bib").toURI()); diff --git a/src/test/java/org/jabref/logic/util/io/FileUtilTest.java b/src/test/java/org/jabref/logic/util/io/FileUtilTest.java index c759607097a..5e7f4f56e0c 100644 --- a/src/test/java/org/jabref/logic/util/io/FileUtilTest.java +++ b/src/test/java/org/jabref/logic/util/io/FileUtilTest.java @@ -35,6 +35,10 @@ @AllowedToUseLogic("uses OS from logic package") class FileUtilTest { + + @TempDir + static Path bibTempDir; + private final Path nonExistingTestPath = Path.of("nonExistingTestPath"); private Path existingTestFile; private Path otherExistingTestFile; @@ -427,9 +431,6 @@ public void testCTemp() { } } - @TempDir - static Path bibTempDir; - /** * @implNote Tests inspired by {@link org.jabref.model.database.BibDatabaseContextTest#getFileDirectoriesWithRelativeMetadata} */