From 93a7910de12817f5cdeb4eccdcebb30bd333ad85 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Mon, 26 Apr 2021 21:32:52 +0200 Subject: [PATCH 1/5] Fix threading cleanup in performSearch Fixes #7606 --- .../org/jabref/gui/importer/ImportEntriesViewModel.java | 9 ++++++++- .../importer/fetcher/CompositeSearchBasedFetcher.java | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java index 5402e77a4e4..d042d6bf260 100644 --- a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java +++ b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java @@ -3,6 +3,7 @@ import java.io.File; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; import javax.swing.undo.UndoManager; @@ -23,9 +24,11 @@ import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.database.DatabaseMerger; import org.jabref.logic.database.DuplicateCheck; +import org.jabref.logic.importer.ImportCleanup; import org.jabref.logic.importer.ParserResult; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; +import org.jabref.model.database.BibDatabaseMode; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.entry.LinkedFile; @@ -52,6 +55,7 @@ public class ImportEntriesViewModel extends AbstractViewModel { private final PreferencesService preferences; private final BibEntryTypesManager entryTypesManager; + private final ImportCleanup cleanup = new ImportCleanup(BibDatabaseMode.BIBTEX); /** * @param databaseContext the database to import into * @param task the task executed for parsing the selected files(s). @@ -78,10 +82,13 @@ public ImportEntriesViewModel(BackgroundTask task, this.message.bind(task.messageProperty()); task.onSuccess(parserResult -> { + // store the complete parser result (to import groups, ... later on) this.parserResult = parserResult; + + List entries = parserResult.getDatabase().getEntries().stream().map(cleanup::doPostCleanup).collect(Collectors.toList()); // fill in the list for the user, where one can select the entries to import - entries.addAll(parserResult.getDatabase().getEntries()); + entries.addAll(entries); }).onFailure(ex -> { LOGGER.error("Error importing", ex); dialogService.showErrorDialogAndWait(ex); diff --git a/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java b/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java index c616b018cb1..0e3aeb637bd 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java @@ -60,7 +60,6 @@ public List performSearch(QueryNode luceneQuery) throws FetcherExcepti } }) .limit(maximumNumberOfReturnedResults) - .map(cleanup::doPostCleanup) .collect(Collectors.toList()); } } From 76f74cb13dd3f281ec8dd5806edd8b49e61a3f1d Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Mon, 26 Apr 2021 21:54:04 +0200 Subject: [PATCH 2/5] Fix variable --- CHANGELOG.md | 1 + .../java/org/jabref/gui/importer/ImportEntriesViewModel.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23ae191e30d..c1e336b99be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Fixed +- We fixed an issue where an exception occured when importing entries from a web search [#7606](https://github.com/JabRef/jabref/issues/7606) - We fixed an issue where the table column sort order was not properly stored and resulted in unsorted eports [#7524](https://github.com/JabRef/jabref/issues/7524) - We fixed an issue where the value of the field `school` or `institution` would be printed twice in the HTML Export [forum#2634](https://discourse.jabref.org/t/problem-with-exporting-techreport-phdthesis-mastersthesis-to-html/2634) - We fixed an issue preventing to connect to a shared database. [#7570](https://github.com/JabRef/jabref/pull/7570) diff --git a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java index d042d6bf260..be51ab82c96 100644 --- a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java +++ b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java @@ -86,9 +86,9 @@ public ImportEntriesViewModel(BackgroundTask task, // store the complete parser result (to import groups, ... later on) this.parserResult = parserResult; - List entries = parserResult.getDatabase().getEntries().stream().map(cleanup::doPostCleanup).collect(Collectors.toList()); + List resultEntries = parserResult.getDatabase().getEntries().stream().map(cleanup::doPostCleanup).collect(Collectors.toList()); // fill in the list for the user, where one can select the entries to import - entries.addAll(entries); + entries.addAll(resultEntries); }).onFailure(ex -> { LOGGER.error("Error importing", ex); dialogService.showErrorDialogAndWait(ex); From b082e915c07de680a2183585cd9661ecd65aa2cd Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Tue, 27 Apr 2021 08:04:39 +0200 Subject: [PATCH 3/5] use bibdatabase mode --- .../jabref/gui/importer/ImportEntriesViewModel.java | 10 ++++------ .../importer/fetcher/CompositeSearchBasedFetcher.java | 3 --- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java index be51ab82c96..0bd6e9f94c3 100644 --- a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java +++ b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java @@ -28,7 +28,6 @@ import org.jabref.logic.importer.ParserResult; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; -import org.jabref.model.database.BibDatabaseMode; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BibEntryTypesManager; import org.jabref.model.entry.LinkedFile; @@ -54,8 +53,8 @@ public class ImportEntriesViewModel extends AbstractViewModel { private final ObservableList entries; private final PreferencesService preferences; private final BibEntryTypesManager entryTypesManager; + private ImportCleanup cleanup; - private final ImportCleanup cleanup = new ImportCleanup(BibDatabaseMode.BIBTEX); /** * @param databaseContext the database to import into * @param task the task executed for parsing the selected files(s). @@ -82,13 +81,12 @@ public ImportEntriesViewModel(BackgroundTask task, this.message.bind(task.messageProperty()); task.onSuccess(parserResult -> { - + cleanup = new ImportCleanup(databaseContext.getMode()); // store the complete parser result (to import groups, ... later on) this.parserResult = parserResult; - - List resultEntries = parserResult.getDatabase().getEntries().stream().map(cleanup::doPostCleanup).collect(Collectors.toList()); + List cleanedEntries = parserResult.getDatabase().getEntries().stream().map(cleanup::doPostCleanup).collect(Collectors.toList()); // fill in the list for the user, where one can select the entries to import - entries.addAll(resultEntries); + entries.addAll(cleanedEntries); }).onFailure(ex -> { LOGGER.error("Error importing", ex); dialogService.showErrorDialogAndWait(ex); diff --git a/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java b/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java index 0e3aeb637bd..97506c284a6 100644 --- a/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java +++ b/src/main/java/org/jabref/logic/importer/fetcher/CompositeSearchBasedFetcher.java @@ -8,9 +8,7 @@ import org.jabref.logic.help.HelpFile; import org.jabref.logic.importer.FetcherException; -import org.jabref.logic.importer.ImportCleanup; import org.jabref.logic.importer.SearchBasedFetcher; -import org.jabref.model.database.BibDatabaseMode; import org.jabref.model.entry.BibEntry; import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode; @@ -48,7 +46,6 @@ public Optional getHelpPage() { @Override public List performSearch(QueryNode luceneQuery) throws FetcherException { - ImportCleanup cleanup = new ImportCleanup(BibDatabaseMode.BIBTEX); // All entries have to be converted into one format, this is necessary for the format conversion return fetchers.parallelStream() .flatMap(searchBasedFetcher -> { From 62d9f346985dbfd4f9a17cd3b645545d13ccf224 Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Tue, 27 Apr 2021 12:34:38 +0200 Subject: [PATCH 4/5] cleanup is already done in import handler --- .../java/org/jabref/gui/importer/ImportEntriesViewModel.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java index 0bd6e9f94c3..69b0feec884 100644 --- a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java +++ b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java @@ -3,7 +3,6 @@ import java.io.File; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import javax.swing.undo.UndoManager; @@ -81,12 +80,10 @@ public ImportEntriesViewModel(BackgroundTask task, this.message.bind(task.messageProperty()); task.onSuccess(parserResult -> { - cleanup = new ImportCleanup(databaseContext.getMode()); // store the complete parser result (to import groups, ... later on) this.parserResult = parserResult; - List cleanedEntries = parserResult.getDatabase().getEntries().stream().map(cleanup::doPostCleanup).collect(Collectors.toList()); // fill in the list for the user, where one can select the entries to import - entries.addAll(cleanedEntries); + entries.addAll(parserResult.getDatabase().getEntries()); }).onFailure(ex -> { LOGGER.error("Error importing", ex); dialogService.showErrorDialogAndWait(ex); From d839970b15c9421e8499943bef27b3bc9ed644ec Mon Sep 17 00:00:00 2001 From: Siedlerchr Date: Tue, 27 Apr 2021 13:21:13 +0200 Subject: [PATCH 5/5] Should fix 1018 --- CHANGELOG.md | 1 + .../java/org/jabref/gui/importer/ImportEntriesViewModel.java | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1e336b99be..22115158579 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Fixed +- we fixed an issue where importing entries would not respect the library mode (BibTeX/biblatex)[#1018](https://github.com/JabRef/jabref/issues/1018) - We fixed an issue where an exception occured when importing entries from a web search [#7606](https://github.com/JabRef/jabref/issues/7606) - We fixed an issue where the table column sort order was not properly stored and resulted in unsorted eports [#7524](https://github.com/JabRef/jabref/issues/7524) - We fixed an issue where the value of the field `school` or `institution` would be printed twice in the HTML Export [forum#2634](https://discourse.jabref.org/t/problem-with-exporting-techreport-phdthesis-mastersthesis-to-html/2634) diff --git a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java index 69b0feec884..5402e77a4e4 100644 --- a/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java +++ b/src/main/java/org/jabref/gui/importer/ImportEntriesViewModel.java @@ -23,7 +23,6 @@ import org.jabref.gui.util.TaskExecutor; import org.jabref.logic.database.DatabaseMerger; import org.jabref.logic.database.DuplicateCheck; -import org.jabref.logic.importer.ImportCleanup; import org.jabref.logic.importer.ParserResult; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; @@ -52,7 +51,6 @@ public class ImportEntriesViewModel extends AbstractViewModel { private final ObservableList entries; private final PreferencesService preferences; private final BibEntryTypesManager entryTypesManager; - private ImportCleanup cleanup; /** * @param databaseContext the database to import into