From c3c79feea0dca0116d72443ff92d2fab237c893d Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2019 10:47:27 +0100 Subject: [PATCH 01/19] Bump pdfbox from 2.0.17 to 2.0.18 (#5797) Bumps pdfbox from 2.0.17 to 2.0.18. Signed-off-by: dependabot-preview[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a51ff5b753c..8ec0c2788ad 100644 --- a/build.gradle +++ b/build.gradle @@ -110,7 +110,7 @@ dependencies { // Include all jar-files in the 'lib' folder as dependencies compile fileTree(dir: 'lib', includes: ['*.jar']) - compile 'org.apache.pdfbox:pdfbox:2.0.17' + compile 'org.apache.pdfbox:pdfbox:2.0.18' compile 'org.apache.pdfbox:fontbox:2.0.17' compile 'org.apache.pdfbox:xmpbox:2.0.17' From 836b3e7a192a64644ba7d22ded3c553e1eee2fe3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2019 10:56:27 +0100 Subject: [PATCH 02/19] Bump guava from 28.1-jre to 28.2-jre (#5793) Bumps [guava](https://github.com/google/guava) from 28.1-jre to 28.2-jre. - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) Signed-off-by: dependabot-preview[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8ec0c2788ad..15531457182 100644 --- a/build.gradle +++ b/build.gradle @@ -149,7 +149,7 @@ dependencies { exclude module: 'oraclepki' } - compile ('com.google.guava:guava:28.1-jre') { + compile ('com.google.guava:guava:28.2-jre') { // TODO: Remove this as soon as https://github.com/google/guava/issues/2960 is fixed exclude module: "jsr305" } From 279df6ab873ede6a463050df4cd5b967ad3b42c1 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2019 11:25:03 +0100 Subject: [PATCH 03/19] Bump xmpbox from 2.0.17 to 2.0.18 (#5795) Bumps xmpbox from 2.0.17 to 2.0.18. Signed-off-by: dependabot-preview[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 15531457182..439a80fc85c 100644 --- a/build.gradle +++ b/build.gradle @@ -112,7 +112,7 @@ dependencies { compile 'org.apache.pdfbox:pdfbox:2.0.18' compile 'org.apache.pdfbox:fontbox:2.0.17' - compile 'org.apache.pdfbox:xmpbox:2.0.17' + compile 'org.apache.pdfbox:xmpbox:2.0.18' compile group: 'org.apache.commons', name: 'commons-csv', version: '1.7' From eb3d2ace019125347b355cdbd4752e9545d5c5e3 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2019 11:31:35 +0100 Subject: [PATCH 04/19] Bump fontbox from 2.0.17 to 2.0.18 (#5796) Bumps fontbox from 2.0.17 to 2.0.18. Signed-off-by: dependabot-preview[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 439a80fc85c..47834c09742 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { compile fileTree(dir: 'lib', includes: ['*.jar']) compile 'org.apache.pdfbox:pdfbox:2.0.18' - compile 'org.apache.pdfbox:fontbox:2.0.17' + compile 'org.apache.pdfbox:fontbox:2.0.18' compile 'org.apache.pdfbox:xmpbox:2.0.18' compile group: 'org.apache.commons', name: 'commons-csv', version: '1.7' From 7a53b3af4dff7ef6c906e20ed42d8932d3925d78 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2019 11:37:30 +0100 Subject: [PATCH 05/19] Bump checkstyle from 8.27 to 8.28 (#5794) * Bump checkstyle from 8.27 to 8.28 Bumps [checkstyle](https://github.com/checkstyle/checkstyle) from 8.27 to 8.28. - [Release notes](https://github.com/checkstyle/checkstyle/releases) - [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-8.27...checkstyle-8.28) Signed-off-by: dependabot-preview[bot] * Remove removed properties * Update checkstyle.xml Co-authored-by: Tobias Diez --- build.gradle | 2 +- config/checkstyle/checkstyle.xml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 47834c09742..389cd30fd49 100644 --- a/build.gradle +++ b/build.gradle @@ -225,7 +225,7 @@ dependencies { testCompile "org.testfx:testfx-junit5:4.0.17-alpha-SNAPSHOT" testCompile "org.hamcrest:hamcrest-library:2.2" - checkstyle 'com.puppycrawl.tools:checkstyle:8.27' + checkstyle 'com.puppycrawl.tools:checkstyle:8.28' xjc group: 'org.glassfish.jaxb', name: 'jaxb-xjc', version: '2.3.2' jython 'org.python:jython-standalone:2.7.1' } diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 046936eb127..e57c9dd8bc2 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -20,11 +20,8 @@ - - - From 371a863d18944d0fc760a6fcb03ba14f051c3b98 Mon Sep 17 00:00:00 2001 From: Abraham Polk Date: Mon, 30 Dec 2019 11:38:24 -0500 Subject: [PATCH 06/19] [WIP] Batch Insert entries (#5691) * Initial changes to remove entry functionality * Fix logic error in KeyChangeListener * Fix logic error in BasePanel * Changes to tests * Fix typo * Move remove entry calls to batch version * Un-propagate for loop in KeyChangeListener * Finalize changes to SharedEntriesNotPresentEvent * Fix bug * Fix other compile errors * Fix bug and update tests * Fix tests * Fix test omission * Update l10n * For loop to citationStyle * Add comment for method not working * Clarify var name * Allow single entry for undo * Replace compound edit undo with normal undo in BasePanel * Typo * Simplify loop in DBMSSynchronizer * Use if instead of stream * Pluralize Javadoc * EntryEvent -> EntriesEvent in Javadoc, comments, and var names * Make imports explicit in BasePanel * Batch delete to SQL * Final EntriesRemovedEvent fixes * Fix checkStyleMain * More checkStyle fixes * Initial changes to batch insertEntries calls * More fixes * More batching insertEntry * Move List coercion into DuplicateSearchResult method * Even more batching insertEntry * DefaultAuxParser batch insertEntry * MrDLibImporter batch insertEntry * Add comment about usage of BasePanel.insertEntry * Fix typo * Fix pesky BibDatabaseTest error with setStrings * Fixed BibDatabase Javadoc * Finish master merge, start changing DBMS tests * Add comment * Final fixes including checkStyle * Add DBMSProcessor tests * Fix checkStyleTest * Finished batching calls to insertEntries * Minor change for consistency * Update comments * Update comment * Another update comment * EntryAddedEvent -> EntriesAddedEvnet and removed AllInsertsFinishedEvent * Fixed some tests, aux parser still failing * AuxParserTest passes now * Fix checkstyle * Make corrections * Typo * More streaming * Add UndoableInsertEntries constructor * Fix bug * Get rid of "Integrity Check Failed" info * Properly close databases in test to avoid database listener errors * Fix database tests by adding entries after firing EntryAddedEvent * Remove redundant DBMS connection closure from DBMSSychronizerTest * Merge test resources from master * Remove firstEntry hack * Remove duplicate code from paste() by and pluralize insertEntries() in BasePanel * Comment fix * Clarify BasePanel insertEntries JavaDoc * Rename vars * Rename vars * Remove unnecessary TODO and rename EntriesRemovedListener * Merge fixes * Remove old comment * checkStyle fixes --- src/main/java/org/jabref/gui/BasePanel.java | 59 ++++++++------ .../autocompleter/AutoCompleteUpdater.java | 12 ++- .../gui/collab/EntryAddChangeViewModel.java | 4 +- .../gui/collab/EntryChangeViewModel.java | 6 +- .../duplicationFinder/DuplicateSearch.java | 8 +- .../gui/externalfiles/ImportHandler.java | 6 +- .../org/jabref/gui/importer/ImportAction.java | 11 +-- .../actions/AppendDatabaseAction.java | 14 ++-- .../org/jabref/gui/maintable/MainTable.java | 32 +------- .../gui/mergeentries/MergeEntriesAction.java | 4 +- .../org/jabref/gui/openoffice/OOBibBase.java | 9 ++- .../SpecialFieldDatabaseChangeListener.java | 38 +++++---- .../gui/undo/UndoableInsertEntries.java | 80 +++++++++++++++++++ .../jabref/gui/undo/UndoableInsertEntry.java | 52 ------------ .../logic/auxparser/DefaultAuxParser.java | 64 ++++++++++----- .../importer/fileformat/MrDLibImporter.java | 4 +- .../jabref/logic/shared/DBMSSynchronizer.java | 12 +-- .../jabref/model/database/BibDatabase.java | 34 ++++---- .../jabref/model/database/BibDatabases.java | 13 +-- .../model/database/DuplicationChecker.java | 17 ++-- .../model/database/KeyCollisionException.java | 9 ++- .../event/AllInsertsFinishedEvent.java | 29 ------- .../database/event/EntriesAddedEvent.java | 41 ++++++++++ .../database/event/EntriesRemovedEvent.java | 6 +- .../model/database/event/EntryAddedEvent.java | 29 ------- .../model/entry/event/EntriesEvent.java | 4 - .../model/entry/event/EntryChangedEvent.java | 4 + src/main/resources/l10n/JabRef_en.properties | 4 +- .../gui/UpdateTimestampListenerTest.java | 2 +- .../logic/shared/DBMSSynchronizerTest.java | 3 +- .../model/database/BibDatabaseTest.java | 4 +- .../jabref/model/event/TestEventListener.java | 19 ++--- 32 files changed, 321 insertions(+), 312 deletions(-) create mode 100644 src/main/java/org/jabref/gui/undo/UndoableInsertEntries.java delete mode 100644 src/main/java/org/jabref/gui/undo/UndoableInsertEntry.java delete mode 100644 src/main/java/org/jabref/model/database/event/AllInsertsFinishedEvent.java create mode 100644 src/main/java/org/jabref/model/database/event/EntriesAddedEvent.java delete mode 100644 src/main/java/org/jabref/model/database/event/EntryAddedEvent.java diff --git a/src/main/java/org/jabref/gui/BasePanel.java b/src/main/java/org/jabref/gui/BasePanel.java index ff63746c6cc..efec6542ab0 100644 --- a/src/main/java/org/jabref/gui/BasePanel.java +++ b/src/main/java/org/jabref/gui/BasePanel.java @@ -59,7 +59,7 @@ import org.jabref.gui.undo.CountingUndoManager; import org.jabref.gui.undo.NamedCompound; import org.jabref.gui.undo.UndoableFieldChange; -import org.jabref.gui.undo.UndoableInsertEntry; +import org.jabref.gui.undo.UndoableInsertEntries; import org.jabref.gui.undo.UndoableRemoveEntries; import org.jabref.gui.util.DefaultTaskExecutor; import org.jabref.gui.worker.SendAsEMailAction; @@ -80,8 +80,8 @@ import org.jabref.model.database.KeyCollisionException; import org.jabref.model.database.event.BibDatabaseContextChangedEvent; import org.jabref.model.database.event.CoarseChangeFilter; +import org.jabref.model.database.event.EntriesAddedEvent; import org.jabref.model.database.event.EntriesRemovedEvent; -import org.jabref.model.database.event.EntryAddedEvent; import org.jabref.model.database.shared.DatabaseLocation; import org.jabref.model.database.shared.DatabaseSynchronizer; import org.jabref.model.entry.BibEntry; @@ -168,7 +168,7 @@ public BasePanel(JabRefFrame frame, BasePanelPreferences preferences, BibDatabas setupActions(); this.getDatabase().registerListener(new SearchListener()); - this.getDatabase().registerListener(new EntryRemovedListener()); + this.getDatabase().registerListener(new EntriesRemovedListener()); // ensure that at each addition of a new entry, the entry is added to the groups interface this.bibDatabaseContext.getDatabase().registerListener(new GroupTreeListener()); @@ -605,29 +605,39 @@ public void registerUndoableChanges(List changes) { } } + public void insertEntry(final BibEntry bibEntry) { + if (bibEntry != null) { + insertEntries(Collections.singletonList(bibEntry)); + } + } + /** - * This method is called from JabRefFrame when the user wants to create a new entry. + * This method is called from JabRefFrame when the user wants to create a new entry or entries. + * It is necessary when the user would expect the added entry or one of the added entries + * to be selected in the entry editor * - * @param bibEntry The new entry. + * @param entries The new entries. */ - public void insertEntry(final BibEntry bibEntry) { - if (bibEntry != null) { + + public void insertEntries(final List entries) { + if (!entries.isEmpty()) { try { - bibDatabaseContext.getDatabase().insertEntry(bibEntry); + bibDatabaseContext.getDatabase().insertEntries(entries); // Set owner and timestamp - UpdateField.setAutomaticFields(bibEntry, true, true, Globals.prefs.getUpdateFieldPreferences()); - - // Create an UndoableInsertEntry object. - getUndoManager().addEdit(new UndoableInsertEntry(bibDatabaseContext.getDatabase(), bibEntry)); + for (BibEntry entry : entries) { + UpdateField.setAutomaticFields(entry, true, true, Globals.prefs.getUpdateFieldPreferences()); + } + // Create an UndoableInsertEntries object. + getUndoManager().addEdit(new UndoableInsertEntries(bibDatabaseContext.getDatabase(), entries)); markBaseChanged(); // The database just changed. if (Globals.prefs.getBoolean(JabRefPreferences.AUTO_OPEN_FORM)) { - showAndEdit(bibEntry); + showAndEdit(entries.get(0)); } - clearAndSelect(bibEntry); + clearAndSelect(entries.get(0)); } catch (KeyCollisionException ex) { - LOGGER.info("Collision for bibtex key" + bibEntry.getId(), ex); + LOGGER.info("Collision for bibtex key" + ex.getId(), ex); } } } @@ -1111,22 +1121,21 @@ public void searchAndOpen() { private class GroupTreeListener { @Subscribe - public void listen(EntryAddedEvent addedEntryEvent) { - // if the added entry is an undo don't add it to the current group - if (addedEntryEvent.getEntriesEventSource() == EntriesEventSource.UNDO) { + public void listen(EntriesAddedEvent addedEntriesEvent) { + // if the event is an undo, don't add it to the current group + if (addedEntriesEvent.getEntriesEventSource() == EntriesEventSource.UNDO) { return; } - // Automatically add new entry to the selected group (or set of groups) + // Automatically add new entries to the selected group (or set of groups) if (Globals.prefs.getBoolean(JabRefPreferences.AUTO_ASSIGN_GROUP)) { - final List entries = Collections.singletonList(addedEntryEvent.getBibEntry()); Globals.stateManager.getSelectedGroup(bibDatabaseContext).forEach( - selectedGroup -> selectedGroup.addEntriesToGroup(entries)); + selectedGroup -> selectedGroup.addEntriesToGroup(addedEntriesEvent.getBibEntries())); } } } - private class EntryRemovedListener { + private class EntriesRemovedListener { @Subscribe public void listen(EntriesRemovedEvent entriesRemovedEvent) { @@ -1141,8 +1150,8 @@ public void listen(EntriesRemovedEvent entriesRemovedEvent) { private class SearchAutoCompleteListener { @Subscribe - public void listen(EntryAddedEvent addedEntryEvent) { - DefaultTaskExecutor.runInJavaFXThread(() -> searchAutoCompleter.indexEntry(addedEntryEvent.getBibEntry())); + public void listen(EntriesAddedEvent addedEntriesEvent) { + DefaultTaskExecutor.runInJavaFXThread(() -> addedEntriesEvent.getBibEntries().forEach(entry -> searchAutoCompleter.indexEntry(entry))); } @Subscribe @@ -1158,7 +1167,7 @@ public void listen(EntryChangedEvent entryChangedEvent) { private class SearchListener { @Subscribe - public void listen(EntryAddedEvent addedEntryEvent) { + public void listen(EntriesAddedEvent addedEntryEvent) { DefaultTaskExecutor.runInJavaFXThread(() -> frame.getGlobalSearchBar().performSearch()); } diff --git a/src/main/java/org/jabref/gui/autocompleter/AutoCompleteUpdater.java b/src/main/java/org/jabref/gui/autocompleter/AutoCompleteUpdater.java index 7fe7fec4aba..7ace3ef5bba 100644 --- a/src/main/java/org/jabref/gui/autocompleter/AutoCompleteUpdater.java +++ b/src/main/java/org/jabref/gui/autocompleter/AutoCompleteUpdater.java @@ -1,6 +1,9 @@ package org.jabref.gui.autocompleter; -import org.jabref.model.database.event.EntryAddedEvent; +import java.util.List; + +import org.jabref.model.database.event.EntriesAddedEvent; +import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.event.EntryChangedEvent; import com.google.common.eventbus.Subscribe; @@ -17,8 +20,11 @@ public AutoCompleteUpdater(SuggestionProviders suggestionProviders) { } @Subscribe - public void listen(EntryAddedEvent addedEntryEvent) { - suggestionProviders.indexEntry(addedEntryEvent.getBibEntry()); + public void listen(EntriesAddedEvent entryAddedEvent) { + List entries = entryAddedEvent.getBibEntries(); + for (BibEntry entry : entries) { + suggestionProviders.indexEntry(entry); + } } @Subscribe diff --git a/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java b/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java index cb41f3d4d0a..ea28f4e9d1d 100644 --- a/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java +++ b/src/main/java/org/jabref/gui/collab/EntryAddChangeViewModel.java @@ -6,7 +6,7 @@ import org.jabref.JabRefGUI; import org.jabref.gui.preview.PreviewViewer; import org.jabref.gui.undo.NamedCompound; -import org.jabref.gui.undo.UndoableInsertEntry; +import org.jabref.gui.undo.UndoableInsertEntries; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -26,7 +26,7 @@ public EntryAddChangeViewModel(BibEntry entry) { @Override public void makeChange(BibDatabaseContext database, NamedCompound undoEdit) { database.getDatabase().insertEntry(entry); - undoEdit.addEdit(new UndoableInsertEntry(database.getDatabase(), entry)); + undoEdit.addEdit(new UndoableInsertEntries(database.getDatabase(), entry)); } @Override diff --git a/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java b/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java index 0fa2b5de139..0cdd14bae85 100644 --- a/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java +++ b/src/main/java/org/jabref/gui/collab/EntryChangeViewModel.java @@ -8,7 +8,7 @@ import org.jabref.gui.mergeentries.MergeEntries; import org.jabref.gui.mergeentries.MergeEntries.DefaultRadioButtonSelectionMode; import org.jabref.gui.undo.NamedCompound; -import org.jabref.gui.undo.UndoableInsertEntry; +import org.jabref.gui.undo.UndoableInsertEntries; import org.jabref.logic.l10n.Localization; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -43,8 +43,8 @@ public EntryChangeViewModel(BibEntry entry, BibEntry newEntry, BibDatabaseContex public void makeChange(BibDatabaseContext database, NamedCompound undoEdit) { database.getDatabase().removeEntry(oldEntry); database.getDatabase().insertEntry(mergePanel.getMergeEntry()); - undoEdit.addEdit(new UndoableInsertEntry(database.getDatabase(), oldEntry)); - undoEdit.addEdit(new UndoableInsertEntry(database.getDatabase(), mergePanel.getMergeEntry())); + undoEdit.addEdit(new UndoableInsertEntries(database.getDatabase(), oldEntry)); + undoEdit.addEdit(new UndoableInsertEntries(database.getDatabase(), mergePanel.getMergeEntry())); } @Override diff --git a/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java b/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java index 113fe4f1d2e..2c7dc4db6ab 100644 --- a/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java +++ b/src/main/java/org/jabref/gui/duplicationFinder/DuplicateSearch.java @@ -21,7 +21,7 @@ import org.jabref.gui.duplicationFinder.DuplicateResolverDialog.DuplicateResolverResult; import org.jabref.gui.duplicationFinder.DuplicateResolverDialog.DuplicateResolverType; import org.jabref.gui.undo.NamedCompound; -import org.jabref.gui.undo.UndoableInsertEntry; +import org.jabref.gui.undo.UndoableInsertEntries; import org.jabref.gui.undo.UndoableRemoveEntries; import org.jabref.gui.util.BackgroundTask; import org.jabref.gui.util.DefaultTaskExecutor; @@ -167,10 +167,8 @@ private void handleDuplicates(DuplicateSearchResult result) { } // and adding merged entries: if (!result.getToAdd().isEmpty()) { - for (BibEntry entry : result.getToAdd()) { - panel.getDatabase().insertEntry(entry); - compoundEdit.addEdit(new UndoableInsertEntry(panel.getDatabase(), entry)); - } + compoundEdit.addEdit(new UndoableInsertEntries(panel.getDatabase(), result.getToAdd())); + panel.getDatabase().insertEntries(result.getToAdd()); panel.markBaseChanged(); } diff --git a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java index 365ce487941..6e155fee70e 100644 --- a/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java +++ b/src/main/java/org/jabref/gui/externalfiles/ImportHandler.java @@ -12,7 +12,7 @@ import org.jabref.gui.DialogService; import org.jabref.gui.StateManager; import org.jabref.gui.externalfiletype.ExternalFileTypes; -import org.jabref.gui.undo.UndoableInsertEntry; +import org.jabref.gui.undo.UndoableInsertEntries; import org.jabref.logic.bibtexkeypattern.BibtexKeyGenerator; import org.jabref.logic.externalfiles.ExternalFilesContentImporter; import org.jabref.logic.importer.ImportFormatPreferences; @@ -94,7 +94,7 @@ public void importAsNewEntries(List files) { } importEntries(entriesToAdd); - entriesToAdd.forEach(entry -> ce.addEdit(new UndoableInsertEntry(database.getDatabase(), entry))); + ce.addEdit(new UndoableInsertEntries(database.getDatabase(), entriesToAdd)); } ce.end(); undoManager.addEdit(ce); @@ -109,7 +109,7 @@ private BibEntry createEmptyEntryWithLink(Path file) { public void importEntries(List entries) { //TODO: Add undo/redo - //ce.addEdit(new UndoableInsertEntry(panel.getDatabase(), entry)); + //undoManager.addEdit(new UndoableInsertEntries(panel.getDatabase(), entries)); database.getDatabase().insertEntries(entries); diff --git a/src/main/java/org/jabref/gui/importer/ImportAction.java b/src/main/java/org/jabref/gui/importer/ImportAction.java index 7a945fef1f8..2221c2e439c 100644 --- a/src/main/java/org/jabref/gui/importer/ImportAction.java +++ b/src/main/java/org/jabref/gui/importer/ImportAction.java @@ -4,7 +4,6 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -135,9 +134,7 @@ private ParserResult mergeImportResults(List entries = pr.getDatabase().getEntries(); + List entries = pr.getDatabase().getEntries(); anythingUseful = anythingUseful | !entries.isEmpty(); // set timestamp and owner UpdateField.setAutomaticFields(entries, Globals.prefs.getUpdateFieldPreferences()); // set timestamp and owner - for (BibEntry entry : entries) { - database.insertEntry(entry); - } + database.insertEntries(entries); } } diff --git a/src/main/java/org/jabref/gui/importer/actions/AppendDatabaseAction.java b/src/main/java/org/jabref/gui/importer/actions/AppendDatabaseAction.java index 3e066cdece8..e2f60a56aa5 100644 --- a/src/main/java/org/jabref/gui/importer/actions/AppendDatabaseAction.java +++ b/src/main/java/org/jabref/gui/importer/actions/AppendDatabaseAction.java @@ -15,7 +15,7 @@ import org.jabref.gui.actions.BaseAction; import org.jabref.gui.importer.AppendDatabaseDialog; import org.jabref.gui.undo.NamedCompound; -import org.jabref.gui.undo.UndoableInsertEntry; +import org.jabref.gui.undo.UndoableInsertEntries; import org.jabref.gui.undo.UndoableInsertString; import org.jabref.gui.util.BackgroundTask; import org.jabref.gui.util.FileDialogConfiguration; @@ -59,8 +59,7 @@ private static void mergeFromBibtex(BasePanel panel, ParserResult parserResult, boolean importStrings, boolean importGroups, boolean importSelectorWords) throws KeyCollisionException { BibDatabase fromDatabase = parserResult.getDatabase(); - List appendedEntries = new ArrayList<>(); - List originalEntries = new ArrayList<>(); + List entriesToAppend = new ArrayList<>(); BibDatabase database = panel.getDatabase(); NamedCompound ce = new NamedCompound(Localization.lang("Append library")); @@ -74,11 +73,10 @@ private static void mergeFromBibtex(BasePanel panel, ParserResult parserResult, BibEntry entry = (BibEntry) originalEntry.clone(); UpdateField.setAutomaticFields(entry, overwriteOwner, overwriteTimeStamp, Globals.prefs.getUpdateFieldPreferences()); - database.insertEntry(entry); - appendedEntries.add(entry); - originalEntries.add(originalEntry); - ce.addEdit(new UndoableInsertEntry(database, entry)); + entriesToAppend.add(entry); } + database.insertEntries(entriesToAppend); + ce.addEdit(new UndoableInsertEntries(database, entriesToAppend)); } if (importStrings) { @@ -99,7 +97,7 @@ private static void mergeFromBibtex(BasePanel panel, ParserResult parserResult, ExplicitGroup group = new ExplicitGroup("Imported", GroupHierarchyType.INDEPENDENT, Globals.prefs.getKeywordDelimiter()); newGroups.setGroup(group); - group.add(appendedEntries); + group.add(entriesToAppend); } catch (IllegalArgumentException e) { LOGGER.error("Problem appending entries to group", e); } diff --git a/src/main/java/org/jabref/gui/maintable/MainTable.java b/src/main/java/org/jabref/gui/maintable/MainTable.java index 5eb3b3704fa..935470b1599 100644 --- a/src/main/java/org/jabref/gui/maintable/MainTable.java +++ b/src/main/java/org/jabref/gui/maintable/MainTable.java @@ -32,18 +32,14 @@ import org.jabref.gui.externalfiletype.ExternalFileTypes; import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.keyboard.KeyBindingRepository; -import org.jabref.gui.undo.NamedCompound; -import org.jabref.gui.undo.UndoableInsertEntry; import org.jabref.gui.util.ControlHelper; import org.jabref.gui.util.CustomLocalDragboard; import org.jabref.gui.util.DefaultTaskExecutor; import org.jabref.gui.util.ViewModelTableRowFactory; import org.jabref.logic.l10n.Localization; -import org.jabref.logic.util.UpdateField; import org.jabref.model.database.BibDatabaseContext; -import org.jabref.model.database.event.AllInsertsFinishedEvent; +import org.jabref.model.database.event.EntriesAddedEvent; import org.jabref.model.entry.BibEntry; -import org.jabref.preferences.JabRefPreferences; import com.google.common.eventbus.Subscribe; import org.slf4j.Logger; @@ -130,8 +126,8 @@ public MainTable(MainTableDataModel model, JabRefFrame frame, } @Subscribe - public void listen(AllInsertsFinishedEvent event) { - DefaultTaskExecutor.runInJavaFXThread(() -> clearAndSelect(event.getBibEntry())); + public void listen(EntriesAddedEvent event) { + DefaultTaskExecutor.runInJavaFXThread(() -> clearAndSelect(event.getFirstEntry())); } public void clearAndSelect(BibEntry bibEntry) { @@ -215,28 +211,8 @@ private void clearAndSelectLast() { public void paste() { // Find entries in clipboard List entriesToAdd = Globals.clipboardManager.extractData(); - + panel.insertEntries(entriesToAdd); if (!entriesToAdd.isEmpty()) { - // Add new entries - NamedCompound ce = new NamedCompound((entriesToAdd.size() > 1 ? Localization.lang("paste entries") : Localization.lang("paste entry"))); - for (BibEntry entryToAdd : entriesToAdd) { - UpdateField.setAutomaticFields(entryToAdd, Globals.prefs.getUpdateFieldPreferences()); - - database.getDatabase().insertEntry(entryToAdd); - - ce.addEdit(new UndoableInsertEntry(database.getDatabase(), entryToAdd)); - } - ce.end(); - undoManager.addEdit(ce); - - // Show editor if user want us to do this - BibEntry firstNewEntry = entriesToAdd.get(0); - if (Globals.prefs.getBoolean(JabRefPreferences.AUTO_OPEN_FORM)) { - panel.showAndEdit(firstNewEntry); - } - - // Select and focus first new entry - clearAndSelect(firstNewEntry); this.requestFocus(); } } diff --git a/src/main/java/org/jabref/gui/mergeentries/MergeEntriesAction.java b/src/main/java/org/jabref/gui/mergeentries/MergeEntriesAction.java index 701e8e49599..baca427159e 100644 --- a/src/main/java/org/jabref/gui/mergeentries/MergeEntriesAction.java +++ b/src/main/java/org/jabref/gui/mergeentries/MergeEntriesAction.java @@ -10,7 +10,7 @@ import org.jabref.gui.StateManager; import org.jabref.gui.actions.SimpleCommand; import org.jabref.gui.undo.NamedCompound; -import org.jabref.gui.undo.UndoableInsertEntry; +import org.jabref.gui.undo.UndoableInsertEntries; import org.jabref.gui.undo.UndoableRemoveEntries; import org.jabref.logic.l10n.Localization; import org.jabref.model.entry.BibEntry; @@ -57,7 +57,7 @@ public void execute() { // Create a new entry and add it to the undo stack // Remove the other two entries and add them to the undo stack (which is not working...) NamedCompound ce = new NamedCompound(Localization.lang("Merge entries")); - ce.addEdit(new UndoableInsertEntry(basePanel.getDatabase(), mergedEntry.get())); + ce.addEdit(new UndoableInsertEntries(basePanel.getDatabase(), mergedEntry.get())); List entriesToRemove = Arrays.asList(one, two); ce.addEdit(new UndoableRemoveEntries(basePanel.getDatabase(), entriesToRemove)); basePanel.getDatabase().removeEntries(entriesToRemove); diff --git a/src/main/java/org/jabref/gui/openoffice/OOBibBase.java b/src/main/java/org/jabref/gui/openoffice/OOBibBase.java index 1700f07f722..d22362b7973 100644 --- a/src/main/java/org/jabref/gui/openoffice/OOBibBase.java +++ b/src/main/java/org/jabref/gui/openoffice/OOBibBase.java @@ -227,7 +227,7 @@ private List getTextDocuments() throws NoSuchElementException, Wr if (document != null) { result.add(document); } - } + } return result; } @@ -1273,6 +1273,7 @@ public BibDatabase generateDatabase(List databases) throws NoSuchElementException, WrappedTargetException { BibDatabase resultDatabase = new BibDatabase(); List cited = findCitedKeys(); + List entriesToInsert = new ArrayList(); // For each cited key for (String key : cited) { @@ -1283,13 +1284,13 @@ public BibDatabase generateDatabase(List databases) if (entry.isPresent()) { BibEntry clonedEntry = (BibEntry) entry.get().clone(); // Insert a copy of the entry - resultDatabase.insertEntry(clonedEntry); + entriesToInsert.add(clonedEntry); // Check if the cloned entry has a crossref field clonedEntry.getField(StandardField.CROSSREF).ifPresent(crossref -> { // If the crossref entry is not already in the database if (!resultDatabase.getEntryByKey(crossref).isPresent()) { // Add it if it is in the current library - loopDatabase.getEntryByKey(crossref).ifPresent(resultDatabase::insertEntry); + loopDatabase.getEntryByKey(crossref).ifPresent(entriesToInsert::add); } }); @@ -1298,7 +1299,7 @@ public BibDatabase generateDatabase(List databases) } } } - + resultDatabase.insertEntries(entriesToInsert); return resultDatabase; } diff --git a/src/main/java/org/jabref/gui/specialfields/SpecialFieldDatabaseChangeListener.java b/src/main/java/org/jabref/gui/specialfields/SpecialFieldDatabaseChangeListener.java index ad315c82d9e..f895a2e29e6 100644 --- a/src/main/java/org/jabref/gui/specialfields/SpecialFieldDatabaseChangeListener.java +++ b/src/main/java/org/jabref/gui/specialfields/SpecialFieldDatabaseChangeListener.java @@ -1,6 +1,6 @@ package org.jabref.gui.specialfields; -import org.jabref.model.database.event.EntryAddedEvent; +import org.jabref.model.database.event.EntriesAddedEvent; import com.google.common.eventbus.Subscribe; @@ -9,23 +9,27 @@ public enum SpecialFieldDatabaseChangeListener { INSTANCE; @Subscribe - public void listen(EntryAddedEvent event) { + public void listen(EntriesAddedEvent event) { // TODO - } - /* - if (!Globals.prefs.isKeywordSyncEnabled()) { - return; - } + /* + if (!Globals.prefs.isKeywordSyncEnabled()) { + return; + } + + final List entries = event.getBibEntries(); + // NamedCompound code similar to SpecialFieldUpdateListener + NamedCompound nc = new NamedCompound(Localization.lang("Synchronized special fields based on keywords")); + for (BibEntry entry : entries) { + List changes = SpecialFieldsUtils.syncSpecialFieldsFromKeywords(entry, Globals.prefs.getKeywordDelimiter()); + for (FieldChange change : changes) { + nc.addEdit(new UndoableFieldChange(change)); + } + } + // Don't insert the compound into the undoManager, + // it would be added before the component which undoes the insertion of the entry and creates heavy problems + // (which prohibits the undo the deleting multiple entries) - final BibEntry entry = event.getBibEntry(); - // NamedCompount code similar to SpecialFieldUpdateListener - NamedCompound nc = new NamedCompound(Localization.lang("Synchronized special fields based on keywords")); - List changes = SpecialFieldsUtils.syncSpecialFieldsFromKeywords(entry, Globals.prefs.getKeywordDelimiter()); - for (FieldChange change: changes) { - nc.addEdit(new UndoableFieldChange(change)); + // See if the above is still true after EntryAddedEvent changed to EntriesAddedEvent + */ } - // Don't insert the compound into the undoManager, - // it would be added before the component which undoes the insertion of the entry and creates heavy problems - // (which prohibits the undo the deleting multiple entries) - */ } diff --git a/src/main/java/org/jabref/gui/undo/UndoableInsertEntries.java b/src/main/java/org/jabref/gui/undo/UndoableInsertEntries.java new file mode 100644 index 00000000000..120b9eb26ed --- /dev/null +++ b/src/main/java/org/jabref/gui/undo/UndoableInsertEntries.java @@ -0,0 +1,80 @@ +package org.jabref.gui.undo; + +import java.util.Collections; +import java.util.List; + +import org.jabref.logic.l10n.Localization; +import org.jabref.model.database.BibDatabase; +import org.jabref.model.entry.BibEntry; +import org.jabref.model.strings.StringUtil; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * This class represents the removal of entries. The constructor needs + * references to the database, entries, and a boolean marked true if the undo + * is from a call to paste(). + */ +public class UndoableInsertEntries extends AbstractUndoableJabRefEdit { + + private static final Logger LOGGER = LoggerFactory.getLogger(UndoableInsertEntries.class); + private final BibDatabase database; + private final List entries; + private final boolean paste; + + public UndoableInsertEntries(BibDatabase database, BibEntry entry) { + this(database, Collections.singletonList(entry)); + } + + public UndoableInsertEntries(BibDatabase database, List entries) { + this(database, entries, false); + } + + public UndoableInsertEntries(BibDatabase database, List entries, boolean paste) { + this.database = database; + this.entries = entries; + this.paste = paste; + } + + @Override + public String getPresentationName() { + if (paste) { + if (entries.size() > 1) { + return Localization.lang("paste entries"); + } else if (entries.size() == 1) { + return Localization.lang("paste entry %0", + StringUtil.boldHTML(entries.get(0).getCiteKeyOptional().orElse(Localization.lang("undefined")))); + } else { + return null; + } + } else { + if (entries.size() > 1) { + return Localization.lang("insert entries"); + } else if (entries.size() == 1) { + return Localization.lang("insert entry %0", + StringUtil.boldHTML(entries.get(0).getCiteKeyOptional().orElse(Localization.lang("undefined")))); + } else { + return null; + } + } + } + + @Override + public void undo() { + super.undo(); + + try { + database.removeEntries(entries); + } catch (Throwable ex) { + LOGGER.warn("Problem undoing `insert entries`", ex); + } + } + + @Override + public void redo() { + super.redo(); + database.insertEntries(entries); + } + +} diff --git a/src/main/java/org/jabref/gui/undo/UndoableInsertEntry.java b/src/main/java/org/jabref/gui/undo/UndoableInsertEntry.java deleted file mode 100644 index 8bb0249f798..00000000000 --- a/src/main/java/org/jabref/gui/undo/UndoableInsertEntry.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.jabref.gui.undo; - -import org.jabref.logic.l10n.Localization; -import org.jabref.model.database.BibDatabase; -import org.jabref.model.entry.BibEntry; -import org.jabref.model.strings.StringUtil; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * This class represents the removal of an entry. The constructor needs - * references to the database, the entry, and the map of open entry editors. - * The latter to be able to close the entry's editor if it is opened before - * the insert is undone. - */ -public class UndoableInsertEntry extends AbstractUndoableJabRefEdit { - - private static final Logger LOGGER = LoggerFactory.getLogger(UndoableInsertEntry.class); - private final BibDatabase base; - private final BibEntry entry; - - public UndoableInsertEntry(BibDatabase base, BibEntry entry) { - this.base = base; - this.entry = entry; - } - - @Override - public String getPresentationName() { - return Localization.lang("insert entry %0", - StringUtil.boldHTML(entry.getCiteKeyOptional().orElse(Localization.lang("undefined")))); - } - - @Override - public void undo() { - super.undo(); - - // Revert the change. - try { - base.removeEntry(entry); - } catch (Throwable ex) { - LOGGER.warn("Problem to undo `insert entry`", ex); - } - } - - @Override - public void redo() { - super.redo(); - base.insertEntry(entry); - } - -} diff --git a/src/main/java/org/jabref/logic/auxparser/DefaultAuxParser.java b/src/main/java/org/jabref/logic/auxparser/DefaultAuxParser.java index 90f1c4112f6..60de2a294f7 100644 --- a/src/main/java/org/jabref/logic/auxparser/DefaultAuxParser.java +++ b/src/main/java/org/jabref/logic/auxparser/DefaultAuxParser.java @@ -120,21 +120,26 @@ private void matchCitation(AuxParserResult result, String line) { } } - /* + /** * Try to find an equivalent BibTeX entry inside the reference database for all keys inside the AUX file. + * + * @param result AUX file */ private void resolveTags(AuxParserResult result) { + List entriesToInsert = new ArrayList<>(); + for (String key : result.getUniqueKeys()) { if (!result.getGeneratedBibDatabase().getEntryByKey(key).isPresent()) { Optional entry = masterDatabase.getEntryByKey(key); if (entry.isPresent()) { - insertEntry(entry.get(), result); - resolveCrossReferences(entry.get(), result); + entriesToInsert.add(entry.get()); } else { result.getUnresolvedKeys().add(key); } } } + insertEntries(entriesToInsert, result); + resolveCrossReferences(entriesToInsert, result); // Copy database definitions if (result.getGeneratedBibDatabase().hasEntries()) { @@ -143,29 +148,44 @@ private void resolveTags(AuxParserResult result) { } } - /* - * Resolves and adds CrossRef entries + /** + * Resolves and adds CrossRef entries to insert them in addition to the original entries + * + * @param entries Entries to check for CrossRefs + * @param result AUX file */ - private void resolveCrossReferences(BibEntry entry, AuxParserResult result) { - entry.getField(StandardField.CROSSREF).ifPresent(crossref -> { - if (!result.getGeneratedBibDatabase().getEntryByKey(crossref).isPresent()) { - Optional refEntry = masterDatabase.getEntryByKey(crossref); - - if (refEntry.isPresent()) { - insertEntry(refEntry.get(), result); - result.increaseCrossRefEntriesCounter(); - } else { - result.getUnresolvedKeys().add(crossref); + private void resolveCrossReferences(List entries, AuxParserResult result) { + List entriesToInsert = new ArrayList<>(); + for (BibEntry entry : entries) { + entry.getField(StandardField.CROSSREF).ifPresent(crossref -> { + if (!result.getGeneratedBibDatabase().getEntryByKey(crossref).isPresent()) { + Optional refEntry = masterDatabase.getEntryByKey(crossref); + + if (refEntry.isPresent()) { + if (!entriesToInsert.contains(refEntry.get())) { + entriesToInsert.add(refEntry.get()); + result.increaseCrossRefEntriesCounter(); + } + } else { + result.getUnresolvedKeys().add(crossref); + } } - } - }); + }); + } + insertEntries(entriesToInsert, result); } - /* - * Insert a clone of the given entry. The clone is given a new unique ID. + /** + * Insert a clone of each given entry. The clones are each given a new unique ID. + * + * @param entries Entries to be cloned + * @param result AUX file */ - private void insertEntry(BibEntry entry, AuxParserResult result) { - BibEntry clonedEntry = (BibEntry) entry.clone(); - result.getGeneratedBibDatabase().insertEntry(clonedEntry); + private void insertEntries(List entries, AuxParserResult result) { + List clonedEntries = new ArrayList<>(); + for (BibEntry entry : entries) { + clonedEntries.add((BibEntry) entry.clone()); + } + result.getGeneratedBibDatabase().insertEntries(clonedEntries); } } 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 37c7676307b..fcc72396631 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/MrDLibImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/MrDLibImporter.java @@ -130,9 +130,7 @@ private void parse(BufferedReader input) throws IOException { RankedBibEntry rankedBibEntry2) -> rankedBibEntry1.rank.compareTo(rankedBibEntry2.rank)); List bibEntries = rankedBibEntries.stream().map(e -> e.entry).collect(Collectors.toList()); - for (BibEntry bibentry : bibEntries) { - bibDatabase.insertEntry(bibentry); - } + bibDatabase.insertEntries(bibEntries); parserResult = new ParserResult(bibDatabase); JSONObject label = recommendationSetJson.getJSONObject("label"); diff --git a/src/main/java/org/jabref/logic/shared/DBMSSynchronizer.java b/src/main/java/org/jabref/logic/shared/DBMSSynchronizer.java index 8e253219eb3..ed535797f62 100644 --- a/src/main/java/org/jabref/logic/shared/DBMSSynchronizer.java +++ b/src/main/java/org/jabref/logic/shared/DBMSSynchronizer.java @@ -21,8 +21,8 @@ import org.jabref.model.bibtexkeypattern.GlobalBibtexKeyPattern; import org.jabref.model.database.BibDatabase; import org.jabref.model.database.BibDatabaseContext; +import org.jabref.model.database.event.EntriesAddedEvent; import org.jabref.model.database.event.EntriesRemovedEvent; -import org.jabref.model.database.event.EntryAddedEvent; import org.jabref.model.database.shared.DatabaseConnection; import org.jabref.model.database.shared.DatabaseConnectionProperties; import org.jabref.model.database.shared.DatabaseNotSupportedException; @@ -76,13 +76,16 @@ public DBMSSynchronizer(BibDatabaseContext bibDatabaseContext, Character keyword * @param event {@link EntryAddedEvent} object */ @Subscribe - public void listen(EntryAddedEvent event) { + public void listen(EntriesAddedEvent event) { // While synchronizing the local database (see synchronizeLocalDatabase() below), some EntriesEvents may be posted. // In this case DBSynchronizer should not try to insert the bibEntry entry again (but it would not harm). if (isEventSourceAccepted(event) && checkCurrentConnection()) { synchronizeLocalMetaData(); synchronizeLocalDatabase(); // Pull changes for the case that there were some - dbmsProcessor.insertEntry(event.getBibEntry()); + List entries = event.getBibEntries(); + for (BibEntry entry : entries) { + dbmsProcessor.insertEntry(entry); + } } } @@ -106,10 +109,9 @@ public void listen(FieldChangedEvent event) { /** * Listening method. Deletes the given list of {@link BibEntry} from shared database. * - * @param event {@link EntryRemovedEvent} object + * @param event {@link EntriesRemovedEvent} object */ - // This has not been made parallel yet - hence the for loop - that will take more effort @Subscribe public void listen(EntriesRemovedEvent event) { // While synchronizing the local database (see synchronizeLocalDatabase() below), some EntriesEvents may be posted. diff --git a/src/main/java/org/jabref/model/database/BibDatabase.java b/src/main/java/org/jabref/model/database/BibDatabase.java index 8559561a31f..814925ee55f 100644 --- a/src/main/java/org/jabref/model/database/BibDatabase.java +++ b/src/main/java/org/jabref/model/database/BibDatabase.java @@ -21,9 +21,8 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import org.jabref.model.database.event.AllInsertsFinishedEvent; +import org.jabref.model.database.event.EntriesAddedEvent; import org.jabref.model.database.event.EntriesRemovedEvent; -import org.jabref.model.database.event.EntryAddedEvent; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.BibtexString; import org.jabref.model.entry.Month; @@ -225,27 +224,21 @@ public synchronized void insertEntries(List entries) throws KeyCollisi public synchronized void insertEntries(List newEntries, EntriesEventSource eventSource) throws KeyCollisionException { Objects.requireNonNull(newEntries); - - BibEntry firstEntry = null; for (BibEntry entry : newEntries) { String id = entry.getId(); if (containsEntryWithId(id)) { - throw new KeyCollisionException("ID is already in use, please choose another"); + throw new KeyCollisionException("ID is already in use, please choose another", id); } internalIDs.add(id); entry.registerListener(this); - - eventBus.post(new EntryAddedEvent(entry, eventSource)); - - if (firstEntry == null) { - firstEntry = entry; - } } - entries.addAll(newEntries); - if (firstEntry != null) { - eventBus.post(new AllInsertsFinishedEvent(firstEntry, eventSource)); + if (newEntries.isEmpty()) { + eventBus.post(new EntriesAddedEvent(newEntries, eventSource)); + } else { + eventBus.post(new EntriesAddedEvent(newEntries, newEntries.get(0), eventSource)); } + entries.addAll(newEntries); } public synchronized void removeEntry(BibEntry bibEntry) { @@ -309,15 +302,17 @@ public synchronized void setPreamble(String preamble) { * Inserts a Bibtex String. */ public synchronized void addString(BibtexString string) throws KeyCollisionException { + String id = string.getId(); + if (hasStringByName(string.getName())) { - throw new KeyCollisionException("A string with that label already exists"); + throw new KeyCollisionException("A string with that label already exists", id); } - if (bibtexStrings.containsKey(string.getId())) { - throw new KeyCollisionException("Duplicate BibTeX string id."); + if (bibtexStrings.containsKey(id)) { + throw new KeyCollisionException("Duplicate BibTeX string id.", id); } - bibtexStrings.put(string.getId(), string); + bibtexStrings.put(id, string); } /** @@ -589,8 +584,7 @@ public void setEpilog(String epilog) { * * - {@link EntryAddedEvent} * - {@link EntryChangedEvent} - * - {@link EntryRemovedEvent} - * - {@link AllInsertsFinishedEvent} + * - {@link EntriesRemovedEvent} * * @param listener listener (subscriber) to add */ diff --git a/src/main/java/org/jabref/model/database/BibDatabases.java b/src/main/java/org/jabref/model/database/BibDatabases.java index 7850f868787..3d85e693d79 100644 --- a/src/main/java/org/jabref/model/database/BibDatabases.java +++ b/src/main/java/org/jabref/model/database/BibDatabases.java @@ -1,5 +1,6 @@ package org.jabref.model.database; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @@ -13,19 +14,19 @@ private BibDatabases() { } /** - * Gets a collection of bibentries and sets an ID for every entry. After that - * all entries will be inserted into a new BibDatabase. + * Gets a collection of entries and sets an ID for every entry. After that + * all entries are inserted into a new BibDatabase. * - * @param bibentries a collection that contains {@link BibEntry} + * @param entries a collection that contains {@link BibEntry} * @return BibDatabase that contains the entries */ - public static BibDatabase createDatabase(Collection bibentries) { + public static BibDatabase createDatabase(Collection entries) { BibDatabase database = new BibDatabase(); - for (BibEntry entry : bibentries) { + for (BibEntry entry : entries) { entry.setId(IdGenerator.next()); - database.insertEntry(entry); } + database.insertEntries(new ArrayList<>(entries)); return database; } diff --git a/src/main/java/org/jabref/model/database/DuplicationChecker.java b/src/main/java/org/jabref/model/database/DuplicationChecker.java index 732338e5cbf..4667cdbc1da 100644 --- a/src/main/java/org/jabref/model/database/DuplicationChecker.java +++ b/src/main/java/org/jabref/model/database/DuplicationChecker.java @@ -5,8 +5,8 @@ import java.util.Map; import java.util.Optional; +import org.jabref.model.database.event.EntriesAddedEvent; import org.jabref.model.database.event.EntriesRemovedEvent; -import org.jabref.model.database.event.EntryAddedEvent; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.event.FieldChangedEvent; import org.jabref.model.entry.field.InternalField; @@ -95,20 +95,13 @@ public void listen(FieldChangedEvent fieldChangedEvent) { @Subscribe public void listen(EntriesRemovedEvent entriesRemovedEvent) { List entries = entriesRemovedEvent.getBibEntries(); - for (BibEntry entry : entries) { - Optional citeKey = entry.getCiteKeyOptional(); - if (citeKey.isPresent()) { - removeKeyFromSet(citeKey.get()); - } - } + entries.stream().map(BibEntry::getCiteKeyOptional).flatMap(Optional::stream).forEach(citeKey -> removeKeyFromSet(citeKey)); } @Subscribe - public void listen(EntryAddedEvent entryAddedEvent) { - Optional citekey = entryAddedEvent.getBibEntry().getCiteKeyOptional(); - if (citekey.isPresent()) { - addKeyToSet(citekey.get()); - } + public void listen(EntriesAddedEvent entriesAddedEvent) { + List entries = entriesAddedEvent.getBibEntries(); + entries.stream().map(BibEntry::getCiteKeyOptional).flatMap(Optional::stream).forEach(citeKey -> addKeyToSet(citeKey)); } } diff --git a/src/main/java/org/jabref/model/database/KeyCollisionException.java b/src/main/java/org/jabref/model/database/KeyCollisionException.java index 21d1bcfd77a..05bb346599c 100644 --- a/src/main/java/org/jabref/model/database/KeyCollisionException.java +++ b/src/main/java/org/jabref/model/database/KeyCollisionException.java @@ -2,12 +2,15 @@ public class KeyCollisionException extends RuntimeException { + private String id; + public KeyCollisionException() { super(); } - public KeyCollisionException(String msg) { + public KeyCollisionException(String msg, String id) { super(msg); + this.id = id; } public KeyCollisionException(String msg, Throwable exception) { @@ -17,4 +20,8 @@ public KeyCollisionException(String msg, Throwable exception) { public KeyCollisionException(Throwable exception) { super(exception); } + + public String getId() { + return id; + } } diff --git a/src/main/java/org/jabref/model/database/event/AllInsertsFinishedEvent.java b/src/main/java/org/jabref/model/database/event/AllInsertsFinishedEvent.java deleted file mode 100644 index eb9bc84df00..00000000000 --- a/src/main/java/org/jabref/model/database/event/AllInsertsFinishedEvent.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.jabref.model.database.event; - -import java.util.Collections; - -import org.jabref.model.database.BibDatabase; -import org.jabref.model.entry.BibEntry; -import org.jabref.model.entry.event.EntriesEvent; -import org.jabref.model.entry.event.EntriesEventSource; - -/** - * {@link AllInsertsFinishedEvent} is fired when insertion of {@link BibEntry} to the {@link BibDatabase} was finished. - */ -public class AllInsertsFinishedEvent extends EntriesEvent { - - /** - * @param bibEntry the entry which has been added - */ - public AllInsertsFinishedEvent(BibEntry bibEntry) { - super(Collections.singletonList(bibEntry)); - } - - /** - * @param bibEntry BibEntry object which has been added. - * @param location Location affected by this event - */ - public AllInsertsFinishedEvent(BibEntry bibEntry, EntriesEventSource location) { - super(Collections.singletonList(bibEntry), location); - } -} diff --git a/src/main/java/org/jabref/model/database/event/EntriesAddedEvent.java b/src/main/java/org/jabref/model/database/event/EntriesAddedEvent.java new file mode 100644 index 00000000000..3229664ab16 --- /dev/null +++ b/src/main/java/org/jabref/model/database/event/EntriesAddedEvent.java @@ -0,0 +1,41 @@ +package org.jabref.model.database.event; + +import java.util.List; + +import org.jabref.model.database.BibDatabase; +import org.jabref.model.entry.BibEntry; +import org.jabref.model.entry.event.EntriesEvent; +import org.jabref.model.entry.event.EntriesEventSource; + +/** + * {@link EntriesAddedEvent} is fired when at least {@link BibEntry} is being added to the {@link BibDatabase}. + */ +public class EntriesAddedEvent extends EntriesEvent { + + // firstEntry used by listeners that used to listen to AllInsertsFinishedEvent + // final? + private final BibEntry firstEntry; + + /** + * @param bibEntries the entries which are being added + * @param firstEntry the first entry being added + */ + + public EntriesAddedEvent(List bibEntries, BibEntry firstEntry, EntriesEventSource location) { + super(bibEntries, location); + this.firstEntry = firstEntry; + } + + /** + * @param bibEntries List of BibEntry objects which are being added. + * @param location Location affected by this event + */ + public EntriesAddedEvent(List bibEntries, EntriesEventSource location) { + super(bibEntries, location); + this.firstEntry = null; + } + + public BibEntry getFirstEntry() { + return this.firstEntry; + } +} diff --git a/src/main/java/org/jabref/model/database/event/EntriesRemovedEvent.java b/src/main/java/org/jabref/model/database/event/EntriesRemovedEvent.java index aa10fe2fe8a..666ca89aca0 100644 --- a/src/main/java/org/jabref/model/database/event/EntriesRemovedEvent.java +++ b/src/main/java/org/jabref/model/database/event/EntriesRemovedEvent.java @@ -7,21 +7,21 @@ import org.jabref.model.entry.event.EntriesEventSource; /** - * EntriesRemovedEvent is fired when at least one BibEntry is removed + * EntriesRemovedEvent is fired when at least one BibEntry is being removed * from the database. */ public class EntriesRemovedEvent extends EntriesEvent { /** - * @param bibEntries List of BibEntry object which have been removed. + * @param bibEntries List of BibEntry objects which are being removed. */ public EntriesRemovedEvent(List bibEntries) { super(bibEntries); } /** - * @param bibEntries List of BibEntry object which have been removed. + * @param bibEntries List of BibEntry objects which are being removed. * @param location Location affected by this event */ public EntriesRemovedEvent(List bibEntries, EntriesEventSource location) { diff --git a/src/main/java/org/jabref/model/database/event/EntryAddedEvent.java b/src/main/java/org/jabref/model/database/event/EntryAddedEvent.java deleted file mode 100644 index fbd6655e88e..00000000000 --- a/src/main/java/org/jabref/model/database/event/EntryAddedEvent.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.jabref.model.database.event; - -import java.util.Collections; - -import org.jabref.model.database.BibDatabase; -import org.jabref.model.entry.BibEntry; -import org.jabref.model.entry.event.EntriesEvent; -import org.jabref.model.entry.event.EntriesEventSource; - -/** - * {@link EntryAddedEvent} is fired when a new {@link BibEntry} was added to the {@link BibDatabase}. - */ -public class EntryAddedEvent extends EntriesEvent { - - /** - * @param bibEntry the entry which has been added - */ - public EntryAddedEvent(BibEntry bibEntry) { - super(Collections.singletonList(bibEntry)); - } - - /** - * @param bibEntry BibEntry object which has been added. - * @param location Location affected by this event - */ - public EntryAddedEvent(BibEntry bibEntry, EntriesEventSource location) { - super(Collections.singletonList(bibEntry), location); - } -} diff --git a/src/main/java/org/jabref/model/entry/event/EntriesEvent.java b/src/main/java/org/jabref/model/entry/event/EntriesEvent.java index b8a2c10e6f2..a0f5345ccfa 100644 --- a/src/main/java/org/jabref/model/entry/event/EntriesEvent.java +++ b/src/main/java/org/jabref/model/entry/event/EntriesEvent.java @@ -15,7 +15,6 @@ public abstract class EntriesEvent extends BibDatabaseContextChangedEvent { private final List bibEntries; private final EntriesEventSource location; - /** * @param bibEntries List of BibEntry objects which are involved in this event */ @@ -32,9 +31,6 @@ public EntriesEvent(List bibEntries, EntriesEventSource location) { this.location = Objects.requireNonNull(location); } - //Temporary fix, while we change to plural entries - public BibEntry getBibEntry() { return this.bibEntries.get(0); } - public List getBibEntries() { return this.bibEntries; } diff --git a/src/main/java/org/jabref/model/entry/event/EntryChangedEvent.java b/src/main/java/org/jabref/model/entry/event/EntryChangedEvent.java index cf83402d498..d10928a16c9 100644 --- a/src/main/java/org/jabref/model/entry/event/EntryChangedEvent.java +++ b/src/main/java/org/jabref/model/entry/event/EntryChangedEvent.java @@ -25,4 +25,8 @@ public EntryChangedEvent(BibEntry bibEntry, EntriesEventSource location) { super(Collections.singletonList(bibEntry), location); } + public BibEntry getBibEntry() { + // An entryChangedEvent should only have one BibEntry, but its parent class stores a List + return getBibEntries().get(0); + } } diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index b96c499214b..9e49d9c24ef 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -625,7 +625,7 @@ Paste=Paste paste\ entries=paste entries -paste\ entry=paste entry +paste\ entry\ %0=paste entry %0 Path\ to\ %0\ not\ defined=Path to %0 not defined @@ -2088,6 +2088,6 @@ Reset\ All=Reset All Column\ type\ %0\ is\ unknown.=Column type %0 is unknown. Linked\ identifiers=Linked identifiers Special\ field\ type\ %0\ is\ unknown.\ Using\ normal\ column\ type.=Special field type %0 is unknown. Using normal column type. - +insert\ entries=insert entries In\ JabRef=In JabRef On\ disk=On disk diff --git a/src/test/java/org/jabref/gui/UpdateTimestampListenerTest.java b/src/test/java/org/jabref/gui/UpdateTimestampListenerTest.java index c8a9e226acf..283de46541b 100644 --- a/src/test/java/org/jabref/gui/UpdateTimestampListenerTest.java +++ b/src/test/java/org/jabref/gui/UpdateTimestampListenerTest.java @@ -30,7 +30,7 @@ void setUp() { database = new BibDatabase(); bibEntry = new BibEntry(); - database.insertEntries(bibEntry); + database.insertEntry(bibEntry); preferencesMock = mock(JabRefPreferences.class); timestampPreferencesMock = mock(TimestampPreferences.class); diff --git a/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java b/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java index 7c0cbba838f..584fad07070 100644 --- a/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java +++ b/src/test/java/org/jabref/logic/shared/DBMSSynchronizerTest.java @@ -58,6 +58,7 @@ public void setup() throws Exception { this.dbmsConnection = TestConnector.getTestDBMSConnection(dbmsType); this.dbmsProcessor = DBMSProcessor.getProcessorInstance(this.dbmsConnection); TestManager.clearTables(this.dbmsConnection); + this.dbmsProcessor.setupSharedDatabase(); bibDatabase = new BibDatabase(); BibDatabaseContext context = new BibDatabaseContext(bibDatabase); @@ -70,7 +71,7 @@ public void setup() throws Exception { @AfterEach public void clear() throws SQLException { - this.dbmsConnection.getConnection().close(); + dbmsSynchronizer.closeSharedDatabase(); } @Test diff --git a/src/test/java/org/jabref/model/database/BibDatabaseTest.java b/src/test/java/org/jabref/model/database/BibDatabaseTest.java index df1f53e077b..8f30691b299 100644 --- a/src/test/java/org/jabref/model/database/BibDatabaseTest.java +++ b/src/test/java/org/jabref/model/database/BibDatabaseTest.java @@ -205,7 +205,7 @@ public void insertEntryPostsAddedEntryEvent() { TestEventListener tel = new TestEventListener(); database.registerListener(tel); database.insertEntry(expectedEntry); - assertEquals(expectedEntry, tel.getAddedEntry()); + assertEquals(Collections.singletonList(expectedEntry), tel.getAddedEntries()); assertEquals(expectedEntry, tel.getFirstInsertedEntry()); } @@ -217,7 +217,7 @@ public void insertMultipleEntriesPostsAddedEntryEvent() { database.registerListener(tel); database.insertEntries(firstEntry, secondEntry); assertEquals(firstEntry, tel.getFirstInsertedEntry()); - assertEquals(secondEntry, tel.getAddedEntry()); + assertEquals(Arrays.asList(firstEntry, secondEntry), tel.getAddedEntries()); } @Test diff --git a/src/test/java/org/jabref/model/event/TestEventListener.java b/src/test/java/org/jabref/model/event/TestEventListener.java index c753bc5cff6..dcda508480d 100644 --- a/src/test/java/org/jabref/model/event/TestEventListener.java +++ b/src/test/java/org/jabref/model/event/TestEventListener.java @@ -2,9 +2,8 @@ import java.util.List; -import org.jabref.model.database.event.AllInsertsFinishedEvent; +import org.jabref.model.database.event.EntriesAddedEvent; import org.jabref.model.database.event.EntriesRemovedEvent; -import org.jabref.model.database.event.EntryAddedEvent; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.event.EntryChangedEvent; @@ -12,19 +11,15 @@ public class TestEventListener { - private BibEntry addedEntry; + private List addedEntries; private BibEntry firstInsertedEntry; private List removedEntries; private BibEntry changedEntry; @Subscribe - public void listen(EntryAddedEvent event) { - this.addedEntry = event.getBibEntry(); - } - - @Subscribe - public void listen(AllInsertsFinishedEvent event) { - this.firstInsertedEntry = event.getBibEntry(); + public void listen(EntriesAddedEvent event) { + this.addedEntries = event.getBibEntries(); + this.firstInsertedEntry = event.getFirstEntry(); } @Subscribe @@ -37,8 +32,8 @@ public void listen(EntryChangedEvent event) { this.changedEntry = event.getBibEntry(); } - public BibEntry getAddedEntry() { - return addedEntry; + public List getAddedEntries() { + return addedEntries; } public BibEntry getFirstInsertedEntry() { From 9474f5a54a35eb999aed46cef8c1a5defb3c75a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Jes=C3=BAs=20Sinohui=20Fern=C3=A1ndez?= Date: Tue, 31 Dec 2019 03:00:09 -0700 Subject: [PATCH 07/19] Fix "&" on previews (#5786) * Removes unnecessary escape on HTMLChars * Reverts change on HTMLChars.java and removes HTML formatting from the CSL adapter. * Adds test to check for ampersand handling --- CHANGELOG.md | 1 + .../org/jabref/logic/citationstyle/CSLAdapter.java | 3 --- .../citationstyle/CitationStyleGeneratorTest.java | 12 ++++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c68c9635ce7..8489723adc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where the Medline fetcher was only working when JabRef was running from source [#5645](https://github.com/JabRef/jabref/issues/5645) - We fixed some visual issues in the dark theme [#5764](https://github.com/JabRef/jabref/pull/5764) [#5753](https://github.com/JabRef/jabref/issues/5753) - We fixed an issue where non-default previews didn't handle unicode characters. [#5779](https://github.com/JabRef/jabref/issues/5779) +- We fixed an issue where the ampersand character wasn't rendering correctly on previews.[#3840](https://github.com/JabRef/jabref/issues/3840) ### Removed diff --git a/src/main/java/org/jabref/logic/citationstyle/CSLAdapter.java b/src/main/java/org/jabref/logic/citationstyle/CSLAdapter.java index a30ca70845e..5728839efe9 100644 --- a/src/main/java/org/jabref/logic/citationstyle/CSLAdapter.java +++ b/src/main/java/org/jabref/logic/citationstyle/CSLAdapter.java @@ -7,7 +7,6 @@ import java.util.Objects; import org.jabref.logic.formatter.bibtexfields.RemoveNewlinesFormatter; -import org.jabref.logic.layout.format.HTMLChars; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.Month; import org.jabref.model.entry.field.Field; @@ -93,13 +92,11 @@ private static CSLItemData bibEntryToCSLItemData(BibEntry bibEntry) { BibTeXEntry bibTeXEntry = new BibTeXEntry(new Key(bibEntry.getType().getName()), new Key(citeKey)); // Not every field is already generated into latex free fields - HTMLChars latexToHtmlConverter = new HTMLChars(); RemoveNewlinesFormatter removeNewlinesFormatter = new RemoveNewlinesFormatter(); for (Field key : bibEntry.getFieldMap().keySet()) { bibEntry.getField(key) .map(removeNewlinesFormatter::format) .map(LatexToUnicodeAdapter::format) - .map(latexToHtmlConverter::format) .ifPresent(value -> { if (StandardField.MONTH.equals(key)) { // Change month from #mon# to mon because CSL does not support the former format diff --git a/src/test/java/org/jabref/logic/citationstyle/CitationStyleGeneratorTest.java b/src/test/java/org/jabref/logic/citationstyle/CitationStyleGeneratorTest.java index ecb7a1d6b37..63627b59809 100644 --- a/src/test/java/org/jabref/logic/citationstyle/CitationStyleGeneratorTest.java +++ b/src/test/java/org/jabref/logic/citationstyle/CitationStyleGeneratorTest.java @@ -130,4 +130,16 @@ void testHandleDiacritics() { String citation = CitationStyleGenerator.generateCitation(entry, CitationStyle.getDefault()); assertEquals(expected, citation); } + + @Test + void testHandleAmpersand() { + String expectedCitation = "[1]B. Smith, B. Jones, and J. Williams, “&TitleTest&” BibTeX Journal, vol. 34, no. 3, pp. 45–67, Jul. 2016.\n"; + BibEntry entry = TestEntry.getTestEntry(); + entry.setField(StandardField.TITLE, "“&TitleTest&”"); + String style = CitationStyle.getDefault().getSource(); + CitationStyleOutputFormat format = CitationStyleOutputFormat.TEXT; + + String actualCitation = CitationStyleGenerator.generateCitation(entry, style, format); + assertEquals(expectedCitation, actualCitation); + } } From e93eb7378ab48c3d63b8ba9a154310f9fa4d295a Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Tue, 31 Dec 2019 11:06:39 +0100 Subject: [PATCH 08/19] Add ignored dependency Fixes https://github.com/JabRef/jabref/issues/5800 --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 389cd30fd49..d1dcd020cb3 100644 --- a/build.gradle +++ b/build.gradle @@ -255,7 +255,9 @@ dependencyUpdates.resolutionStrategy = { } } rules.withModule("de.jensd:fontawesomefx-materialdesignfont") { ComponentSelection selection -> - if (selection.candidate.version ==~ /2.0.26-9.1.1/ || selection.candidate.version ==~ /2.0.26-9.1.2/) { + if (selection.candidate.version ==~ /2.0.26-9.1.2/ + || selection.candidate.version ==~ /2.0.26-9.1.1/ + || selection.candidate.version ==~ /2.0.26-9.1.0/) { selection.reject('1.7.22-11 is actually newer (strange version system)') } } From 16b738f079cc2e3cc6ba1b34aea805ea5b817054 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 31 Dec 2019 13:47:27 +0100 Subject: [PATCH 09/19] Run tests only once at pull requets --- .github/workflows/tests-oracle.yml | 2 ++ .github/workflows/tests.yml | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests-oracle.yml b/.github/workflows/tests-oracle.yml index 850a561cc9c..b86806667bd 100644 --- a/.github/workflows/tests-oracle.yml +++ b/.github/workflows/tests-oracle.yml @@ -2,6 +2,8 @@ name: Oracle Tests on: push: + branches: + - master paths: - 'src/test/java/org/jabref/model/database/**' - 'src/test/java/org/jabref/logic/shared/**' diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d408315577d..4786f358e28 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,6 +1,11 @@ name: Tests -on: [push, pull_request] +on: + push: + branches: + - master + pull_request: + # always run on pull requests jobs: checkstyle: From 39dd9f6a8f26cacd7ef77e111e3096a7eb1764f5 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 31 Dec 2019 13:55:04 +0100 Subject: [PATCH 10/19] Try to use right ref --- .github/workflows/cleanup_pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cleanup_pr.yml b/.github/workflows/cleanup_pr.yml index 863a7a57bb3..51283cb3e7e 100644 --- a/.github/workflows/cleanup_pr.yml +++ b/.github/workflows/cleanup_pr.yml @@ -13,7 +13,7 @@ jobs: - name: Extract branch name id: extract_branch run: | - echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" + echo "##[set-output name=branch;]$(echo ${${{ github.event.pull_request.head.ref }}#refs/heads/})" - name: Delete folder on builds.jabref.org uses: appleboy/ssh-action@v0.0.6 with: From b1e157f91ab0ab197dd62f48924802c03873093a Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Tue, 31 Dec 2019 16:04:42 +0100 Subject: [PATCH 11/19] Remove obsolete class (#5801) --- .../model/entry/InternalBibtexFields.java | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 src/main/java/org/jabref/model/entry/InternalBibtexFields.java diff --git a/src/main/java/org/jabref/model/entry/InternalBibtexFields.java b/src/main/java/org/jabref/model/entry/InternalBibtexFields.java deleted file mode 100644 index 124b7b5e220..00000000000 --- a/src/main/java/org/jabref/model/entry/InternalBibtexFields.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.jabref.model.entry; - -/** - * Handling of bibtex fields. - * All bibtex-field related stuff should be placed here! - * Because we can export this information into additional - * config files -> simple extension and definition of new fields - * - * TODO: - * - handling of identically fields with different names (https://github.com/JabRef/jabref/issues/521) - * e.g. LCCN = lib-congress, journaltitle = journal - * - group id for each fields, e.g. standard, jurabib, bio, ... - * - add a additional properties functionality into the BibField class - */ -public class InternalBibtexFields { - - private InternalBibtexFields() { - // Singleton - } -} From 71776f23ae7c68cb4d9aa7f3495b040163c14daa Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Tue, 31 Dec 2019 16:08:27 +0100 Subject: [PATCH 12/19] Try to fix branch name on cleanup pr action --- .github/workflows/cleanup_pr.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cleanup_pr.yml b/.github/workflows/cleanup_pr.yml index 51283cb3e7e..fc83191f00d 100644 --- a/.github/workflows/cleanup_pr.yml +++ b/.github/workflows/cleanup_pr.yml @@ -5,15 +5,14 @@ on: types: [closed] jobs: - build: - + cleanup: runs-on: ubuntu-latest steps: - name: Extract branch name id: extract_branch run: | - echo "##[set-output name=branch;]$(echo ${${{ github.event.pull_request.head.ref }}#refs/heads/})" + echo "##[set-output name=branch;]$(echo ${{ github.event.pull_request.head.ref }})" - name: Delete folder on builds.jabref.org uses: appleboy/ssh-action@v0.0.6 with: From 266b3acd3150d5f015c3d0afe09c92a1a33ee805 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 00:49:09 +0100 Subject: [PATCH 13/19] Disable ACM Fetcher --- src/main/java/org/jabref/logic/importer/WebFetchers.java | 4 ++-- .../jabref/logic/importer/fetcher/ACMPortalFetcherTest.java | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/logic/importer/WebFetchers.java b/src/main/java/org/jabref/logic/importer/WebFetchers.java index 66319f5e6b4..45f035914ca 100644 --- a/src/main/java/org/jabref/logic/importer/WebFetchers.java +++ b/src/main/java/org/jabref/logic/importer/WebFetchers.java @@ -7,7 +7,6 @@ import java.util.SortedSet; import java.util.TreeSet; -import org.jabref.logic.importer.fetcher.ACMPortalFetcher; import org.jabref.logic.importer.fetcher.ACS; import org.jabref.logic.importer.fetcher.ArXiv; import org.jabref.logic.importer.fetcher.AstrophysicsDataSystem; @@ -90,7 +89,8 @@ public static SortedSet getSearchBasedFetchers(ImportFormatP set.add(new AstrophysicsDataSystem(importFormatPreferences)); set.add(new MathSciNet(importFormatPreferences)); set.add(new ZbMATH(importFormatPreferences)); - set.add(new ACMPortalFetcher(importFormatPreferences)); + // see https://github.com/JabRef/jabref/issues/5804 + // set.add(new ACMPortalFetcher(importFormatPreferences)); set.add(new GoogleScholar(importFormatPreferences)); set.add(new DBLPFetcher(importFormatPreferences)); set.add(new SpringerFetcher()); diff --git a/src/test/java/org/jabref/logic/importer/fetcher/ACMPortalFetcherTest.java b/src/test/java/org/jabref/logic/importer/fetcher/ACMPortalFetcherTest.java index 4a673179f57..25e1c6dbd30 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/ACMPortalFetcherTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/ACMPortalFetcherTest.java @@ -12,6 +12,7 @@ import org.jabref.testutils.category.FetcherTest; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -19,6 +20,7 @@ import static org.mockito.Mockito.when; @FetcherTest +@Disabled("ACM endpoint does not work, thus the fetcher does not work at all. See https://github.com/JabRef/jabref/issues/5804 for details.") class ACMPortalFetcherTest { ACMPortalFetcher fetcher; From ed0e5aecdffc29d4368d9c777f0ba903bbb282a0 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 01:04:53 +0100 Subject: [PATCH 14/19] Adapt WebFetchersTest --- .../java/org/jabref/logic/importer/WebFetchersTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/org/jabref/logic/importer/WebFetchersTest.java b/src/test/java/org/jabref/logic/importer/WebFetchersTest.java index 9ce8e083c35..3796dc16334 100644 --- a/src/test/java/org/jabref/logic/importer/WebFetchersTest.java +++ b/src/test/java/org/jabref/logic/importer/WebFetchersTest.java @@ -4,6 +4,7 @@ import java.util.Set; import java.util.stream.Collectors; +import org.jabref.logic.importer.fetcher.ACMPortalFetcher; import org.jabref.logic.importer.fetcher.AbstractIsbnFetcher; import org.jabref.logic.importer.fetcher.IsbnViaEbookDeFetcher; import org.jabref.logic.importer.fetcher.IsbnViaOttoBibFetcher; @@ -39,9 +40,14 @@ void getIdBasedFetchersReturnsAllFetcherDerivingFromIdBasedFetcher() throws Exce expected.remove(AbstractIsbnFetcher.class); expected.remove(IdBasedParserFetcher.class); + // Remove special ISBN fetcher since we don't want to expose them to the user expected.remove(IsbnViaEbookDeFetcher.class); expected.remove(IsbnViaOttoBibFetcher.class); + + // Remove ACM, because it doesn't work currently + expected.remove(ACMPortalFetcher.class); + assertEquals(expected, getClasses(idFetchers)); } } From 60dd9d53f6dfa101fadf10dffb17f20cbba5e8f2 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 01:15:03 +0100 Subject: [PATCH 15/19] Remove ACM Fetcher in one more check --- src/test/java/org/jabref/logic/importer/WebFetchersTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/test/java/org/jabref/logic/importer/WebFetchersTest.java b/src/test/java/org/jabref/logic/importer/WebFetchersTest.java index 3796dc16334..904f8198716 100644 --- a/src/test/java/org/jabref/logic/importer/WebFetchersTest.java +++ b/src/test/java/org/jabref/logic/importer/WebFetchersTest.java @@ -74,6 +74,10 @@ void getSearchBasedFetchersReturnsAllFetcherDerivingFromSearchBasedFetcher() thr Set> expected = controlClasses.loadClasses().stream().collect(Collectors.toSet()); expected.remove(SearchBasedParserFetcher.class); + + // Remove ACM, because it doesn't work currently + expected.remove(ACMPortalFetcher.class); + assertEquals(expected, getClasses(searchBasedFetchers)); } } From 3406e93ea15af0f4442261025c3093a370b7968a Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 07:40:59 +0100 Subject: [PATCH 16/19] Add new authors --- AUTHORS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/AUTHORS b/AUTHORS index e8ff220b00e..3b4f540c584 100644 --- a/AUTHORS +++ b/AUTHORS @@ -151,6 +151,7 @@ Jong-Ho Shinn Jorge Tornero josephshin93 Joshua Ramon Enslin +José Jesús Sinohui Fernández Julian Pfeifer Jure Slak József Pallagi @@ -182,6 +183,7 @@ Ling Wang Linus Dietz Lorenzo Genta Luciana de Melo e Abud +Luis Romero Mairieli Wessel Malik Atalla Malte Deiseroth @@ -196,6 +198,7 @@ Martin Stolle Martina Catizone Mathias Walter Matthias Geiger +Matthias Mueller Mattia Bunel Mattias Ulbrich mcmoody From 8cc91380040b7da6da143d98feaadf5d9d048946 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Thu, 2 Jan 2020 08:10:01 +0100 Subject: [PATCH 17/19] Fix CSL update --- .github/workflows/refresh-csl-subtrees.yml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/.github/workflows/refresh-csl-subtrees.yml b/.github/workflows/refresh-csl-subtrees.yml index b6f6a59e98e..b6bcffbf6e9 100644 --- a/.github/workflows/refresh-csl-subtrees.yml +++ b/.github/workflows/refresh-csl-subtrees.yml @@ -1,6 +1,10 @@ name: Refresh Citation Style Language Files on: + push: + paths: + - '.github/workflows/refresh-csl-subtrees.yml' + - 'src/main/resources/csl-locales/**' schedule: # run on 1st and 15th of each month - cron: '1 2 1,15 * *' @@ -11,28 +15,32 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout source - uses: actions/checkout@v2-beta + uses: actions/checkout@v2 with: ref: master + fetch-depth: 0 - name: Add csl-styles remote run: git remote add -f csl-styles https://github.com/citation-style-language/styles.git - name: Update csl-styles - run: | + run: | git checkout master + git config --local core.editor /usr/bin/cat + git config user.name "github actions" + git config user.email "jabrefmail+webfeedback@gmail.com" git subtree pull --prefix src/main/resources/csl-styles csl-styles master --squash - name: Add csl-locales remote run: git remote add -f csl-locales https://github.com/citation-style-language/locales.git - name: Update csl-locales run: | - git checkout master git subtree pull --prefix src/main/resources/csl-locales csl-locales master --squash - uses: ad-m/github-push-action@master with: github_token: ${{ secrets.GITHUB_TOKEN }} + branch: master - name: Report issues if: failure() uses: JasonEtco/create-an-issue@master - env: + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: filename: .github/failure-csl-update.md From c63d290155587bd2c05c8e0a34fb8c235fe315a7 Mon Sep 17 00:00:00 2001 From: github actions Date: Thu, 2 Jan 2020 13:05:48 +0000 Subject: [PATCH 18/19] Squashed 'src/main/resources/csl-styles/' changes from 49a18418b1..b2fbe1592a MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit b2fbe1592a APA 7th edition (#4419) c236ade01c Create BFCN.csl (#4481) 25d40cd591 Update iso690-full-note-cs.csl (#4480) 5de3904d80 Update budownictwo-i-architektura-pl.csl (#4479) 9d9c1da2ae Add files via upload (#4478) 96200b074f Create instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-… (#4476) 8aa9cb0668 Update APA journal styles (#4475) 8549afaa60 Update in-text citation for legal_case for BJPS (#4470) 71c9e4d4e9 Update surgical-neurology-international.csl (#4472) a9dac179ef Create FUNDING.yml 633e864952 Create helsingin-yliopisto-teologinen-tiedekunta-teologian-tyyli.csl (#4303) 8797c0150e Create romanian-iso-690-full-note-with-ibid-romanian.csl (#4465) c1519e1e46 Create assosiation-of-firearms-and-toolmark-examiners.csl (#4468) c974e30516 Update ieee.csl (#4467) a1b7386a20 Update stale.yml (#4466) db549dd456 Update ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-ser… (#4462) 2822437d06 Update .travis.yml (#4463) 3d72c62e3f WIP: Adding deprecation notice to DIN1505-2 saying it has been superseded by ISO 690 (#4454) 1928c2b6e3 Fix links after KI update fad65b7341 Turn Kidney International into AMA dependent 6357af5e65 Update association-for-computing-machinery.csl (#4459) eab02ea208 Create berlin-school-of-economics-and-law-international-marketing-man… (#3774) a3e3d97e0b One more metadata fix e7d5071c23 Some Sheldon metadata fixes 3ad4260f6b Create jurnal-sains-farmasi-dan-klinis.csl (#4455) 46370dcbe1 Add "AIMS Press" journals (#4458) 57fca07925 Update association-for-computing-machinery.csl (#4456) 6fa90ed372 Add "Muséum national d'Histoire naturelle" journal styles (#4457) 7faf0b0acd Bundle update e3c1f85843 Create cryptogamie, bryologie (#4350) 525bba520b Create iso690-full-note-cs.csl (#4414) 932fad5b2d Create iso690-author-date-de.csl (#4344) ab23108d59 Create mbts-fullnote-bibliography.csl (#4363) c1630086c3 Create associacao-brasileira-de-normas-tecnicas-ibict-full.csl (#4202) 5586bbcb16 Create associacao-brasileira-de-normas-tecnicas-ibict-initials.csl (#4203) 483efcbd1b Update ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering.csl (#4442) 92f437df9d Create independent style for molecular-nutrition-and-food-research.csl… (#4342) 0d7f481773 Update taylor-and-francis-council-of-science-editors-author-date.csl (#4385) 2b2786b522 Create ritid-timarit-hugvisindastofnunnar.csl (#4315) 9534999f44 Create jsbm.csl (#4371) b390657156 Changed term on access macro, added rules for bill (#4407) 95c24f9033 Create ecausp-abnt.csl (#4420) 66ca962952 Reindent/reorder 91fefee3b2 Create materials-express.csl (#4445) ea5d50b772 Create institut-catholique-de-paris.csl (#4450) a4c07e2c33 Create institut-catholique-de-paris.csl (#4374) 8a17ae023a Update canadian-geotechnical-journal.csl (#4447) 7165db0b08 Update ens-de-lyon-centre-d-ingenierie-documentaire.csl (#4448) git-subtree-dir: src/main/resources/csl-styles git-subtree-split: b2fbe1592af06fd3ff862fa81878d1561a3ded0d --- .github/FUNDING.yml | 3 + .github/stale.yml | 4 +- .travis.yml | 4 +- Gemfile | 2 +- Gemfile.lock | 34 +- afte-journal.csl | 227 ++ apa-5th-edition.csl | 2 +- apa-6th-edition.csl | 1526 ++++++++++ apa-annotated-bibliography.csl | 2526 ++++++++-------- apa-cv.csl | 2193 +++++++------- apa-no-ampersand.csl | 2527 +++++++++-------- apa-no-doi-no-issue.csl | 4 +- apa-old-doi-prefix.csl | 4 +- apa-single-spaced.csl | 2526 ++++++++-------- apa.csl | 2525 ++++++++-------- association-for-computing-machinery.csl | 11 +- ...law-international-marketing-management.csl | 201 ++ bourgogne-franche-comte-nature.csl | 227 ++ british-journal-of-political-science.csl | 5 +- budownictwo-i-architektura-pl.csl | 213 +- canadian-geotechnical-journal.csl | 47 +- cell-research.csl | 2 +- dependent/adansonia.csl | 17 + dependent/aims-agriculture-and-food.csl | 16 + dependent/aims-allergy-and-immunology.csl | 16 + dependent/aims-bioengineering.csl | 16 + dependent/aims-biophysics.csl | 16 + ...electronics-and-electrical-engineering.csl | 16 + dependent/aims-energy.csl | 16 + dependent/aims-environmental-science.csl | 16 + dependent/aims-genetics.csl | 16 + dependent/aims-geosciences.csl | 16 + dependent/aims-materials-science.csl | 16 + dependent/aims-mathematics.csl | 16 + dependent/aims-medical-science.csl | 16 + dependent/aims-microbiology.csl | 16 + dependent/aims-molecular-science.csl | 16 + dependent/aims-neuroscience.csl | 16 + dependent/aims-public-health.csl | 16 + dependent/anthropozoologica.csl | 17 + ...ehavior-analysis-research-and-practice.csl | 16 + ...chology.csl => behavioral-development.csl} | 13 +- .../big-data-and-information-analytics.csl | 16 + dependent/budownictwo-i-architektura-en.csl | 19 - ...anadian-journal-of-behavioural-science.csl | 4 +- ...ian-journal-of-experimental-psychology.csl | 4 +- dependent/canadian-psychology.csl | 4 +- ...cal-and-translational-gastroenterology.csl | 2 +- dependent/cryptogamie-algologie.csl | 17 + dependent/cryptogamie-bryologie.csl | 17 + dependent/cryptogamie-mycologie.csl | 17 + .../european-journal-of-health-psychology.csl | 17 + dependent/geodiversitas.csl | 17 + dependent/green-finance.csl | 16 + dependent/institut-catholique-de-paris.csl | 22 + .../international-journal-of-oral-science.csl | 2 +- dependent/journal-of-latina-o-psychology.csl | 8 +- .../kidney-international-supplements.csl | 2 +- dependent/kidney-international.csl | 16 + ...thematical-biosciences-and-engineering.csl | 16 + dependent/mathematics-in-engineering.csl | 16 + .../molecular-nutrition-and-food-research.csl | 22 - ...-psychology.csl => motivation-science.csl} | 14 +- dependent/national-accounting-review.csl | 15 + dependent/naturae.csl | 16 + dependent/practice-innovations.csl | 17 + dependent/psychology-and-neuroscience.csl | 17 + .../psychology-of-men-and-masculinity.csl | 4 +- dependent/qualitative-psychology.csl | 6 +- .../quantitative-finance-and-economics.csl | 16 + ...of-teaching-and-learning-in-psychology.csl | 17 + dependent/school-psychology-quarterly.csl | 8 +- dependent/stigma-and-health.csl | 17 + dependent/the-humanistic-psychologist.csl | 17 + ...tional-issues-in-psychological-science.csl | 17 + .../traumatology-an-international-journal.csl | 4 +- dependent/zoosystema.csl | 17 + din-1505-2-alphanumeric.csl | 2 +- din-1505-2-numeric-alphabetical.csl | 2 +- din-1505-2-numeric.csl | 2 +- din-1505-2.csl | 2 +- ...-lyon-centre-d-ingenierie-documentaire.csl | 7 +- ieee-with-url.csl | 14 +- ieee.csl | 16 +- informal-logic.csl | 380 +++ ...-em-ciencia-e-tecnologia-abnt-initials.csl | 614 ++++ ...nformacao-em-ciencia-e-tecnologia-abnt.csl | 614 ++++ iso690-author-date-de.csl | 581 ++++ iso690-full-note-cs.csl | 593 ++++ iso690-full-note-with-ibid-ro.csl | 603 ++++ journal-of-small-business-management.csl | 1498 ++++++++++ jurnal-sains-farmasi-dan-klinis.csl | 348 +++ kidney-international.csl | 172 -- les-nouvelles-de-l-archeologie.csl | 4 +- materials-express.csl | 181 ++ midwestern-baptist-theological-seminary.csl | 1513 ++++++++++ molecular-nutrition-and-food-research.csl | 160 ++ museum-national-dhistoire-naturelle.csl | 306 ++ renamed-styles.json | 1 + ritid.csl | 1353 +++++++++ ...dustrial-sales-and-service-engineering.csl | 20 +- spec/sheldon/items.json | 7 +- surgical-neurology-international.csl | 15 +- ...council-of-science-editors-author-date.csl | 22 +- ...den-betriebswirtschaftslehre-marketing.csl | 2 +- transversalites.csl | 580 ++++ ...lo-escola-de-comunicacoes-e-artes-abnt.csl | 573 ++++ ...raduacao-e-pesquisa-de-engenharia-abnt.csl | 607 ++++ ...ersity-of-helsinki-faculty-of-theology.csl | 319 ++- university-of-lincoln-harvard.csl | 40 +- weed-research.csl | 2 +- 111 files changed, 20347 insertions(+), 6394 deletions(-) create mode 100644 .github/FUNDING.yml create mode 100644 afte-journal.csl create mode 100644 apa-6th-edition.csl create mode 100644 berlin-school-of-economics-and-law-international-marketing-management.csl create mode 100644 bourgogne-franche-comte-nature.csl create mode 100644 dependent/adansonia.csl create mode 100644 dependent/aims-agriculture-and-food.csl create mode 100644 dependent/aims-allergy-and-immunology.csl create mode 100644 dependent/aims-bioengineering.csl create mode 100644 dependent/aims-biophysics.csl create mode 100644 dependent/aims-electronics-and-electrical-engineering.csl create mode 100644 dependent/aims-energy.csl create mode 100644 dependent/aims-environmental-science.csl create mode 100644 dependent/aims-genetics.csl create mode 100644 dependent/aims-geosciences.csl create mode 100644 dependent/aims-materials-science.csl create mode 100644 dependent/aims-mathematics.csl create mode 100644 dependent/aims-medical-science.csl create mode 100644 dependent/aims-microbiology.csl create mode 100644 dependent/aims-molecular-science.csl create mode 100644 dependent/aims-neuroscience.csl create mode 100644 dependent/aims-public-health.csl create mode 100644 dependent/anthropozoologica.csl create mode 100644 dependent/behavior-analysis-research-and-practice.csl rename dependent/{military-psychology.csl => behavioral-development.csl} (55%) create mode 100644 dependent/big-data-and-information-analytics.csl delete mode 100644 dependent/budownictwo-i-architektura-en.csl create mode 100644 dependent/cryptogamie-algologie.csl create mode 100644 dependent/cryptogamie-bryologie.csl create mode 100644 dependent/cryptogamie-mycologie.csl create mode 100644 dependent/european-journal-of-health-psychology.csl create mode 100644 dependent/geodiversitas.csl create mode 100644 dependent/green-finance.csl create mode 100644 dependent/institut-catholique-de-paris.csl create mode 100644 dependent/kidney-international.csl create mode 100644 dependent/mathematical-biosciences-and-engineering.csl create mode 100644 dependent/mathematics-in-engineering.csl delete mode 100644 dependent/molecular-nutrition-and-food-research.csl rename dependent/{review-of-general-psychology.csl => motivation-science.csl} (53%) create mode 100644 dependent/national-accounting-review.csl create mode 100644 dependent/naturae.csl create mode 100644 dependent/practice-innovations.csl create mode 100644 dependent/psychology-and-neuroscience.csl create mode 100644 dependent/quantitative-finance-and-economics.csl create mode 100644 dependent/scholarship-of-teaching-and-learning-in-psychology.csl create mode 100644 dependent/stigma-and-health.csl create mode 100644 dependent/the-humanistic-psychologist.csl create mode 100644 dependent/translational-issues-in-psychological-science.csl create mode 100644 dependent/zoosystema.csl create mode 100644 informal-logic.csl create mode 100644 instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt-initials.csl create mode 100644 instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt.csl create mode 100644 iso690-author-date-de.csl create mode 100644 iso690-full-note-cs.csl create mode 100644 iso690-full-note-with-ibid-ro.csl create mode 100644 journal-of-small-business-management.csl create mode 100644 jurnal-sains-farmasi-dan-klinis.csl delete mode 100644 kidney-international.csl create mode 100644 materials-express.csl create mode 100644 midwestern-baptist-theological-seminary.csl create mode 100644 molecular-nutrition-and-food-research.csl create mode 100644 museum-national-dhistoire-naturelle.csl create mode 100644 ritid.csl create mode 100644 transversalites.csl create mode 100644 universidade-de-sao-paulo-escola-de-comunicacoes-e-artes-abnt.csl create mode 100644 universidade-federal-do-rio-de-janeiro-instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-engenharia-abnt.csl diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000000..85be4bb9662 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: rmzelle diff --git a/.github/stale.yml b/.github/stale.yml index 64d14f64815..c226400853f 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,7 +1,7 @@ # Number of days of inactivity before an issue becomes stale daysUntilStale: 30 # Number of days of inactivity before a stale issue is closed -daysUntilClose: 14 +daysUntilClose: false # Issues with these labels will never be considered stale exemptLabels: - pinned @@ -13,6 +13,8 @@ staleLabel: waiting # Comment to post when marking an issue as stale. Set to `false` to disable markComment: > This issue hasn't seen any activity in the past 30 days. It will be automatically closed if no further activity occurs in the next two weeks. +# Limit to only `issues` or `pulls` +only: pulls # Comment to post when closing a stale issue. Set to `false` to disable closeComment: false # Limit the number of actions per hour, from 1-30. Default is 30 diff --git a/.travis.yml b/.travis.yml index b7faafd2f12..9ca1f2550dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,8 @@ -dist: xenial +dist: bionic language: ruby cache: bundler rvm: - - 2.5.3 + - 2.6.5 install: - bundle install --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle} - bundle update sheldon diff --git a/Gemfile b/Gemfile index fe9fc8e61c8..65bb4267142 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,4 @@ -ruby '2.5.3' +ruby '2.6.5' source 'https://rubygems.org' gem 'rake' diff --git a/Gemfile.lock b/Gemfile.lock index 0d689349329..c3cc47dff24 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/citation-style-language/Sheldon.git - revision: 09d0daebe0b6c76ccf9963f86e2e966b28a3ef46 + revision: c2cc508c57157ee7d00948e24c46e10e3f319d57 specs: sheldon (1.0.2) citeproc-ruby @@ -26,30 +26,30 @@ GEM diff-lcs (1.3) diffy (3.3.0) dotenv (2.7.5) - fuubar (2.4.1) + fuubar (2.5.0) rspec-core (~> 3.0) ruby-progressbar (~> 1.4) mini_portile2 (2.4.0) namae (1.0.1) - nokogiri (1.10.4) + nokogiri (1.10.7) mini_portile2 (~> 2.4.0) ostruct (0.1.0) - rake (12.3.3) - reverse_markdown (1.1.0) + rake (13.0.1) + reverse_markdown (1.3.0) nokogiri - rspec (3.8.0) - rspec-core (~> 3.8.0) - rspec-expectations (~> 3.8.0) - rspec-mocks (~> 3.8.0) - rspec-core (3.8.2) - rspec-support (~> 3.8.0) - rspec-expectations (3.8.4) + rspec (3.9.0) + rspec-core (~> 3.9.0) + rspec-expectations (~> 3.9.0) + rspec-mocks (~> 3.9.0) + rspec-core (3.9.0) + rspec-support (~> 3.9.0) + rspec-expectations (3.9.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.8.0) - rspec-mocks (3.8.1) + rspec-support (~> 3.9.0) + rspec-mocks (3.9.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.8.0) - rspec-support (3.8.2) + rspec-support (~> 3.9.0) + rspec-support (3.9.0) ruby-progressbar (1.10.1) PLATFORMS @@ -64,7 +64,7 @@ DEPENDENCIES sheldon! RUBY VERSION - ruby 2.5.3p105 + ruby 2.6.5p114 BUNDLED WITH 1.17.3 diff --git a/afte-journal.csl b/afte-journal.csl new file mode 100644 index 00000000000..11ed6b2f6b5 --- /dev/null +++ b/afte-journal.csl @@ -0,0 +1,227 @@ + + diff --git a/apa-5th-edition.csl b/apa-5th-edition.csl index e53978208e7..7e22c594594 100644 --- a/apa-5th-edition.csl +++ b/apa-5th-edition.csl @@ -2,7 +2,7 @@ diff --git a/apa-annotated-bibliography.csl b/apa-annotated-bibliography.csl index 0934aa51d41..ee69014eb7b 100644 --- a/apa-annotated-bibliography.csl +++ b/apa-annotated-bibliography.csl @@ -1,38 +1,20 @@ diff --git a/apa-cv.csl b/apa-cv.csl index 8b2ce1294bc..fd83806c0be 100644 --- a/apa-cv.csl +++ b/apa-cv.csl @@ -1,38 +1,20 @@ + \ No newline at end of file diff --git a/apa-no-doi-no-issue.csl b/apa-no-doi-no-issue.csl index 241f6b6e358..792f0774424 100644 --- a/apa-no-doi-no-issue.csl +++ b/apa-no-doi-no-issue.csl @@ -2,10 +2,10 @@ + \ No newline at end of file diff --git a/apa.csl b/apa.csl index 700cfc67754..0c0ed3caa30 100644 --- a/apa.csl +++ b/apa.csl @@ -1,37 +1,20 @@ + \ No newline at end of file diff --git a/association-for-computing-machinery.csl b/association-for-computing-machinery.csl index 71b3ae878c6..cc896a8c47d 100644 --- a/association-for-computing-machinery.csl +++ b/association-for-computing-machinery.csl @@ -13,7 +13,7 @@ - 2017-07-03T15:22:45+00:00 + 2019-12-18T11:27:24+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -125,7 +125,7 @@ - + @@ -137,6 +137,7 @@ + @@ -180,6 +181,12 @@ + + + + + + diff --git a/berlin-school-of-economics-and-law-international-marketing-management.csl b/berlin-school-of-economics-and-law-international-marketing-management.csl new file mode 100644 index 00000000000..ba1dcaaa7fa --- /dev/null +++ b/berlin-school-of-economics-and-law-international-marketing-management.csl @@ -0,0 +1,201 @@ + + diff --git a/bourgogne-franche-comte-nature.csl b/bourgogne-franche-comte-nature.csl new file mode 100644 index 00000000000..0cacbadea3a --- /dev/null +++ b/bourgogne-franche-comte-nature.csl @@ -0,0 +1,227 @@ + + diff --git a/british-journal-of-political-science.csl b/british-journal-of-political-science.csl index 2c70201a96a..766ebb202dc 100644 --- a/british-journal-of-political-science.csl +++ b/british-journal-of-political-science.csl @@ -18,7 +18,7 @@ 0007-1234 1469-2112 BJPS Style as updated per 6 March 2018 guidelines. - 2018-09-13T13:59:45+00:00 + 2019-12-23T10:58:34+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -51,6 +51,9 @@ + + + diff --git a/budownictwo-i-architektura-pl.csl b/budownictwo-i-architektura-pl.csl index ccf74dd7720..f1c542ab541 100644 --- a/budownictwo-i-architektura-pl.csl +++ b/budownictwo-i-architektura-pl.csl @@ -1,7 +1,8 @@ - diff --git a/canadian-geotechnical-journal.csl b/canadian-geotechnical-journal.csl index b2ee8d48f4d..c50e50f16e8 100644 --- a/canadian-geotechnical-journal.csl +++ b/canadian-geotechnical-journal.csl @@ -5,7 +5,7 @@ http://www.zotero.org/styles/canadian-geotechnical-journal - + Sebastian Karcher @@ -17,13 +17,21 @@ Libor Ansorge http://www.ansorge.website + + Patrick O'Brien, PhD + 0008-3674 1208-6010 - 2016-05-22T17:28:58+00:00 + 2019-12-12T13:45:56+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License + + + available from + + @@ -38,8 +46,8 @@ - @@ -74,17 +82,16 @@ - + - - - - - + + + + - + @@ -93,7 +100,7 @@ - + @@ -116,19 +123,9 @@ - - - - - - - - - - - - - + + + diff --git a/cell-research.csl b/cell-research.csl index bba823e44d4..e90f480bd55 100644 --- a/cell-research.csl +++ b/cell-research.csl @@ -4,7 +4,7 @@ Cell Research http://www.zotero.org/styles/cell-research - + Sebastian Karcher diff --git a/dependent/adansonia.csl b/dependent/adansonia.csl new file mode 100644 index 00000000000..67b20f51b89 --- /dev/null +++ b/dependent/adansonia.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/aims-agriculture-and-food.csl b/dependent/aims-agriculture-and-food.csl new file mode 100644 index 00000000000..ae31edcc09d --- /dev/null +++ b/dependent/aims-agriculture-and-food.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-allergy-and-immunology.csl b/dependent/aims-allergy-and-immunology.csl new file mode 100644 index 00000000000..6064b1247c8 --- /dev/null +++ b/dependent/aims-allergy-and-immunology.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-bioengineering.csl b/dependent/aims-bioengineering.csl new file mode 100644 index 00000000000..5fd820e6cad --- /dev/null +++ b/dependent/aims-bioengineering.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-biophysics.csl b/dependent/aims-biophysics.csl new file mode 100644 index 00000000000..f5847e96cf8 --- /dev/null +++ b/dependent/aims-biophysics.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-electronics-and-electrical-engineering.csl b/dependent/aims-electronics-and-electrical-engineering.csl new file mode 100644 index 00000000000..c9a4022b222 --- /dev/null +++ b/dependent/aims-electronics-and-electrical-engineering.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-energy.csl b/dependent/aims-energy.csl new file mode 100644 index 00000000000..4f886832f34 --- /dev/null +++ b/dependent/aims-energy.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-environmental-science.csl b/dependent/aims-environmental-science.csl new file mode 100644 index 00000000000..cffbb04f136 --- /dev/null +++ b/dependent/aims-environmental-science.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-genetics.csl b/dependent/aims-genetics.csl new file mode 100644 index 00000000000..ffc314ffc76 --- /dev/null +++ b/dependent/aims-genetics.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-geosciences.csl b/dependent/aims-geosciences.csl new file mode 100644 index 00000000000..4c1c44c8422 --- /dev/null +++ b/dependent/aims-geosciences.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-materials-science.csl b/dependent/aims-materials-science.csl new file mode 100644 index 00000000000..1000b8d1f86 --- /dev/null +++ b/dependent/aims-materials-science.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-mathematics.csl b/dependent/aims-mathematics.csl new file mode 100644 index 00000000000..da912da020d --- /dev/null +++ b/dependent/aims-mathematics.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-medical-science.csl b/dependent/aims-medical-science.csl new file mode 100644 index 00000000000..aa765c32c5b --- /dev/null +++ b/dependent/aims-medical-science.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-microbiology.csl b/dependent/aims-microbiology.csl new file mode 100644 index 00000000000..9a5461b90bb --- /dev/null +++ b/dependent/aims-microbiology.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-molecular-science.csl b/dependent/aims-molecular-science.csl new file mode 100644 index 00000000000..a8c30aec6cb --- /dev/null +++ b/dependent/aims-molecular-science.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-neuroscience.csl b/dependent/aims-neuroscience.csl new file mode 100644 index 00000000000..d18d10bdb67 --- /dev/null +++ b/dependent/aims-neuroscience.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/aims-public-health.csl b/dependent/aims-public-health.csl new file mode 100644 index 00000000000..5db8848b6fb --- /dev/null +++ b/dependent/aims-public-health.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/anthropozoologica.csl b/dependent/anthropozoologica.csl new file mode 100644 index 00000000000..6b424ccd145 --- /dev/null +++ b/dependent/anthropozoologica.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/behavior-analysis-research-and-practice.csl b/dependent/behavior-analysis-research-and-practice.csl new file mode 100644 index 00000000000..c874f4f8149 --- /dev/null +++ b/dependent/behavior-analysis-research-and-practice.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/military-psychology.csl b/dependent/behavioral-development.csl similarity index 55% rename from dependent/military-psychology.csl rename to dependent/behavioral-development.csl index fe4e6969d51..f2ba10f8889 100644 --- a/dependent/military-psychology.csl +++ b/dependent/behavioral-development.csl @@ -1,16 +1,15 @@ diff --git a/dependent/budownictwo-i-architektura-en.csl b/dependent/budownictwo-i-architektura-en.csl deleted file mode 100644 index aea67f03591..00000000000 --- a/dependent/budownictwo-i-architektura-en.csl +++ /dev/null @@ -1,19 +0,0 @@ - - diff --git a/dependent/canadian-journal-of-behavioural-science.csl b/dependent/canadian-journal-of-behavioural-science.csl index 838ddd1793e..961b83f292a 100644 --- a/dependent/canadian-journal-of-behavioural-science.csl +++ b/dependent/canadian-journal-of-behavioural-science.csl @@ -1,8 +1,8 @@ diff --git a/dependent/cryptogamie-bryologie.csl b/dependent/cryptogamie-bryologie.csl new file mode 100644 index 00000000000..cfc8916ded1 --- /dev/null +++ b/dependent/cryptogamie-bryologie.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/cryptogamie-mycologie.csl b/dependent/cryptogamie-mycologie.csl new file mode 100644 index 00000000000..3663448b2e7 --- /dev/null +++ b/dependent/cryptogamie-mycologie.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/european-journal-of-health-psychology.csl b/dependent/european-journal-of-health-psychology.csl new file mode 100644 index 00000000000..d352af21e62 --- /dev/null +++ b/dependent/european-journal-of-health-psychology.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/geodiversitas.csl b/dependent/geodiversitas.csl new file mode 100644 index 00000000000..80b005f2abb --- /dev/null +++ b/dependent/geodiversitas.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/green-finance.csl b/dependent/green-finance.csl new file mode 100644 index 00000000000..bbb03310d5d --- /dev/null +++ b/dependent/green-finance.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/institut-catholique-de-paris.csl b/dependent/institut-catholique-de-paris.csl new file mode 100644 index 00000000000..a792f8c3915 --- /dev/null +++ b/dependent/institut-catholique-de-paris.csl @@ -0,0 +1,22 @@ + + diff --git a/dependent/international-journal-of-oral-science.csl b/dependent/international-journal-of-oral-science.csl index 6d12d16dab5..a1830491da1 100644 --- a/dependent/international-journal-of-oral-science.csl +++ b/dependent/international-journal-of-oral-science.csl @@ -5,7 +5,7 @@ International Journal of Oral Science http://www.zotero.org/styles/international-journal-of-oral-science - + diff --git a/dependent/journal-of-latina-o-psychology.csl b/dependent/journal-of-latina-o-psychology.csl index 22475008e08..d9c77493c18 100644 --- a/dependent/journal-of-latina-o-psychology.csl +++ b/dependent/journal-of-latina-o-psychology.csl @@ -1,16 +1,16 @@ diff --git a/dependent/mathematical-biosciences-and-engineering.csl b/dependent/mathematical-biosciences-and-engineering.csl new file mode 100644 index 00000000000..c4aa878e945 --- /dev/null +++ b/dependent/mathematical-biosciences-and-engineering.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/mathematics-in-engineering.csl b/dependent/mathematics-in-engineering.csl new file mode 100644 index 00000000000..742f4d84cd6 --- /dev/null +++ b/dependent/mathematics-in-engineering.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/molecular-nutrition-and-food-research.csl b/dependent/molecular-nutrition-and-food-research.csl deleted file mode 100644 index 26ba3f6e847..00000000000 --- a/dependent/molecular-nutrition-and-food-research.csl +++ /dev/null @@ -1,22 +0,0 @@ - - diff --git a/dependent/review-of-general-psychology.csl b/dependent/motivation-science.csl similarity index 53% rename from dependent/review-of-general-psychology.csl rename to dependent/motivation-science.csl index d0889a1ec39..12d5acf307c 100644 --- a/dependent/review-of-general-psychology.csl +++ b/dependent/motivation-science.csl @@ -1,16 +1,16 @@ diff --git a/dependent/naturae.csl b/dependent/naturae.csl new file mode 100644 index 00000000000..c5efdeaf9e9 --- /dev/null +++ b/dependent/naturae.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/practice-innovations.csl b/dependent/practice-innovations.csl new file mode 100644 index 00000000000..d0ca17094f2 --- /dev/null +++ b/dependent/practice-innovations.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/psychology-and-neuroscience.csl b/dependent/psychology-and-neuroscience.csl new file mode 100644 index 00000000000..536702da7b7 --- /dev/null +++ b/dependent/psychology-and-neuroscience.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/psychology-of-men-and-masculinity.csl b/dependent/psychology-of-men-and-masculinity.csl index 10685ef009e..b32219ea603 100644 --- a/dependent/psychology-of-men-and-masculinity.csl +++ b/dependent/psychology-of-men-and-masculinity.csl @@ -1,8 +1,8 @@ diff --git a/dependent/scholarship-of-teaching-and-learning-in-psychology.csl b/dependent/scholarship-of-teaching-and-learning-in-psychology.csl new file mode 100644 index 00000000000..df503bcd91c --- /dev/null +++ b/dependent/scholarship-of-teaching-and-learning-in-psychology.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/school-psychology-quarterly.csl b/dependent/school-psychology-quarterly.csl index e2f70960915..c07a4e02fce 100644 --- a/dependent/school-psychology-quarterly.csl +++ b/dependent/school-psychology-quarterly.csl @@ -1,16 +1,16 @@ diff --git a/dependent/the-humanistic-psychologist.csl b/dependent/the-humanistic-psychologist.csl new file mode 100644 index 00000000000..b990e622880 --- /dev/null +++ b/dependent/the-humanistic-psychologist.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/translational-issues-in-psychological-science.csl b/dependent/translational-issues-in-psychological-science.csl new file mode 100644 index 00000000000..3fa2d194a18 --- /dev/null +++ b/dependent/translational-issues-in-psychological-science.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/traumatology-an-international-journal.csl b/dependent/traumatology-an-international-journal.csl index f77d787e820..1ff1a5b36e7 100644 --- a/dependent/traumatology-an-international-journal.csl +++ b/dependent/traumatology-an-international-journal.csl @@ -1,8 +1,8 @@ diff --git a/din-1505-2-alphanumeric.csl b/din-1505-2-alphanumeric.csl index 18c66983468..b78be2cdf8a 100644 --- a/din-1505-2-alphanumeric.csl +++ b/din-1505-2-alphanumeric.csl @@ -1,7 +1,7 @@ diff --git a/instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt-initials.csl b/instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt-initials.csl new file mode 100644 index 00000000000..db28e79522b --- /dev/null +++ b/instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt-initials.csl @@ -0,0 +1,614 @@ + + diff --git a/instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt.csl b/instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt.csl new file mode 100644 index 00000000000..a3e34f1c8ac --- /dev/null +++ b/instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt.csl @@ -0,0 +1,614 @@ + + diff --git a/iso690-author-date-de.csl b/iso690-author-date-de.csl new file mode 100644 index 00000000000..2ec6fd25bc1 --- /dev/null +++ b/iso690-author-date-de.csl @@ -0,0 +1,581 @@ + + diff --git a/iso690-full-note-cs.csl b/iso690-full-note-cs.csl new file mode 100644 index 00000000000..f7adf459017 --- /dev/null +++ b/iso690-full-note-cs.csl @@ -0,0 +1,593 @@ + + diff --git a/iso690-full-note-with-ibid-ro.csl b/iso690-full-note-with-ibid-ro.csl new file mode 100644 index 00000000000..aefe339c2a1 --- /dev/null +++ b/iso690-full-note-with-ibid-ro.csl @@ -0,0 +1,603 @@ + + diff --git a/journal-of-small-business-management.csl b/journal-of-small-business-management.csl new file mode 100644 index 00000000000..490b2b0c04c --- /dev/null +++ b/journal-of-small-business-management.csl @@ -0,0 +1,1498 @@ + + diff --git a/jurnal-sains-farmasi-dan-klinis.csl b/jurnal-sains-farmasi-dan-klinis.csl new file mode 100644 index 00000000000..ebc4249ee9c --- /dev/null +++ b/jurnal-sains-farmasi-dan-klinis.csl @@ -0,0 +1,348 @@ + + diff --git a/kidney-international.csl b/kidney-international.csl deleted file mode 100644 index 8061490540e..00000000000 --- a/kidney-international.csl +++ /dev/null @@ -1,172 +0,0 @@ - - diff --git a/les-nouvelles-de-l-archeologie.csl b/les-nouvelles-de-l-archeologie.csl index 9cace0de14b..d10aa39687f 100644 --- a/les-nouvelles-de-l-archeologie.csl +++ b/les-nouvelles-de-l-archeologie.csl @@ -54,8 +54,8 @@ diff --git a/materials-express.csl b/materials-express.csl new file mode 100644 index 00000000000..4879aa0efd6 --- /dev/null +++ b/materials-express.csl @@ -0,0 +1,181 @@ + + diff --git a/midwestern-baptist-theological-seminary.csl b/midwestern-baptist-theological-seminary.csl new file mode 100644 index 00000000000..8fb1a643c84 --- /dev/null +++ b/midwestern-baptist-theological-seminary.csl @@ -0,0 +1,1513 @@ + + diff --git a/molecular-nutrition-and-food-research.csl b/molecular-nutrition-and-food-research.csl new file mode 100644 index 00000000000..4319de8f3d0 --- /dev/null +++ b/molecular-nutrition-and-food-research.csl @@ -0,0 +1,160 @@ + + diff --git a/museum-national-dhistoire-naturelle.csl b/museum-national-dhistoire-naturelle.csl new file mode 100644 index 00000000000..13c947bf2a5 --- /dev/null +++ b/museum-national-dhistoire-naturelle.csl @@ -0,0 +1,306 @@ + + diff --git a/renamed-styles.json b/renamed-styles.json index db071560619..636fa7f03be 100644 --- a/renamed-styles.json +++ b/renamed-styles.json @@ -52,6 +52,7 @@ "brain-and-development-english-language": "brain-and-development", "british-ecological-society": "apa-old-doi-prefix", "british-volume-of-the-journal-of-bone-and-joint-surgery": "the-journal-of-bone-and-joint-surgery", + "budownictwo-i-architektura-en": "budownictwo-i-architektura-pl", "bulletin-of-materials-science": "springer-humanities-author-date", "bulletin-of-the-medical-library-association": "journal-of-the-medical-library-association", "canadian-journal-of-anaesthesia": "canadian-journal-of-anesthesia", diff --git a/ritid.csl b/ritid.csl new file mode 100644 index 00000000000..5ba403bb591 --- /dev/null +++ b/ritid.csl @@ -0,0 +1,1353 @@ + + diff --git a/ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering.csl b/ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering.csl index 15db6be3b02..6864ca77578 100644 --- a/ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering.csl +++ b/ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering.csl @@ -12,19 +12,19 @@ sebastian.knop@rub.de - 2019-05-20T11:40:20+01:00 + 2019-12-18T15:42:00+01:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License - et&#160;al. + et al. abgerufen am und - et&#160;al. + et al. ᵗʰ ˢᵗ ⁿᵈ @@ -37,6 +37,7 @@ + @@ -102,10 +103,7 @@ - - - - + @@ -138,7 +136,7 @@ - + @@ -246,13 +244,13 @@ - + @@ -307,7 +305,7 @@ - + diff --git a/spec/sheldon/items.json b/spec/sheldon/items.json index bd359da6bef..889a19c8d2f 100644 --- a/spec/sheldon/items.json +++ b/spec/sheldon/items.json @@ -2,7 +2,7 @@ { "id": "HanckevarietiescapitalismConflict2007", "type": "book", - "title": "Beyond varieties of capitalism : Conflict, contradiction, and complementarities in the European economy", + "title": "Beyond varieties of capitalism: Conflict, contradiction, and complementarities in the European economy", "publisher": "Oxford University Press", "publisher-place": "Oxford and New York", "source": "Open WorldCat", @@ -96,11 +96,12 @@ "type": "article-journal", "title": "A data citation roadmap for scholarly data repositories", "container-title": "Scientific Data", + "container-title-short": "Sci. Data", "page": "28", "volume": "6", "issue": "1", "source": "Nature", - "abstract": "This article presents a practical roadmap for scholarly data repositories to implement data citation in accordance with the Joint Declaration of Data Citation Principles, a synopsis and harmonization of the recommendations of major science policy bodies. The roadmap was developed by the Repositories Expert Group, as part of the Data Citation Implementation Pilot (DCIP) project, an initiative of FORCE11.org and the NIH-funded BioCADDIE (\n https://biocaddie.org\n \n ) project. The roadmap makes 11 specific recommendations, grouped into three phases of implementation: a) required steps needed to support the Joint Declaration of Data Citation Principles, b) recommended steps that facilitate article/data publication workflows, and c) optional steps that further improve data citation support provided by data repositories. We describe the early adoption of these recommendations 18 months after they have first been published, looking specifically at implementations of machine-readable metadata on dataset landing pages.", + "abstract": "This article presents a practical roadmap for scholarly data repositories to implement data citation in accordance with the Joint Declaration of Data Citation Principles, a synopsis and harmonization of the recommendations of major science policy bodies. The roadmap was developed by the Repositories Expert Group, as part of the Data Citation Implementation Pilot (DCIP) project, an initiative of FORCE11.org and the NIH-funded BioCADDIE (https://biocaddie.org) project. The roadmap makes 11 specific recommendations, grouped into three phases of implementation: a) required steps needed to support the Joint Declaration of Data Citation Principles, b) recommended steps that facilitate article/data publication workflows, and c) optional steps that further improve data citation support provided by data repositories. We describe the early adoption of these recommendations 18 months after they have first been published, looking specifically at implementations of machine-readable metadata on dataset landing pages.", "URL": "http://www.nature.com/articles/s41597-019-0031-8", "DOI": "10.1038/s41597-019-0031-8", "ISSN": "2052-4463", @@ -171,4 +172,4 @@ }, "citation-number": 4 } -] \ No newline at end of file +] diff --git a/surgical-neurology-international.csl b/surgical-neurology-international.csl index b720c58eecb..f794bd3936e 100644 --- a/surgical-neurology-international.csl +++ b/surgical-neurology-international.csl @@ -1,11 +1,13 @@ - diff --git a/universidade-de-sao-paulo-escola-de-comunicacoes-e-artes-abnt.csl b/universidade-de-sao-paulo-escola-de-comunicacoes-e-artes-abnt.csl new file mode 100644 index 00000000000..682e01c27dc --- /dev/null +++ b/universidade-de-sao-paulo-escola-de-comunicacoes-e-artes-abnt.csl @@ -0,0 +1,573 @@ + + diff --git a/universidade-federal-do-rio-de-janeiro-instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-engenharia-abnt.csl b/universidade-federal-do-rio-de-janeiro-instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-engenharia-abnt.csl new file mode 100644 index 00000000000..da8a9b7f667 --- /dev/null +++ b/universidade-federal-do-rio-de-janeiro-instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-engenharia-abnt.csl @@ -0,0 +1,607 @@ + + diff --git a/university-of-helsinki-faculty-of-theology.csl b/university-of-helsinki-faculty-of-theology.csl index 5b3eb0bbfc0..47b0cda4685 100644 --- a/university-of-helsinki-faculty-of-theology.csl +++ b/university-of-helsinki-faculty-of-theology.csl @@ -1,49 +1,48 @@ - diff --git a/university-of-lincoln-harvard.csl b/university-of-lincoln-harvard.csl index 492c8bd9229..3ad984a52df 100644 --- a/university-of-lincoln-harvard.csl +++ b/university-of-lincoln-harvard.csl @@ -14,7 +14,7 @@ The Harvard author-date style, 2nd edition, as outlined by the library of the University of Lincoln. - 2019-03-26T13:11:32+00:00 + 2019-11-13T14:03:41+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -61,16 +61,18 @@ - - - - - - - - - - + + + + + + + + + + + + @@ -166,8 +168,14 @@ - - + + + + + + + + @@ -177,6 +185,12 @@ + + + + + + diff --git a/weed-research.csl b/weed-research.csl index 25bb79f07ba..67bcdb3fe36 100644 --- a/weed-research.csl +++ b/weed-research.csl @@ -42,7 +42,7 @@ - +