From 58a8851adaab2bdb8f327a6001c5f9fae179f57f Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Sun, 18 Sep 2022 21:19:47 +0200 Subject: [PATCH 01/27] Add config for codespaces (#9158) * Add config for codespaces * Use spaces instead of tabs --- .devcontainer/devcontainer.json | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000000..c242a90a152 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,37 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers/java +{ + "name": "Java", + "image": "mcr.microsoft.com/vscode/devcontainers/base:bullseye", + + // Configure tool-specific properties. + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Set *default* container specific settings.json values on container create. + "settings": { + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "vscjava.vscode-java-pack" + ] + } + }, + + "onCreateCommand": "yes | sdk install java 18.0.2-tem && gradle assemble", + + // Need to connect as root otherwise we run into issues with gradle. + // default option is "vscode". More info: https://aka.ms/vscode-remote/containers/non-root. + "remoteUser": "root", + "features": { + // Adds a lightweight desktop that can be accessed using a VNC viewer or the web + "desktop-lite": "latest", + + // Install java 17 (java 18 is not yet available from ms) + "java": { + "version": "17", + "installGradle": true + } + } +} From fe3833d7beedd09a4748da30abc855fb091420fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 16:27:55 +0200 Subject: [PATCH 02/27] Bump slf4j-api from 2.0.0 to 2.0.1 in /buildSrc (#9164) Bumps [slf4j-api](https://github.com/qos-ch/slf4j) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_2.0.0...v_2.0.1) --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- buildSrc/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index a8c68783372..d2262a465a0 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -8,7 +8,7 @@ repositories { dependencies { implementation 'com.h2database:h2-mvstore:2.1.214' implementation 'org.apache.commons:commons-csv:1.9.0' - implementation 'org.slf4j:slf4j-api:2.0.0' + implementation 'org.slf4j:slf4j-api:2.0.1' } sourceSets{ From 27b36d30582b917357a63e9c4bd611000a84bfd1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 16:34:33 +0200 Subject: [PATCH 03/27] Bump unoloader from 7.4.0 to 7.4.1 (#9163) Bumps unoloader from 7.4.0 to 7.4.1. --- updated-dependencies: - dependency-name: org.libreoffice:unoloader dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 659d362f4ba..624ad279357 100644 --- a/build.gradle +++ b/build.gradle @@ -133,7 +133,7 @@ dependencies { implementation 'commons-cli:commons-cli:1.5.0' implementation 'org.libreoffice:libreoffice:7.4.0' - implementation 'org.libreoffice:unoloader:7.4.0' + implementation 'org.libreoffice:unoloader:7.4.1' implementation 'io.github.java-diff-utils:java-diff-utils:4.12' implementation 'info.debatty:java-string-similarity:2.0.0' From 8863e8b3593cc45ea0ae986014957c02514fde99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 16:34:42 +0200 Subject: [PATCH 04/27] Bump slf4j-api from 2.0.0 to 2.0.1 (#9162) Bumps [slf4j-api](https://github.com/qos-ch/slf4j) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_2.0.0...v_2.0.1) --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 624ad279357..1d27f9ac0d9 100644 --- a/build.gradle +++ b/build.gradle @@ -177,7 +177,7 @@ dependencies { implementation 'org.jsoup:jsoup:1.15.3' implementation 'com.konghq:unirest-java:3.13.11' - implementation 'org.slf4j:slf4j-api:2.0.0' + implementation 'org.slf4j:slf4j-api:2.0.1' implementation "org.tinylog:tinylog-api:2.5.0" implementation "org.tinylog:slf4j-tinylog:2.5.0" implementation "org.tinylog:tinylog-impl:2.5.0" From f84fd0c6e1467913e1e7e5aeffeaafa0efcfccb6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 16:34:56 +0200 Subject: [PATCH 05/27] Bump actions/upload-artifact from 2 to 3 (#9161) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2 to 3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/deployment.yml | 2 +- .github/workflows/gource.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 121fb51d795..de3c8f2b508 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -130,7 +130,7 @@ jobs: get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace "${{ steps.gitversion.outputs.AssemblySemVer }}","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}"} get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace "portable","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-portable"} - name: Upload to GitHub workflow artifacts store - uses: actions/upload-artifact@master + uses: actions/upload-artifact@v3 with: name: JabRef-${{ matrix.displayName }} path: build/distribution diff --git a/.github/workflows/gource.yml b/.github/workflows/gource.yml index 253ef9702a8..48c9e55d1e7 100644 --- a/.github/workflows/gource.yml +++ b/.github/workflows/gource.yml @@ -49,7 +49,7 @@ jobs: run: | mv gource/gource.mp4 gource-videos/jabref-complete.mp4 - name: 'Upload gource video' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3 with: name: Gource path: ./gource-videos/ From ab482773825ebde494745b2d200270acc102ab40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Sep 2022 16:55:19 +0200 Subject: [PATCH 06/27] Bump libreoffice from 7.4.0 to 7.4.1 (#9160) Bumps libreoffice from 7.4.0 to 7.4.1. --- updated-dependencies: - dependency-name: org.libreoffice:libreoffice dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1d27f9ac0d9..3510a5e6fa5 100644 --- a/build.gradle +++ b/build.gradle @@ -132,7 +132,7 @@ dependencies { implementation 'commons-cli:commons-cli:1.5.0' - implementation 'org.libreoffice:libreoffice:7.4.0' + implementation 'org.libreoffice:libreoffice:7.4.1' implementation 'org.libreoffice:unoloader:7.4.1' implementation 'io.github.java-diff-utils:java-diff-utils:4.12' From 7dcdd61ae5cdb2ebc06e60ed6d507eb952e9791b Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 20 Sep 2022 08:36:59 +0200 Subject: [PATCH 07/27] Fix saving triggers metadata changed (#9165) --- CHANGELOG.md | 2 +- .../logic/cleanup/FieldFormatterCleanup.java | 12 +++++----- .../logic/cleanup/FieldFormatterCleanups.java | 22 +++++++++++++++++++ .../model/metadata/ContentSelector.java | 7 +++++- .../org/jabref/model/metadata/MetaData.java | 9 ++++++-- 5 files changed, 42 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e4cfe3ac8a..bf910bf48dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,7 +33,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve - The global default directory for storing PDFs is now the subdirectory "JabRef" in the user's home. - We reworked the Define study parameters dialog. [#9123](https://github.com/JabRef/jabref/pull/9123) - We simplified the actions to fast-resolve duplicates to 'Keep Left', 'Keep Right', 'Keep Both' and 'Keep Merged'. [#9056](https://github.com/JabRef/jabref/issues/9056) - +- We fixed an issue where a message about changed metadata would occur on saving although nothing changed. [#9159](https://github.com/JabRef/jabref/issues/9159) ### Fixed diff --git a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java index 0d1cf5c5ad6..1594bdb4aab 100644 --- a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java +++ b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java @@ -105,15 +105,15 @@ public Formatter getFormatter() { } @Override - public boolean equals(Object o) { - if (this == o) { + public boolean equals(Object obj) { + if (this == obj) { return true; } - if (o instanceof FieldFormatterCleanup) { - FieldFormatterCleanup that = (FieldFormatterCleanup) o; - return Objects.equals(field, that.field) && Objects.equals(formatter, that.formatter); + if (!(obj instanceof FieldFormatterCleanup)) { + return false; } - return false; + FieldFormatterCleanup other = (FieldFormatterCleanup) obj; + return Objects.equals(field, other.field) && Objects.equals(formatter, other.formatter); } @Override diff --git a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java index ce53b68d144..153ee3be486 100644 --- a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java +++ b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java @@ -206,4 +206,26 @@ private static Formatter getFormatterFromString(String formatterName) { } return new IdentityFormatter(); } + + @Override + public int hashCode() { + return Objects.hash(actions, enabled); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof FieldFormatterCleanups)) { + return false; + } + FieldFormatterCleanups other = (FieldFormatterCleanups) obj; + return Objects.equals(actions, other.actions) && (enabled == other.enabled); + } + + @Override + public String toString() { + return "FieldFormatterCleanups [enabled=" + enabled + ", actions=" + actions + "]"; + } } diff --git a/src/main/java/org/jabref/model/metadata/ContentSelector.java b/src/main/java/org/jabref/model/metadata/ContentSelector.java index 1d51a893aa9..d2c633f6396 100644 --- a/src/main/java/org/jabref/model/metadata/ContentSelector.java +++ b/src/main/java/org/jabref/model/metadata/ContentSelector.java @@ -26,7 +26,7 @@ public boolean equals(Object o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if ((o == null) || (getClass() != o.getClass())) { return false; } @@ -35,6 +35,11 @@ public boolean equals(Object o) { Objects.equals(values, that.values); } + @Override + public String toString() { + return "ContentSelector [field=" + field + ", values=" + values + "]"; + } + @Override public int hashCode() { return Objects.hash(field, values); diff --git a/src/main/java/org/jabref/model/metadata/MetaData.java b/src/main/java/org/jabref/model/metadata/MetaData.java index 9b0ed2ae856..531ac1985be 100644 --- a/src/main/java/org/jabref/model/metadata/MetaData.java +++ b/src/main/java/org/jabref/model/metadata/MetaData.java @@ -375,7 +375,12 @@ public boolean equals(Object o) { @Override public int hashCode() { - return Objects.hash(groupsRoot.getValue(), encoding, encodingExplicitlySupplied, saveOrderConfig, citeKeyPatterns, userFileDirectory, - defaultCiteKeyPattern, saveActions, mode, isProtected, defaultFileDirectory); + return Objects.hash(isProtected, groupsRoot.getValue(), encoding, encodingExplicitlySupplied, saveOrderConfig, citeKeyPatterns, userFileDirectory, + laTexFileDirectory, defaultCiteKeyPattern, saveActions, mode, defaultFileDirectory, contentSelectors); + } + + @Override + public String toString() { + return "MetaData [citeKeyPatterns=" + citeKeyPatterns + ", userFileDirectory=" + userFileDirectory + ", laTexFileDirectory=" + laTexFileDirectory + ", groupsRoot=" + groupsRoot + ", encoding=" + encoding + ", saveOrderConfig=" + saveOrderConfig + ", defaultCiteKeyPattern=" + defaultCiteKeyPattern + ", saveActions=" + saveActions + ", mode=" + mode + ", isProtected=" + isProtected + ", defaultFileDirectory=" + defaultFileDirectory + ", contentSelectors=" + contentSelectors + ", encodingExplicitlySupplied=" + encodingExplicitlySupplied + "]"; } } From 35d995aa06edec4fdf1baf3f9c294736884eb8a5 Mon Sep 17 00:00:00 2001 From: Benedikt Tutzer Date: Wed, 21 Sep 2022 22:11:06 +0200 Subject: [PATCH 08/27] Improve startup-behavior of pdf indexer (#9166) * Improve DocumentReader (cherry picked from commit 4412f6e3e50d9ee17bab5f4bffa2abd8098cdc8a) * Fix re-indexing on database loading (cherry picked from commit 4b17f10e2cb3142e6741d14a8b89f223a88e9533) * Revert "Fix re-indexing on database loading" This reverts commit d8990dddb6d33d2f7940f895c911437acceccb49. * Fix cherry-pick * Changelog * Apply suggestions from code review String replacements Co-authored-by: Christoph --- CHANGELOG.md | 1 + src/main/java/org/jabref/gui/LibraryTab.java | 10 --- .../pdf/search/indexing/DocumentReader.java | 71 ++++++++++--------- 3 files changed, 38 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bf910bf48dc..8db15b3ea9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve - We fixed an issue where JabRef would not exit when a connection to a LibreOffice document was established previously and the document is still open. [#9075](https://github.com/JabRef/jabref/issues/9075) - We fixed an issue about selecting the save order in the preferences. [#9175](https://github.com/JabRef/jabref/issues/9147) - We fixed an issue where the CSS styles are missing in some dialogs. [#9150](https://github.com/JabRef/jabref/pull/9150) +- We fixed an issue where pdfs were re-indexed on each startup. [#9166](https://github.com/JabRef/jabref/pull/9166) ### Removed diff --git a/src/main/java/org/jabref/gui/LibraryTab.java b/src/main/java/org/jabref/gui/LibraryTab.java index da1c3179e64..607bcb474f7 100644 --- a/src/main/java/org/jabref/gui/LibraryTab.java +++ b/src/main/java/org/jabref/gui/LibraryTab.java @@ -888,16 +888,6 @@ public void listen(EntriesRemovedEvent removedEntriesEvent) { private class IndexUpdateListener { - public IndexUpdateListener() { - if (preferencesService.getFilePreferences().shouldFulltextIndexLinkedFiles()) { - try { - indexingTaskManager.updateIndex(PdfIndexer.of(bibDatabaseContext, preferencesService.getFilePreferences()), bibDatabaseContext); - } catch (IOException e) { - LOGGER.error("Cannot access lucene index", e); - } - } - } - @Subscribe public void listen(EntriesAddedEvent addedEntryEvent) { if (preferencesService.getFilePreferences().shouldFulltextIndexLinkedFiles()) { diff --git a/src/main/java/org/jabref/logic/pdf/search/indexing/DocumentReader.java b/src/main/java/org/jabref/logic/pdf/search/indexing/DocumentReader.java index 89db6837ce9..831ca747cb1 100644 --- a/src/main/java/org/jabref/logic/pdf/search/indexing/DocumentReader.java +++ b/src/main/java/org/jabref/logic/pdf/search/indexing/DocumentReader.java @@ -71,11 +71,7 @@ public DocumentReader(BibEntry bibEntry, FilePreferences filePreferences) { public Optional> readLinkedPdf(BibDatabaseContext databaseContext, LinkedFile pdf) { Optional pdfPath = pdf.findIn(databaseContext, filePreferences); if (pdfPath.isPresent()) { - try { - return Optional.of(readPdfContents(pdf, pdfPath.get())); - } catch (IOException e) { - LOGGER.error("Could not read pdf file {}!", pdf.getLink(), e); - } + return Optional.of(readPdfContents(pdf, pdfPath.get())); } return Optional.empty(); } @@ -94,19 +90,30 @@ public List readLinkedPdfs(BibDatabaseContext databaseContext) { .collect(Collectors.toList()); } - private List readPdfContents(LinkedFile pdf, Path resolvedPdfPath) throws IOException { + private List readPdfContents(LinkedFile pdf, Path resolvedPdfPath) { + List pages = new ArrayList<>(); try (PDDocument pdfDocument = Loader.loadPDF(resolvedPdfPath.toFile())) { - List pages = new ArrayList<>(); - - for (int pageNumber = 0; pageNumber < pdfDocument.getNumberOfPages(); pageNumber++) { - Document newDocument = new Document(); - addIdentifiers(newDocument, pdf.getLink()); - addMetaData(newDocument, resolvedPdfPath, pageNumber); - addContentIfNotEmpty(pdfDocument, newDocument, pageNumber); - pages.add(newDocument); - } - return pages; + for (int pageNumber = 0; pageNumber < pdfDocument.getNumberOfPages(); pageNumber++) { + Document newDocument = new Document(); + addIdentifiers(newDocument, pdf.getLink()); + addMetaData(newDocument, resolvedPdfPath, pageNumber); + try { + addContentIfNotEmpty(pdfDocument, newDocument, pageNumber); + } catch (IOException e) { + LOGGER.warn("Could not read page {} of {}", pageNumber, resolvedPdfPath.toAbsolutePath(), e); + } + pages.add(newDocument); + } + } catch (IOException e) { + LOGGER.warn("Could not read {}", resolvedPdfPath.toAbsolutePath(), e); + } + if (pages.isEmpty()) { + Document newDocument = new Document(); + addIdentifiers(newDocument, pdf.getLink()); + addMetaData(newDocument, resolvedPdfPath, 0); + pages.add(newDocument); } + return pages; } private void addMetaData(Document newDocument, Path resolvedPdfPath, int pageNumber) { @@ -135,24 +142,20 @@ public static String mergeLines(String text) { return LINEBREAK_WITHOUT_PERIOD_PATTERN.matcher(mergedHyphenNewlines).replaceAll("$1 "); } - private void addContentIfNotEmpty(PDDocument pdfDocument, Document newDocument, int pageNumber) { - try { - PDFTextStripper pdfTextStripper = new PDFTextStripper(); - pdfTextStripper.setLineSeparator("\n"); - pdfTextStripper.setStartPage(pageNumber); - pdfTextStripper.setEndPage(pageNumber); - - String pdfContent = pdfTextStripper.getText(pdfDocument); - if (StringUtil.isNotBlank(pdfContent)) { - newDocument.add(new TextField(CONTENT, mergeLines(pdfContent), Field.Store.YES)); - } - PDPage page = pdfDocument.getPage(pageNumber); - List annotations = page.getAnnotations().stream().filter((annotation) -> annotation.getContents() != null).map(PDAnnotation::getContents).collect(Collectors.toList()); - if (annotations.size() > 0) { - newDocument.add(new TextField(ANNOTATIONS, annotations.stream().collect(Collectors.joining("\n")), Field.Store.YES)); - } - } catch (IOException e) { - LOGGER.info("Could not read contents of PDF document \"{}\"", pdfDocument.toString(), e); + private void addContentIfNotEmpty(PDDocument pdfDocument, Document newDocument, int pageNumber) throws IOException { + PDFTextStripper pdfTextStripper = new PDFTextStripper(); + pdfTextStripper.setLineSeparator("\n"); + pdfTextStripper.setStartPage(pageNumber); + pdfTextStripper.setEndPage(pageNumber); + + String pdfContent = pdfTextStripper.getText(pdfDocument); + if (StringUtil.isNotBlank(pdfContent)) { + newDocument.add(new TextField(CONTENT, mergeLines(pdfContent), Field.Store.YES)); + } + PDPage page = pdfDocument.getPage(pageNumber); + List annotations = page.getAnnotations().stream().filter((annotation) -> annotation.getContents() != null).map(PDAnnotation::getContents).collect(Collectors.toList()); + if (annotations.size() > 0) { + newDocument.add(new TextField(ANNOTATIONS, annotations.stream().collect(Collectors.joining("\n")), Field.Store.YES)); } } From 5e5b72bd54c4a201f7b8bbf33750a3776fa31ac4 Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 23 Sep 2022 22:48:03 +0200 Subject: [PATCH 09/27] Update afterburner to jakarta (#9168) --- build.gradle | 2 +- lib/afterburner.fx.jar | Bin 18245 -> 17998 bytes .../java/org/jabref/gui/EntryTypeView.java | 3 +-- .../jabref/gui/auximport/FromAuxDialog.java | 3 +-- .../bibtexextractor/ExtractBibtexDialog.java | 2 +- .../collab/ExternalChangesResolverDialog.java | 2 +- .../CitationKeyPatternPanel.java | 3 +-- .../ContentSelectorDialogView.java | 3 +-- .../CustomizeEntryTypeDialogView.java | 3 +-- .../documentviewer/DocumentViewerView.java | 3 +-- .../jabref/gui/edit/ManageKeywordsDialog.java | 3 +-- .../jabref/gui/entryeditor/EntryEditor.java | 3 +-- .../FileAnnotationTabView.java | 3 +-- .../gui/errorconsole/ErrorConsoleView.java | 3 +-- .../CreateModifyExporterDialogView.java | 3 +-- .../UnlinkedFilesDialogView.java | 2 +- .../org/jabref/gui/help/AboutDialogView.java | 3 +-- .../ImportCustomEntryTypesDialog.java | 3 +-- .../gui/importer/ImportEntriesDialog.java | 2 +- .../gui/integrity/IntegrityCheckDialog.java | 3 +-- .../AbstractPropertiesTabView.java | 4 ++-- .../LibraryPropertiesView.java | 3 +-- .../constants/ConstantsPropertiesView.java | 3 +-- .../general/GeneralPropertiesView.java | 2 +- .../keypattern/KeyPatternPropertiesView.java | 3 +-- .../saving/SavingPropertiesView.java | 3 +-- .../linkedfile/LinkedFileEditDialogView.java | 3 +-- .../openoffice/ManageCitationsDialogView.java | 3 +-- .../gui/openoffice/StyleSelectDialogView.java | 3 +-- .../AbstractPreferenceTabView.java | 4 ++-- .../preferences/PreferencesDialogView.java | 3 +-- .../customexporter/CustomExporterTab.java | 3 +-- .../EditExternalFileTypeEntryDialog.java | 3 +-- .../journals/JournalAbbreviationsTab.java | 3 +-- .../keybindings/KeyBindingsTab.java | 3 +-- .../gui/preferences/preview/PreviewTab.java | 3 +-- .../protectedterms/ProtectedTermsTab.java | 3 +-- .../gui/search/GlobalSearchResultDialog.java | 2 +- .../shared/SharedDatabaseLoginDialogView.java | 3 +-- .../gui/slr/ManageStudyDefinitionView.java | 3 +-- .../gui/texparser/ParseLatexDialogView.java | 3 +-- .../gui/texparser/ParseLatexResultView.java | 3 +-- 42 files changed, 43 insertions(+), 75 deletions(-) diff --git a/build.gradle b/build.gradle index 3510a5e6fa5..0add72e5b36 100644 --- a/build.gradle +++ b/build.gradle @@ -161,6 +161,7 @@ dependencies { } implementation group: 'jakarta.annotation', name: 'jakarta.annotation-api', version: '1.3.5' + implementation 'jakarta.inject:jakarta.inject-api:2.0.1' // JavaFX stuff implementation 'org.kordamp.ikonli:ikonli-javafx:12.3.1' @@ -170,7 +171,6 @@ dependencies { implementation 'com.tobiasdiez:easybind:2.2.1-SNAPSHOT' implementation 'org.fxmisc.flowless:flowless:0.6.10' implementation 'org.fxmisc.richtext:richtextfx:0.10.9' - implementation group: 'org.glassfish.hk2.external', name: 'jakarta.inject', version: '2.6.1' implementation 'com.jfoenix:jfoenix:9.0.10' implementation 'org.controlsfx:controlsfx:11.1.1' diff --git a/lib/afterburner.fx.jar b/lib/afterburner.fx.jar index 816b3e27f5d649d6b0c44d69c7a2578d0136a473..16e780b695b4a45ad34cf214fb8d58373ce63803 100644 GIT binary patch literal 17998 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 literal 18245 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 { diff --git a/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogView.java b/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogView.java index cd3d773f6cf..403393cacc8 100644 --- a/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogView.java +++ b/src/main/java/org/jabref/gui/contentselector/ContentSelectorDialogView.java @@ -3,8 +3,6 @@ import java.util.Optional; import java.util.function.Supplier; -import javax.inject.Inject; - import javafx.beans.property.ListProperty; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -23,6 +21,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class ContentSelectorDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java b/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java index c82a3084094..56cae78cec8 100644 --- a/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java +++ b/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java @@ -2,8 +2,6 @@ import java.util.EnumSet; -import javax.inject.Inject; - import javafx.application.Platform; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.fxml.FXML; @@ -43,6 +41,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; import de.saxsys.mvvmfx.utils.validation.visualization.ControlsFxVisualizer; +import jakarta.inject.Inject; public class CustomizeEntryTypeDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/documentviewer/DocumentViewerView.java b/src/main/java/org/jabref/gui/documentviewer/DocumentViewerView.java index 377f158abd6..e75b607e505 100644 --- a/src/main/java/org/jabref/gui/documentviewer/DocumentViewerView.java +++ b/src/main/java/org/jabref/gui/documentviewer/DocumentViewerView.java @@ -1,7 +1,5 @@ package org.jabref.gui.documentviewer; -import javax.inject.Inject; - import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.ButtonBar; @@ -24,6 +22,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class DocumentViewerView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/edit/ManageKeywordsDialog.java b/src/main/java/org/jabref/gui/edit/ManageKeywordsDialog.java index fe8112a6829..26fad7eb613 100644 --- a/src/main/java/org/jabref/gui/edit/ManageKeywordsDialog.java +++ b/src/main/java/org/jabref/gui/edit/ManageKeywordsDialog.java @@ -2,8 +2,6 @@ import java.util.List; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.ButtonType; import javafx.scene.control.TableColumn; @@ -21,6 +19,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class ManageKeywordsDialog extends BaseDialog { private final List entries; diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java index 6e3d662bd6e..b0c8111f570 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java @@ -12,8 +12,6 @@ import java.util.SortedSet; import java.util.stream.Collectors; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.geometry.Side; import javafx.scene.control.Button; @@ -60,6 +58,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; import com.tobiasdiez.easybind.Subscription; +import jakarta.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/jabref/gui/entryeditor/fileannotationtab/FileAnnotationTabView.java b/src/main/java/org/jabref/gui/entryeditor/fileannotationtab/FileAnnotationTabView.java index 849a6d1b0ee..24c75fe9aa0 100644 --- a/src/main/java/org/jabref/gui/entryeditor/fileannotationtab/FileAnnotationTabView.java +++ b/src/main/java/org/jabref/gui/entryeditor/fileannotationtab/FileAnnotationTabView.java @@ -2,8 +2,6 @@ import java.nio.file.Path; -import javax.inject.Inject; - import javafx.beans.binding.Bindings; import javafx.collections.ListChangeListener; import javafx.fxml.FXML; @@ -28,6 +26,7 @@ import org.jabref.model.util.FileUpdateMonitor; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class FileAnnotationTabView { diff --git a/src/main/java/org/jabref/gui/errorconsole/ErrorConsoleView.java b/src/main/java/org/jabref/gui/errorconsole/ErrorConsoleView.java index fa58509d6d2..e29940c7717 100644 --- a/src/main/java/org/jabref/gui/errorconsole/ErrorConsoleView.java +++ b/src/main/java/org/jabref/gui/errorconsole/ErrorConsoleView.java @@ -1,7 +1,5 @@ package org.jabref.gui.errorconsole; -import javax.inject.Inject; - import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.fxml.FXML; @@ -30,6 +28,7 @@ import org.jabref.logic.util.BuildInfo; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class ErrorConsoleView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/exporter/CreateModifyExporterDialogView.java b/src/main/java/org/jabref/gui/exporter/CreateModifyExporterDialogView.java index a0b81e63505..d1370c42575 100644 --- a/src/main/java/org/jabref/gui/exporter/CreateModifyExporterDialogView.java +++ b/src/main/java/org/jabref/gui/exporter/CreateModifyExporterDialogView.java @@ -1,7 +1,5 @@ package org.jabref.gui.exporter; -import javax.inject.Inject; - import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.ButtonType; @@ -14,6 +12,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class CreateModifyExporterDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogView.java b/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogView.java index 9ccdfa8ec82..7202751ef5e 100644 --- a/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogView.java +++ b/src/main/java/org/jabref/gui/externalfiles/UnlinkedFilesDialogView.java @@ -1,6 +1,5 @@ package org.jabref.gui.externalfiles; -import javax.inject.Inject; import javax.swing.undo.UndoManager; import javafx.application.Platform; @@ -49,6 +48,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; import de.saxsys.mvvmfx.utils.validation.visualization.ControlsFxVisualizer; +import jakarta.inject.Inject; import org.controlsfx.control.CheckTreeView; public class UnlinkedFilesDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/help/AboutDialogView.java b/src/main/java/org/jabref/gui/help/AboutDialogView.java index 2eef63577b9..de23785d378 100644 --- a/src/main/java/org/jabref/gui/help/AboutDialogView.java +++ b/src/main/java/org/jabref/gui/help/AboutDialogView.java @@ -1,7 +1,5 @@ package org.jabref.gui.help; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.ButtonType; import javafx.scene.control.TextArea; @@ -14,6 +12,7 @@ import org.jabref.logic.util.BuildInfo; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class AboutDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/importer/ImportCustomEntryTypesDialog.java b/src/main/java/org/jabref/gui/importer/ImportCustomEntryTypesDialog.java index e88d9878820..a99f090628f 100644 --- a/src/main/java/org/jabref/gui/importer/ImportCustomEntryTypesDialog.java +++ b/src/main/java/org/jabref/gui/importer/ImportCustomEntryTypesDialog.java @@ -2,8 +2,6 @@ import java.util.List; -import javax.inject.Inject; - import javafx.beans.binding.Bindings; import javafx.fxml.FXML; import javafx.scene.control.ButtonType; @@ -17,6 +15,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; import org.controlsfx.control.CheckListView; public class ImportCustomEntryTypesDialog extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java b/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java index 770d0792659..14406dd642f 100644 --- a/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java +++ b/src/main/java/org/jabref/gui/importer/ImportEntriesDialog.java @@ -2,7 +2,6 @@ import java.util.EnumSet; -import javax.inject.Inject; import javax.swing.undo.UndoManager; import javafx.beans.binding.Bindings; @@ -44,6 +43,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; import org.controlsfx.control.CheckListView; public class ImportEntriesDialog extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/integrity/IntegrityCheckDialog.java b/src/main/java/org/jabref/gui/integrity/IntegrityCheckDialog.java index 384d49e8887..b6fb218d2f6 100644 --- a/src/main/java/org/jabref/gui/integrity/IntegrityCheckDialog.java +++ b/src/main/java/org/jabref/gui/integrity/IntegrityCheckDialog.java @@ -2,8 +2,6 @@ import java.util.List; -import javax.inject.Inject; - import javafx.beans.property.ReadOnlyStringWrapper; import javafx.collections.ListChangeListener; import javafx.fxml.FXML; @@ -21,6 +19,7 @@ import org.jabref.logic.l10n.Localization; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; import org.controlsfx.control.table.TableFilter; public class IntegrityCheckDialog extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/libraryproperties/AbstractPropertiesTabView.java b/src/main/java/org/jabref/gui/libraryproperties/AbstractPropertiesTabView.java index b69dd997a4b..f967733b32c 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/AbstractPropertiesTabView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/AbstractPropertiesTabView.java @@ -1,13 +1,13 @@ package org.jabref.gui.libraryproperties; -import javax.inject.Inject; - import javafx.scene.Node; import javafx.scene.layout.VBox; import org.jabref.gui.DialogService; import org.jabref.model.database.BibDatabaseContext; +import jakarta.inject.Inject; + public abstract class AbstractPropertiesTabView extends VBox implements PropertiesTab { @Inject protected DialogService dialogService; diff --git a/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesView.java index 78b3b3d2a0a..5286d4fbfbf 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/LibraryPropertiesView.java @@ -1,7 +1,5 @@ package org.jabref.gui.libraryproperties; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.ButtonType; import javafx.scene.control.ScrollPane; @@ -15,6 +13,7 @@ import org.jabref.model.database.BibDatabaseContext; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class LibraryPropertiesView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/libraryproperties/constants/ConstantsPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/constants/ConstantsPropertiesView.java index 0e83f999963..a6fec6aa7ab 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/constants/ConstantsPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/constants/ConstantsPropertiesView.java @@ -2,8 +2,6 @@ import java.util.Optional; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; @@ -23,6 +21,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class ConstantsPropertiesView extends AbstractPropertiesTabView implements PropertiesTab { diff --git a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java index 382ca0adf83..6eab2dbee1a 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/general/GeneralPropertiesView.java @@ -2,7 +2,6 @@ import java.nio.charset.Charset; -import javax.inject.Inject; import javax.swing.undo.UndoManager; import javafx.fxml.FXML; @@ -19,6 +18,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class GeneralPropertiesView extends AbstractPropertiesTabView implements PropertiesTab { @FXML private ComboBox encoding; diff --git a/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java index 74035d4cd03..4d915d5099c 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/keypattern/KeyPatternPropertiesView.java @@ -1,7 +1,5 @@ package org.jabref.gui.libraryproperties.keypattern; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -19,6 +17,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class KeyPatternPropertiesView extends AbstractPropertiesTabView implements PropertiesTab { diff --git a/src/main/java/org/jabref/gui/libraryproperties/saving/SavingPropertiesView.java b/src/main/java/org/jabref/gui/libraryproperties/saving/SavingPropertiesView.java index b479ee23cf6..524a051e20b 100644 --- a/src/main/java/org/jabref/gui/libraryproperties/saving/SavingPropertiesView.java +++ b/src/main/java/org/jabref/gui/libraryproperties/saving/SavingPropertiesView.java @@ -1,7 +1,5 @@ package org.jabref.gui.libraryproperties.saving; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.CheckBox; @@ -14,6 +12,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class SavingPropertiesView extends AbstractPropertiesTabView implements PropertiesTab { diff --git a/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialogView.java b/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialogView.java index 3d6149a203b..7a9c333d0a2 100644 --- a/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialogView.java +++ b/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialogView.java @@ -1,7 +1,5 @@ package org.jabref.gui.linkedfile; -import javax.inject.Inject; - import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.ButtonType; @@ -18,6 +16,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class LinkedFileEditDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java b/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java index f0453231015..15bc0def40a 100644 --- a/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java +++ b/src/main/java/org/jabref/gui/openoffice/ManageCitationsDialogView.java @@ -1,7 +1,5 @@ package org.jabref.gui.openoffice; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.Node; import javafx.scene.control.ButtonType; @@ -19,6 +17,7 @@ import org.jabref.model.strings.StringUtil; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class ManageCitationsDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/openoffice/StyleSelectDialogView.java b/src/main/java/org/jabref/gui/openoffice/StyleSelectDialogView.java index 2b66e0f6013..77870845ba8 100644 --- a/src/main/java/org/jabref/gui/openoffice/StyleSelectDialogView.java +++ b/src/main/java/org/jabref/gui/openoffice/StyleSelectDialogView.java @@ -1,7 +1,5 @@ package org.jabref.gui.openoffice; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; @@ -30,6 +28,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class StyleSelectDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java b/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java index 354d6a5457a..61ea82243fa 100644 --- a/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java +++ b/src/main/java/org/jabref/gui/preferences/AbstractPreferenceTabView.java @@ -2,8 +2,6 @@ import java.util.List; -import javax.inject.Inject; - import javafx.scene.Node; import javafx.scene.layout.VBox; @@ -11,6 +9,8 @@ import org.jabref.gui.util.TaskExecutor; import org.jabref.preferences.PreferencesService; +import jakarta.inject.Inject; + public abstract class AbstractPreferenceTabView extends VBox implements PreferencesTab { @Inject protected TaskExecutor taskExecutor; diff --git a/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java b/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java index 4615300d502..a4bb0baab0c 100644 --- a/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java +++ b/src/main/java/org/jabref/gui/preferences/PreferencesDialogView.java @@ -2,8 +2,6 @@ import java.util.Locale; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.ButtonType; import javafx.scene.control.ListView; @@ -21,6 +19,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; import org.controlsfx.control.textfield.CustomTextField; /** diff --git a/src/main/java/org/jabref/gui/preferences/customexporter/CustomExporterTab.java b/src/main/java/org/jabref/gui/preferences/customexporter/CustomExporterTab.java index 6021a2c5a51..7d5f40b6e49 100644 --- a/src/main/java/org/jabref/gui/preferences/customexporter/CustomExporterTab.java +++ b/src/main/java/org/jabref/gui/preferences/customexporter/CustomExporterTab.java @@ -1,7 +1,5 @@ package org.jabref.gui.preferences.customexporter; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.SelectionMode; import javafx.scene.control.TableColumn; @@ -15,6 +13,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class CustomExporterTab extends AbstractPreferenceTabView implements PreferencesTab { diff --git a/src/main/java/org/jabref/gui/preferences/externalfiletypes/EditExternalFileTypeEntryDialog.java b/src/main/java/org/jabref/gui/preferences/externalfiletypes/EditExternalFileTypeEntryDialog.java index 377291e96e4..e18ed5a4e83 100644 --- a/src/main/java/org/jabref/gui/preferences/externalfiletypes/EditExternalFileTypeEntryDialog.java +++ b/src/main/java/org/jabref/gui/preferences/externalfiletypes/EditExternalFileTypeEntryDialog.java @@ -1,7 +1,5 @@ package org.jabref.gui.preferences.externalfiletypes; -import javax.inject.Inject; - import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -18,6 +16,7 @@ import org.jabref.gui.util.FileDialogConfiguration; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; public class EditExternalFileTypeEntryDialog extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/preferences/journals/JournalAbbreviationsTab.java b/src/main/java/org/jabref/gui/preferences/journals/JournalAbbreviationsTab.java index 32733480c77..37bda9ad270 100644 --- a/src/main/java/org/jabref/gui/preferences/journals/JournalAbbreviationsTab.java +++ b/src/main/java/org/jabref/gui/preferences/journals/JournalAbbreviationsTab.java @@ -1,7 +1,5 @@ package org.jabref.gui.preferences.journals; -import javax.inject.Inject; - import javafx.animation.Interpolator; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; @@ -34,6 +32,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; import org.controlsfx.control.textfield.CustomTextField; /** diff --git a/src/main/java/org/jabref/gui/preferences/keybindings/KeyBindingsTab.java b/src/main/java/org/jabref/gui/preferences/keybindings/KeyBindingsTab.java index eaa7f68ac5e..c4c04fe86c8 100644 --- a/src/main/java/org/jabref/gui/preferences/keybindings/KeyBindingsTab.java +++ b/src/main/java/org/jabref/gui/preferences/keybindings/KeyBindingsTab.java @@ -1,7 +1,5 @@ package org.jabref.gui.preferences.keybindings; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.MenuButton; import javafx.scene.control.MenuItem; @@ -22,6 +20,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class KeyBindingsTab extends AbstractPreferenceTabView implements PreferencesTab { diff --git a/src/main/java/org/jabref/gui/preferences/preview/PreviewTab.java b/src/main/java/org/jabref/gui/preferences/preview/PreviewTab.java index cb9c897455c..fa7d3995d0e 100644 --- a/src/main/java/org/jabref/gui/preferences/preview/PreviewTab.java +++ b/src/main/java/org/jabref/gui/preferences/preview/PreviewTab.java @@ -3,8 +3,6 @@ import java.util.ArrayList; import java.util.List; -import javax.inject.Inject; - import javafx.application.Platform; import javafx.beans.property.ListProperty; import javafx.fxml.FXML; @@ -42,6 +40,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; import de.saxsys.mvvmfx.utils.validation.visualization.ControlsFxVisualizer; +import jakarta.inject.Inject; import org.controlsfx.control.textfield.CustomTextField; import org.fxmisc.richtext.CodeArea; import org.fxmisc.richtext.LineNumberFactory; diff --git a/src/main/java/org/jabref/gui/preferences/protectedterms/ProtectedTermsTab.java b/src/main/java/org/jabref/gui/preferences/protectedterms/ProtectedTermsTab.java index b5285f5e07c..c5d1aa5b2c5 100644 --- a/src/main/java/org/jabref/gui/preferences/protectedterms/ProtectedTermsTab.java +++ b/src/main/java/org/jabref/gui/preferences/protectedterms/ProtectedTermsTab.java @@ -1,7 +1,5 @@ package org.jabref.gui.preferences.protectedterms; -import javax.inject.Inject; - import javafx.beans.property.ReadOnlyBooleanWrapper; import javafx.fxml.FXML; import javafx.scene.control.ContextMenu; @@ -24,6 +22,7 @@ import org.jabref.logic.protectedterms.ProtectedTermsLoader; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; /** * Dialog for managing term list files. diff --git a/src/main/java/org/jabref/gui/search/GlobalSearchResultDialog.java b/src/main/java/org/jabref/gui/search/GlobalSearchResultDialog.java index b23dc8ab2df..1b330015949 100644 --- a/src/main/java/org/jabref/gui/search/GlobalSearchResultDialog.java +++ b/src/main/java/org/jabref/gui/search/GlobalSearchResultDialog.java @@ -1,6 +1,5 @@ package org.jabref.gui.search; -import javax.inject.Inject; import javax.swing.undo.UndoManager; import javafx.fxml.FXML; @@ -21,6 +20,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class GlobalSearchResultDialog extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java b/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java index 52e9280f2e7..992ed0482b0 100644 --- a/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java +++ b/src/main/java/org/jabref/gui/shared/SharedDatabaseLoginDialogView.java @@ -1,7 +1,5 @@ package org.jabref.gui.shared; -import javax.inject.Inject; - import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.fxml.FXML; @@ -24,6 +22,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; import de.saxsys.mvvmfx.utils.validation.visualization.ControlsFxVisualizer; +import jakarta.inject.Inject; public class SharedDatabaseLoginDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/slr/ManageStudyDefinitionView.java b/src/main/java/org/jabref/gui/slr/ManageStudyDefinitionView.java index 5040015fa3d..db9e074a596 100644 --- a/src/main/java/org/jabref/gui/slr/ManageStudyDefinitionView.java +++ b/src/main/java/org/jabref/gui/slr/ManageStudyDefinitionView.java @@ -5,8 +5,6 @@ import java.util.StringJoiner; import java.util.function.Consumer; -import javax.inject.Inject; - import javafx.beans.binding.Bindings; import javafx.beans.property.SimpleStringProperty; import javafx.fxml.FXML; @@ -35,6 +33,7 @@ import org.jabref.preferences.PreferencesService; import com.airhacks.afterburner.views.ViewLoader; +import jakarta.inject.Inject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/org/jabref/gui/texparser/ParseLatexDialogView.java b/src/main/java/org/jabref/gui/texparser/ParseLatexDialogView.java index ce8dfd215f1..6f95e828754 100644 --- a/src/main/java/org/jabref/gui/texparser/ParseLatexDialogView.java +++ b/src/main/java/org/jabref/gui/texparser/ParseLatexDialogView.java @@ -1,7 +1,5 @@ package org.jabref.gui.texparser; -import javax.inject.Inject; - import javafx.beans.binding.Bindings; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -28,6 +26,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; import de.saxsys.mvvmfx.utils.validation.visualization.ControlsFxVisualizer; +import jakarta.inject.Inject; import org.controlsfx.control.CheckTreeView; public class ParseLatexDialogView extends BaseDialog { diff --git a/src/main/java/org/jabref/gui/texparser/ParseLatexResultView.java b/src/main/java/org/jabref/gui/texparser/ParseLatexResultView.java index 6a56fbcfe47..7fc00e8b7eb 100644 --- a/src/main/java/org/jabref/gui/texparser/ParseLatexResultView.java +++ b/src/main/java/org/jabref/gui/texparser/ParseLatexResultView.java @@ -2,8 +2,6 @@ import java.nio.file.Path; -import javax.inject.Inject; - import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; @@ -20,6 +18,7 @@ import com.airhacks.afterburner.views.ViewLoader; import com.tobiasdiez.easybind.EasyBind; +import jakarta.inject.Inject; public class ParseLatexResultView extends BaseDialog { From 4b013c3c851eda6b34816e18cb52363037e89b47 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sat, 24 Sep 2022 10:43:43 +0200 Subject: [PATCH 10/27] Fixes fetcher tests (#9175) --- .../fetcher/AstrophysicsDataSystemTest.java | 192 +++++++++--------- .../fetcher/CompositeIdFetcherTest.java | 1 + 2 files changed, 94 insertions(+), 99 deletions(-) diff --git a/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java b/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java index 884b048d416..7eac2f723a0 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/AstrophysicsDataSystemTest.java @@ -44,102 +44,96 @@ public void setUp() throws Exception { mock(FieldContentFormatterPreferences.class)); fetcher = new AstrophysicsDataSystem(importFormatPreferences, importerPreferences); - diezSliceTheoremEntry = new BibEntry(); - diezSliceTheoremEntry.setType(StandardEntryType.Article); - diezSliceTheoremEntry.setCitationKey("2018arXiv181204698D"); - diezSliceTheoremEntry.setField(StandardField.AUTHOR, "Diez, Tobias and Rudolph, Gerd"); - diezSliceTheoremEntry.setField(StandardField.TITLE, "Slice theorem and orbit type stratification in infinite dimensions"); - diezSliceTheoremEntry.setField(StandardField.YEAR, "2018"); - diezSliceTheoremEntry.setField(StandardField.ARCHIVEPREFIX, "arXiv"); - diezSliceTheoremEntry.setField(StandardField.EPRINT, "1812.04698"); - diezSliceTheoremEntry.setField(StandardField.JOURNAL, "arXiv e-prints"); - diezSliceTheoremEntry.setField(StandardField.KEYWORDS, "Mathematics - Differential Geometry, Mathematical Physics, 58B25, (58D19, 58B20, 22E99, 58A35)"); - diezSliceTheoremEntry.setField(StandardField.MONTH, "#dec#"); - diezSliceTheoremEntry.setField(StandardField.PAGES, "arXiv:1812.04698"); - diezSliceTheoremEntry.setField(StandardField.EID, "arXiv:1812.04698"); - diezSliceTheoremEntry.setField(StandardField.PRIMARYCLASS, "math.DG"); - diezSliceTheoremEntry.setField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2018arXiv181204698D"); - diezSliceTheoremEntry.setField(StandardField.ABSTRACT, - "We establish a general slice theorem for the action of a locally convex Lie group on a locally convex manifold, which generalizes the classical slice theorem of Palais to infinite dimensions. We discuss two important settings under which the assumptions of this theorem are fulfilled. First, using Gl{\\\"o}ckner's inverse function theorem, we show that the linear action of a compact Lie group on a Fr{\\'e}chet space admits a slice. Second, using the Nash--Moser theorem, we establish a slice theorem for the tame action of a tame Fr{\\'e}chet Lie group on a tame Fr{\\'e}chet manifold. For this purpose, we develop the concept of a graded Riemannian metric, which allows the construction of a path-length metric compatible with the manifold topology and of a local addition. Finally, generalizing a classical result in finite dimensions, we prove that the existence of a slice implies that the decomposition of the manifold into orbit types of the group action is a stratification."); - - famaeyMcGaughEntry = new BibEntry(); - famaeyMcGaughEntry.setType(StandardEntryType.Article); - famaeyMcGaughEntry.setCitationKey("2012LRR....15...10F"); - famaeyMcGaughEntry.setField(StandardField.AUTHOR, "Famaey, Beno{\\^\\i}t and McGaugh, Stacy S."); - famaeyMcGaughEntry.setField(StandardField.TITLE, "Modified Newtonian Dynamics (MOND): Observational Phenomenology and Relativistic Extensions"); - famaeyMcGaughEntry.setField(StandardField.JOURNAL, "Living Reviews in Relativity"); - famaeyMcGaughEntry.setField(StandardField.YEAR, "2012"); - famaeyMcGaughEntry.setField(StandardField.VOLUME, "15"); - famaeyMcGaughEntry.setField(StandardField.MONTH, "#sep#"); - famaeyMcGaughEntry.setField(StandardField.NUMBER, "1"); - famaeyMcGaughEntry.setField(StandardField.ARCHIVEPREFIX, "arXiv"); - famaeyMcGaughEntry.setField(StandardField.DOI, "10.12942/lrr-2012-10"); - famaeyMcGaughEntry.setField(StandardField.PRIMARYCLASS, "astro-ph.CO"); - famaeyMcGaughEntry.setField(StandardField.EID, "10"); - famaeyMcGaughEntry.setField(StandardField.EPRINT, "1112.3960"); - famaeyMcGaughEntry.setField(StandardField.PAGES, "10"); - famaeyMcGaughEntry.setField(StandardField.KEYWORDS, "astronomical observations, Newtonian limit, equations of motion, extragalactic astronomy, cosmology, theories of gravity, fundamental physics, astrophysics, Astrophysics - Cosmology and Nongalactic Astrophysics, Astrophysics - Astrophysics of Galaxies, General Relativity and Quantum Cosmology, High Energy Physics - Phenomenology, High Energy Physics - Theory"); - famaeyMcGaughEntry.setField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2012LRR....15...10F"); - - sunWelchEntry = new BibEntry(); - sunWelchEntry.setType(StandardEntryType.Article); - sunWelchEntry.setCitationKey("2012NatMa..11...44S"); - sunWelchEntry.setField(StandardField.AUTHOR, "Sun, Yanming and Welch, Gregory C. and Leong, Wei Lin and Takacs, Christopher J. and Bazan, Guillermo C. and Heeger, Alan J."); - sunWelchEntry.setField(StandardField.DOI, "10.1038/nmat3160"); - sunWelchEntry.setField(StandardField.JOURNAL, "Nature Materials"); - sunWelchEntry.setField(StandardField.MONTH, "#jan#"); - sunWelchEntry.setField(StandardField.NUMBER, "1"); - sunWelchEntry.setField(StandardField.PAGES, "44-48"); - sunWelchEntry.setField(StandardField.TITLE, "Solution-processed small-molecule solar cells with 6.7\\% efficiency"); - sunWelchEntry.setField(StandardField.VOLUME, "11"); - sunWelchEntry.setField(StandardField.YEAR, "2012"); - sunWelchEntry.setField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2012NatMa..11...44S"); - - xiongSunEntry = new BibEntry(); - xiongSunEntry.setType(StandardEntryType.Article); - xiongSunEntry.setCitationKey("2007ITGRS..45..879X"); - xiongSunEntry.setField(StandardField.AUTHOR, "Xiong, Xiaoxiong and Sun, Junqiang and Barnes, William and Salomonson, Vincent and Esposito, Joseph and Erives, Hector and Guenther, Bruce"); - xiongSunEntry.setField(StandardField.DOI, "10.1109/TGRS.2006.890567"); - xiongSunEntry.setField(StandardField.JOURNAL, "IEEE Transactions on Geoscience and Remote Sensing"); - xiongSunEntry.setField(StandardField.MONTH, "#apr#"); - xiongSunEntry.setField(StandardField.NUMBER, "4"); - xiongSunEntry.setField(StandardField.PAGES, "879-889"); - xiongSunEntry.setField(StandardField.TITLE, "Multiyear On-Orbit Calibration and Performance of Terra MODIS Reflective Solar Bands"); - xiongSunEntry.setField(StandardField.VOLUME, "45"); - xiongSunEntry.setField(StandardField.YEAR, "2007"); - xiongSunEntry.setField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2007ITGRS..45..879X"); - - ingersollPollardEntry = new BibEntry(); - ingersollPollardEntry.setType(StandardEntryType.Article); - ingersollPollardEntry.setCitationKey("1982Icar...52...62I"); - ingersollPollardEntry.setField(StandardField.ABSTRACT, "If Jupiter's and Saturn's fluid interiors were inviscid and adiabatic, any steady zonal motion would take the form of differentially rotating cylinders concentric about the planetary axis of rotation. B. A. Smith et al. [ Science215, 504-537 (1982)] showed that Saturn's observed zonal wind profile extends a significant distance below cloud base. Further extension into the interior occurs if the values of the eddy viscosity and superadiabaticity are small. We estimate these values using a scaling analysis of deep convection in the presence of differential rotation. The differential rotation inhibits the convection and reduces the effective eddy viscosity. Viscous dissipation of zonal mean kinetic energy is then within the bounds set by the internal heat source. The differential rotation increases the superadiabaticity, but not so much as to eliminate the cylindrical structure of the flow. Very large departures from adiabaticity, necessary for decoupling the atmosphere and interior, do not occur. Using our scaling analysis we develop the anelastic equations that describe motions in Jupiter's and Saturn's interiors. A simple problem is solved, that of an adiabatic fluid with a steady zonal wind varying as a function of cylindrical radius. Low zonal wavenumber perturbations are two dimensional (independent of the axial coordinate) and obey a modified barotropic stability equation. The parameter analogous to {\\ensuremath{\\beta}} is negative and is three to four times larger than the {\\ensuremath{\\beta}} for thin atmospheres. Jupiter's and Saturn's observed zonal wind profiles are close to marginal stability according to this deep sphere criterion, but are several times supercritical according to the thin atmosphere criterion."); - ingersollPollardEntry.setField(StandardField.AUTHOR, "Ingersoll, A. P. and Pollard, D."); - ingersollPollardEntry.setField(StandardField.DOI, "10.1016/0019-1035(82)90169-5"); - ingersollPollardEntry.setField(StandardField.JOURNAL, "\\icarus"); - ingersollPollardEntry.setField(StandardField.KEYWORDS, "Atmospheric Circulation, Barotropic Flow, Convective Flow, Flow Stability, Jupiter Atmosphere, Rotating Fluids, Saturn Atmosphere, Adiabatic Flow, Anelasticity, Compressible Fluids, Planetary Rotation, Rotating Cylinders, Scaling Laws, Wind Profiles, PLANETS, JUPITER, SATURN, MOTION, INTERIORS, ATMOSPHERE, ANALYSIS, SCALE, BAROTROPY, CHARACTERISTICS, STRUCTURE, WINDS, VISCOSITY, DATA, CONVECTION, ROTATION, EDDY EFFECTS, ENERGY, ADIABATICITY, DIAGRAMS, REVIEW, LATITUDE, ZONES, VELOCITY, MATHEMATICAL MODELS, HEAT FLOW, EQUATIONS OF MOTION, FLUIDS, DYNAMICS, TEMPERATURE, GRADIENTS, Lunar and Planetary Exploration; Planets"); - ingersollPollardEntry.setField(StandardField.MONTH, "#oct#"); - ingersollPollardEntry.setField(StandardField.NUMBER, "1"); - ingersollPollardEntry.setField(StandardField.PAGES, "62-80"); - ingersollPollardEntry.setField(StandardField.TITLE, "Motion in the interiors and atmospheres of Jupiter and Saturn: scale analysis, anelastic equations, barotropic stability criterion"); - ingersollPollardEntry.setField(StandardField.VOLUME, "52"); - ingersollPollardEntry.setField(StandardField.YEAR, "1982"); - ingersollPollardEntry.setField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/1982Icar...52...62I"); - - luceyPaulEntry = new BibEntry(); - luceyPaulEntry.setType(StandardEntryType.Article); - luceyPaulEntry.setCitationKey("2000JGR...10520297L"); - luceyPaulEntry.setField(StandardField.AUTHOR, "Lucey, Paul G. and Blewett, David T. and Jolliff, Bradley L."); - luceyPaulEntry.setField(StandardField.DOI, "10.1029/1999JE001117"); - luceyPaulEntry.setField(StandardField.JOURNAL, "\\jgr"); - luceyPaulEntry.setField(StandardField.KEYWORDS, "Planetology: Solid Surface Planets: Composition, Planetology: Solid Surface Planets: Remote sensing, Planetology: Solid Surface Planets: Surface materials and properties, Planetology: Solar System Objects: Moon (1221)"); - luceyPaulEntry.setField(StandardField.PAGES, "20297-20306"); - luceyPaulEntry.setField(StandardField.TITLE, "Lunar iron and titanium abundance algorithms based on final processing of Clementine ultraviolet-visible images"); - luceyPaulEntry.setField(StandardField.VOLUME, "105"); - luceyPaulEntry.setField(StandardField.YEAR, "2000"); - luceyPaulEntry.setField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2000JGR...10520297L"); - luceyPaulEntry.setField(StandardField.MONTH, "#jan#"); - luceyPaulEntry.setField(StandardField.NUMBER, "E8"); - luceyPaulEntry.setField(StandardField.ABSTRACT, "The Clementine mission to the Moon returned global imaging data collected by the ultraviolet visible (UVVIS) camera. This data set is now in a final state of calibration, and a five-band multispectral digital image model (DIM) of the lunar surface will soon be available to the science community. We have used observations of the lunar sample-return sites and stations extracted from the final DIM in conjunction with compositional information for returned lunar soils to revise our previously published algorithms for the spectral determination of the FeO and TiO$_{2}$ content of the lunar surface. The algorithms successfully normalize the effects of space weathering so that composition may be determined without regard to a surface's state of maturity. These algorithms permit anyone with access to the standard archived DIM to construct high spatial resolution maps of FeO and TiO$_{2}$ abundance. Such maps will be of great utility in a variety of lunar geologic studies."); + diezSliceTheoremEntry = new BibEntry(StandardEntryType.Article) + .withCitationKey("2018arXiv181204698D") + .withField(StandardField.AUTHOR, "Diez, Tobias and Rudolph, Gerd") + .withField(StandardField.TITLE, "Slice theorem and orbit type stratification in infinite dimensions") + .withField(StandardField.YEAR, "2018") + .withField(StandardField.ARCHIVEPREFIX, "arXiv") + .withField(StandardField.EPRINT, "1812.04698") + .withField(StandardField.JOURNAL, "arXiv e-prints") + .withField(StandardField.KEYWORDS, "Mathematics - Differential Geometry, Mathematical Physics, 58B25, (58D19, 58B20, 22E99, 58A35)") + .withField(StandardField.MONTH, "#dec#") + .withField(StandardField.PAGES, "arXiv:1812.04698") + .withField(StandardField.EID, "arXiv:1812.04698") + .withField(StandardField.PRIMARYCLASS, "math.DG") + .withField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2018arXiv181204698D") + .withField(StandardField.ABSTRACT, + "We establish a general slice theorem for the action of a locally convex Lie group on a locally convex manifold, which generalizes the classical slice theorem of Palais to infinite dimensions. We discuss two important settings under which the assumptions of this theorem are fulfilled. First, using Gl{\\\"o}ckner's inverse function theorem, we show that the linear action of a compact Lie group on a Fr{\\'e}chet space admits a slice. Second, using the Nash--Moser theorem, we establish a slice theorem for the tame action of a tame Fr{\\'e}chet Lie group on a tame Fr{\\'e}chet manifold. For this purpose, we develop the concept of a graded Riemannian metric, which allows the construction of a path-length metric compatible with the manifold topology and of a local addition. Finally, generalizing a classical result in finite dimensions, we prove that the existence of a slice implies that the decomposition of the manifold into orbit types of the group action is a stratification."); + + famaeyMcGaughEntry = new BibEntry(StandardEntryType.Article) + .withCitationKey("2012LRR....15...10F") + .withField(StandardField.AUTHOR, "Famaey, Beno{\\^\\i}t and McGaugh, Stacy S.") + .withField(StandardField.TITLE, "Modified Newtonian Dynamics (MOND): Observational Phenomenology and Relativistic Extensions") + .withField(StandardField.JOURNAL, "Living Reviews in Relativity") + .withField(StandardField.YEAR, "2012") + .withField(StandardField.VOLUME, "15") + .withField(StandardField.MONTH, "#sep#") + .withField(StandardField.NUMBER, "1") + .withField(StandardField.ARCHIVEPREFIX, "arXiv") + .withField(StandardField.DOI, "10.12942/lrr-2012-10") + .withField(StandardField.PRIMARYCLASS, "astro-ph.CO") + .withField(StandardField.EID, "10") + .withField(StandardField.EPRINT, "1112.3960") + .withField(StandardField.PAGES, "10") + .withField(StandardField.KEYWORDS, "astronomical observations, Newtonian limit, equations of motion, extragalactic astronomy, cosmology, theories of gravity, fundamental physics, astrophysics, Astrophysics - Cosmology and Nongalactic Astrophysics, Astrophysics - Astrophysics of Galaxies, General Relativity and Quantum Cosmology, High Energy Physics - Phenomenology, High Energy Physics - Theory") + .withField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2012LRR....15...10F"); + + sunWelchEntry = new BibEntry(StandardEntryType.Article) + .withCitationKey("2012NatMa..11...44S") + .withField(StandardField.AUTHOR, "Sun, Yanming and Welch, Gregory C. and Leong, Wei Lin and Takacs, Christopher J. and Bazan, Guillermo C. and Heeger, Alan J.") + .withField(StandardField.DOI, "10.1038/nmat3160") + .withField(StandardField.JOURNAL, "Nature Materials") + .withField(StandardField.MONTH, "#jan#") + .withField(StandardField.NUMBER, "1") + .withField(StandardField.PAGES, "44-48") + .withField(StandardField.TITLE, "Solution-processed small-molecule solar cells with 6.7\\% efficiency") + .withField(StandardField.VOLUME, "11") + .withField(StandardField.YEAR, "2012") + .withField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2012NatMa..11...44S"); + + xiongSunEntry = new BibEntry(StandardEntryType.Article) + .withCitationKey("2007ITGRS..45..879X") + .withField(StandardField.AUTHOR, "Xiong, Xiaoxiong and Sun, Junqiang and Barnes, William and Salomonson, Vincent and Esposito, Joseph and Erives, Hector and Guenther, Bruce") + .withField(StandardField.DOI, "10.1109/TGRS.2006.890567") + .withField(StandardField.JOURNAL, "IEEE Transactions on Geoscience and Remote Sensing") + .withField(StandardField.MONTH, "#apr#") + .withField(StandardField.NUMBER, "4") + .withField(StandardField.PAGES, "879-889") + .withField(StandardField.TITLE, "Multiyear On-Orbit Calibration and Performance of Terra MODIS Reflective Solar Bands") + .withField(StandardField.VOLUME, "45") + .withField(StandardField.YEAR, "2007") + .withField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2007ITGRS..45..879X"); + + ingersollPollardEntry = new BibEntry(StandardEntryType.Article) + .withCitationKey("1982Icar...52...62I") + .withField(StandardField.ABSTRACT, "If Jupiter's and Saturn's fluid interiors were inviscid and adiabatic, any steady zonal motion would take the form of differentially rotating cylinders concentric about the planetary axis of rotation. B. A. Smith et al. [ Science215, 504-537 (1982)] showed that Saturn's observed zonal wind profile extends a significant distance below cloud base. Further extension into the interior occurs if the values of the eddy viscosity and superadiabaticity are small. We estimate these values using a scaling analysis of deep convection in the presence of differential rotation. The differential rotation inhibits the convection and reduces the effective eddy viscosity. Viscous dissipation of zonal mean kinetic energy is then within the bounds set by the internal heat source. The differential rotation increases the superadiabaticity, but not so much as to eliminate the cylindrical structure of the flow. Very large departures from adiabaticity, necessary for decoupling the atmosphere and interior, do not occur. Using our scaling analysis we develop the anelastic equations that describe motions in Jupiter's and Saturn's interiors. A simple problem is solved, that of an adiabatic fluid with a steady zonal wind varying as a function of cylindrical radius. Low zonal wavenumber perturbations are two dimensional (independent of the axial coordinate) and obey a modified barotropic stability equation. The parameter analogous to {\\ensuremath{\\beta}} is negative and is three to four times larger than the {\\ensuremath{\\beta}} for thin atmospheres. Jupiter's and Saturn's observed zonal wind profiles are close to marginal stability according to this deep sphere criterion, but are several times supercritical according to the thin atmosphere criterion.") + .withField(StandardField.AUTHOR, "Ingersoll, A.~P. and Pollard, D.") + .withField(StandardField.DOI, "10.1016/0019-1035(82)90169-5") + .withField(StandardField.JOURNAL, "\\icarus") + .withField(StandardField.KEYWORDS, "Atmospheric Circulation, Barotropic Flow, Convective Flow, Flow Stability, Jupiter Atmosphere, Rotating Fluids, Saturn Atmosphere, Adiabatic Flow, Anelasticity, Compressible Fluids, Planetary Rotation, Rotating Cylinders, Scaling Laws, Wind Profiles, PLANETS, JUPITER, SATURN, MOTION, INTERIORS, ATMOSPHERE, ANALYSIS, SCALE, BAROTROPY, CHARACTERISTICS, STRUCTURE, WINDS, VISCOSITY, DATA, CONVECTION, ROTATION, EDDY EFFECTS, ENERGY, ADIABATICITY, DIAGRAMS, REVIEW, LATITUDE, ZONES, VELOCITY, MATHEMATICAL MODELS, HEAT FLOW, EQUATIONS OF MOTION, FLUIDS, DYNAMICS, TEMPERATURE, GRADIENTS, Lunar and Planetary Exploration; Planets") + .withField(StandardField.MONTH, "#oct#") + .withField(StandardField.NUMBER, "1") + .withField(StandardField.PAGES, "62-80") + .withField(StandardField.TITLE, "Motion in the interiors and atmospheres of Jupiter and Saturn: scale analysis, anelastic equations, barotropic stability criterion") + .withField(StandardField.VOLUME, "52") + .withField(StandardField.YEAR, "1982") + .withField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/1982Icar...52...62I"); + + luceyPaulEntry = new BibEntry(StandardEntryType.Article) + .withCitationKey("2000JGR...10520297L") + .withField(StandardField.AUTHOR, "Lucey, Paul G. and Blewett, David T. and Jolliff, Bradley L.") + .withField(StandardField.DOI, "10.1029/1999JE001117") + .withField(StandardField.JOURNAL, "\\jgr") + .withField(StandardField.KEYWORDS, "Planetology: Solid Surface Planets: Composition, Planetology: Solid Surface Planets: Remote sensing, Planetology: Solid Surface Planets: Surface materials and properties, Planetology: Solar System Objects: Moon (1221)") + .withField(StandardField.PAGES, "20297-20306") + .withField(StandardField.TITLE, "Lunar iron and titanium abundance algorithms based on final processing of Clementine ultraviolet-visible images") + .withField(StandardField.VOLUME, "105") + .withField(StandardField.YEAR, "2000") + .withField(StandardField.URL, "https://ui.adsabs.harvard.edu/abs/2000JGR...10520297L") + .withField(StandardField.MONTH, "#jan#") + .withField(StandardField.NUMBER, "E8") + .withField(StandardField.ABSTRACT, "The Clementine mission to the Moon returned global imaging data collected by the ultraviolet visible (UVVIS) camera. This data set is now in a final state of calibration, and a five-band multispectral digital image model (DIM) of the lunar surface will soon be available to the science community. We have used observations of the lunar sample-return sites and stations extracted from the final DIM in conjunction with compositional information for returned lunar soils to revise our previously published algorithms for the spectral determination of the FeO and TiO$_{2}$ content of the lunar surface. The algorithms successfully normalize the effects of space weathering so that composition may be determined without regard to a surface's state of maturity. These algorithms permit anyone with access to the standard archived DIM to construct high spatial resolution maps of FeO and TiO$_{2}$ abundance. Such maps will be of great utility in a variety of lunar geologic studies."); } @Test @@ -156,9 +150,9 @@ public void searchByQueryFindsEntry() throws Exception { @Test public void searchByEntryFindsEntry() throws Exception { - BibEntry searchEntry = new BibEntry(); - searchEntry.setField(StandardField.TITLE, "slice theorem"); - searchEntry.setField(StandardField.AUTHOR, "Diez"); + BibEntry searchEntry = new BibEntry() + .withField(StandardField.TITLE, "slice theorem") + .withField(StandardField.AUTHOR, "Diez"); List fetchedEntries = fetcher.performSearch(searchEntry); diff --git a/src/test/java/org/jabref/logic/importer/fetcher/CompositeIdFetcherTest.java b/src/test/java/org/jabref/logic/importer/fetcher/CompositeIdFetcherTest.java index 367e2f6be9a..1883b908fa8 100644 --- a/src/test/java/org/jabref/logic/importer/fetcher/CompositeIdFetcherTest.java +++ b/src/test/java/org/jabref/logic/importer/fetcher/CompositeIdFetcherTest.java @@ -41,6 +41,7 @@ public static Stream performSearchByIdReturnsCorrectEntryForIdentifie .withField(StandardField.DATE, "2021-10-06") .withField(StandardField.ABSTRACT, "In the era of large-scale spectroscopic surveys in the Local Group (LG), we can explore using chemical abundances of halo stars to study the star formation and chemical enrichment histories of the dwarf galaxy progenitors of the Milky Way (MW) and M31 stellar halos. In this paper, we investigate using the Chemical Abundance Ratio Distributions (CARDs) of seven stellar halos from the Latte suite of FIRE-2 simulations. We attempt to infer galaxies' assembly histories by modelling the CARDs of the stellar halos of the Latte galaxies as a linear combination of template CARDs from disrupted dwarfs, with different stellar masses $M_{\\star}$ and quenching times $t_{100}$. We present a method for constructing these templates using present-day dwarf galaxies. For four of the seven Latte halos studied in this work, we recover the mass spectrum of accreted dwarfs to a precision of $<10\\%$. For the fraction of mass accreted as a function of $t_{100}$, we find residuals of $20-30\\%$ for five of the seven simulations. We discuss the failure modes of this method, which arise from the diversity of star formation and chemical enrichment histories dwarf galaxies can take. These failure cases can be robustly identified by the high model residuals. Though the CARDs modeling method does not successfully infer the assembly histories in these cases, the CARDs of these disrupted dwarfs contain signatures of their unusual formation histories. Our results are promising for using CARDs to learn more about the histories of the progenitors of the MW and M31 stellar halos.") .withField(StandardField.EPRINT, "2110.02957") + .withField(StandardField.DOI, "10.3847/1538-4357/ac78ea") .withField(StandardField.FILE, ":http\\://arxiv.org/pdf/2110.02957v1:PDF") .withField(StandardField.EPRINTTYPE, "arXiv") .withField(StandardField.EPRINTCLASS, "astro-ph.GA") From a618300bff21af578837e776496b277660cb225e Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Sun, 25 Sep 2022 20:31:06 +0200 Subject: [PATCH 11/27] Remove Java Flight Recorder (#9174) --- build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle b/build.gradle index 0add72e5b36..c29b87d6b52 100644 --- a/build.gradle +++ b/build.gradle @@ -560,7 +560,6 @@ jlink { requires 'java.transaction.xa' requires 'java.rmi' requires 'java.xml' - requires 'jdk.jfr' requires 'jdk.jsobject' requires 'jdk.unsupported' requires 'jdk.unsupported.desktop' From bbdc81d62ecaddf38a9dc8c8269e0217a1e89a35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:45:11 +0200 Subject: [PATCH 12/27] Bump slf4j-api from 2.0.1 to 2.0.2 in /buildSrc (#9182) Bumps [slf4j-api](https://github.com/qos-ch/slf4j) from 2.0.1 to 2.0.2. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_2.0.1...v_2.0.2) --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- buildSrc/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index d2262a465a0..9ca9b37d366 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -8,7 +8,7 @@ repositories { dependencies { implementation 'com.h2database:h2-mvstore:2.1.214' implementation 'org.apache.commons:commons-csv:1.9.0' - implementation 'org.slf4j:slf4j-api:2.0.1' + implementation 'org.slf4j:slf4j-api:2.0.2' } sourceSets{ From b2daa4cd422c304ef388c1d6dcd528532006582c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:46:05 +0200 Subject: [PATCH 13/27] Bump slf4j-api from 2.0.1 to 2.0.2 (#9181) Bumps [slf4j-api](https://github.com/qos-ch/slf4j) from 2.0.1 to 2.0.2. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_2.0.1...v_2.0.2) --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c29b87d6b52..8f782466012 100644 --- a/build.gradle +++ b/build.gradle @@ -177,7 +177,7 @@ dependencies { implementation 'org.jsoup:jsoup:1.15.3' implementation 'com.konghq:unirest-java:3.13.11' - implementation 'org.slf4j:slf4j-api:2.0.1' + implementation 'org.slf4j:slf4j-api:2.0.2' implementation "org.tinylog:tinylog-api:2.5.0" implementation "org.tinylog:slf4j-tinylog:2.5.0" implementation "org.tinylog:tinylog-impl:2.5.0" From 4e8c43eecd64829cdd6c8cf32067a23467de45b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:46:17 +0200 Subject: [PATCH 14/27] Bump checkstyle from 10.3.3 to 10.3.4 (#9179) Bumps [checkstyle](https://github.com/checkstyle/checkstyle) from 10.3.3 to 10.3.4. - [Release notes](https://github.com/checkstyle/checkstyle/releases) - [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.3.3...checkstyle-10.3.4) --- updated-dependencies: - dependency-name: com.puppycrawl.tools:checkstyle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8f782466012..b6ef076967c 100644 --- a/build.gradle +++ b/build.gradle @@ -216,7 +216,7 @@ dependencies { testImplementation "org.testfx:testfx-junit5:4.0.16-alpha" testImplementation "org.hamcrest:hamcrest-library:2.2" - checkstyle 'com.puppycrawl.tools:checkstyle:10.3.3' + checkstyle 'com.puppycrawl.tools:checkstyle:10.3.4' // xjc needs the runtime as well for the ant task, otherwise it fails xjc group: 'org.glassfish.jaxb', name: 'jaxb-xjc', version: '3.0.2' xjc group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '3.0.2' From cecf7fc086c9bba95b0b846001b9171b976949e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:46:26 +0200 Subject: [PATCH 15/27] Bump junit-jupiter from 5.9.0 to 5.9.1 (#9180) Bumps [junit-jupiter](https://github.com/junit-team/junit5) from 5.9.0 to 5.9.1. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.0...r5.9.1) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b6ef076967c..c5707379182 100644 --- a/build.gradle +++ b/build.gradle @@ -204,7 +204,7 @@ dependencies { implementation group: 'net.harawata', name: 'appdirs', version: '1.2.1' testImplementation 'io.github.classgraph:classgraph:4.8.149' - testImplementation 'org.junit.jupiter:junit-jupiter:5.9.0' + testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1' testImplementation 'org.junit.platform:junit-platform-launcher:1.9.0' testImplementation 'org.mockito:mockito-core:4.8.0' From 0cd94fd544f4e8ec2a4dfb55014c3c1f1ca5f7da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:46:40 +0200 Subject: [PATCH 16/27] Bump WyriHaximus/github-action-wait-for-status from 1.6 to 1.7.1 (#9178) Bumps [WyriHaximus/github-action-wait-for-status](https://github.com/WyriHaximus/github-action-wait-for-status) from 1.6 to 1.7.1. - [Release notes](https://github.com/WyriHaximus/github-action-wait-for-status/releases) - [Commits](https://github.com/WyriHaximus/github-action-wait-for-status/compare/v1.6...v1.7.1) --- updated-dependencies: - dependency-name: WyriHaximus/github-action-wait-for-status dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/automerge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 9783e2a9aaa..807af23a0ae 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -9,7 +9,7 @@ jobs: steps: - name: 'Wait for status checks' id: waitforstatuschecks - uses: "WyriHaximus/github-action-wait-for-status@v1.6" + uses: "WyriHaximus/github-action-wait-for-status@v1.7.1" with: ignoreActions: Automerge Dependabot,Code coverage,Create snapcraft image,Deploy binaries on builds.jabref.org,codecov/project,markdown-link-check checkInterval: 13 From 592c9d378cccd49ee6af62dc70cdc786c92b4ded Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 18:50:26 +0200 Subject: [PATCH 17/27] Bump junit-platform-launcher from 1.9.0 to 1.9.1 (#9177) Bumps [junit-platform-launcher](https://github.com/junit-team/junit5) from 1.9.0 to 1.9.1. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/commits) --- updated-dependencies: - dependency-name: org.junit.platform:junit-platform-launcher dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index c5707379182..1244e1797fe 100644 --- a/build.gradle +++ b/build.gradle @@ -205,7 +205,7 @@ dependencies { testImplementation 'io.github.classgraph:classgraph:4.8.149' testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1' - testImplementation 'org.junit.platform:junit-platform-launcher:1.9.0' + testImplementation 'org.junit.platform:junit-platform-launcher:1.9.1' testImplementation 'org.mockito:mockito-core:4.8.0' testImplementation 'org.xmlunit:xmlunit-core:2.9.0' From 0ed45690fee576387f3c0999ca9a0fc55e1a35b3 Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 27 Sep 2022 19:25:12 +0200 Subject: [PATCH 18/27] Fix jakarta annotation missing (#9183) * Fix jakarta annotation missing * apparently not valid here... * use requires inject after xml * add annotation as well * use explicitc module * add snapshot * test again * remove uses as we now have a proper module --- build.gradle | 7 +++---- lib/afterburner.fx.jar | Bin 17998 -> 0 bytes src/main/java/module-info.java | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 lib/afterburner.fx.jar diff --git a/build.gradle b/build.gradle index 1244e1797fe..e500f73e6c8 100644 --- a/build.gradle +++ b/build.gradle @@ -160,10 +160,11 @@ dependencies { exclude module: "jsr305" } - implementation group: 'jakarta.annotation', name: 'jakarta.annotation-api', version: '1.3.5' + implementation 'jakarta.annotation:jakarta.annotation-api:2.1.1' implementation 'jakarta.inject:jakarta.inject-api:2.0.1' - // JavaFX stuff + + implementation 'com.github.JabRef:afterburner.fx:testmoduleinfo-SNAPSHOT' implementation 'org.kordamp.ikonli:ikonli-javafx:12.3.1' implementation 'org.kordamp.ikonli:ikonli-materialdesign2-pack:12.3.1' implementation 'com.github.sialcasa.mvvmFX:mvvmfx-validation:f195849ca9' //jitpack @@ -568,8 +569,6 @@ jlink { requires 'com.google.gson' requires 'org.slf4j' requires 'jakarta.xml.bind' - uses 'com.airhacks.afterburner.views.ResourceLocator' - uses 'com.airhacks.afterburner.injection.PresenterFactory' uses 'org.mariadb.jdbc.credential.CredentialPlugin' uses 'org.mariadb.jdbc.authentication.AuthenticationPlugin' uses 'org.mariadb.jdbc.tls.TlsSocketPlugin' diff --git a/lib/afterburner.fx.jar b/lib/afterburner.fx.jar deleted file mode 100644 index 16e780b695b4a45ad34cf214fb8d58373ce63803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17998 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 diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index c05e10bda2b..3b49cad2af9 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -54,7 +54,7 @@ requires jdk.xml.dom; // Annotations (@PostConstruct) - requires java.annotation; + requires jakarta.annotation; // Microsoft application insights requires applicationinsights.core; From 246ce028e6fc5a6a45086a7d4e51ac9c08f0247c Mon Sep 17 00:00:00 2001 From: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Date: Wed, 28 Sep 2022 19:32:50 +0200 Subject: [PATCH 19/27] Observable Preferences O (Language and FileHistory) (#9173) * Included localization prefs in GeneralPreferences * Convertet getLanguage to new prefs pattern * Extracted localization from MetaDataDiff in logic * Refactored FileHistory and converted getFileHistory to new prefs model * Partial localization without restart * Convert list to EnumSet * Used pattern matching and applied IDE suggestions * Fixed comparison of optionals --- src/main/java/org/jabref/gui/JabRefFrame.java | 4 +- src/main/java/org/jabref/gui/JabRefGUI.java | 2 +- .../MetadataChangeDetailsView.java | 34 +++++++- .../gui/entryeditor/RelatedArticlesTab.java | 2 +- .../org/jabref/gui/menus/FileHistoryMenu.java | 13 ++- .../general/GeneralTabViewModel.java | 6 +- .../logic/bibtex/comparator/MetaDataDiff.java | 48 +++++++---- .../logic/cleanup/FieldFormatterCleanup.java | 11 ++- .../logic/cleanup/FieldFormatterCleanups.java | 12 +-- .../org/jabref/logic/util/io/FileHistory.java | 45 ++++++---- .../preferences/GeneralPreferences.java | 18 +++- .../jabref/preferences/GuiPreferences.java | 4 +- .../jabref/preferences/JabRefPreferences.java | 83 ++++++++----------- .../preferences/PreferencesService.java | 7 -- .../jabref/logic/util/io/FileHistoryTest.java | 12 +-- 15 files changed, 173 insertions(+), 128 deletions(-) diff --git a/src/main/java/org/jabref/gui/JabRefFrame.java b/src/main/java/org/jabref/gui/JabRefFrame.java index 9a5aeac2d9a..9da1e8fd77f 100644 --- a/src/main/java/org/jabref/gui/JabRefFrame.java +++ b/src/main/java/org/jabref/gui/JabRefFrame.java @@ -192,7 +192,7 @@ public JabRefFrame(Stage mainStage) { this.undoManager = Globals.undoManager; this.globalSearchBar = new GlobalSearchBar(this, stateManager, prefs, undoManager, dialogService); this.pushToApplicationCommand = new PushToApplicationCommand(stateManager, dialogService, prefs); - this.fileHistory = new FileHistoryMenu(prefs, dialogService, getOpenDatabaseAction()); + this.fileHistory = new FileHistoryMenu(prefs.getGuiPreferences().getFileHistory(), dialogService, getOpenDatabaseAction()); this.taskExecutor = Globals.TASK_EXECUTOR; this.importFormatReader = Globals.IMPORT_FORMAT_READER; this.setOnKeyTyped(key -> { @@ -402,7 +402,7 @@ private void tearDownJabRef(List filenames) { // Here we store the names of all current files. If there is no current file, we remove any // previously stored filename. if (filenames.isEmpty()) { - prefs.clearEditedFiles(); + prefs.getGuiPreferences().getLastFilesOpened().clear(); } else { Path focusedDatabase = getCurrentLibraryTab().getBibDatabaseContext() .getDatabasePath() diff --git a/src/main/java/org/jabref/gui/JabRefGUI.java b/src/main/java/org/jabref/gui/JabRefGUI.java index 2acb97939c1..29883a51ebb 100644 --- a/src/main/java/org/jabref/gui/JabRefGUI.java +++ b/src/main/java/org/jabref/gui/JabRefGUI.java @@ -135,7 +135,7 @@ private void openDatabases() { // Remove invalid databases List invalidDatabases = bibDatabases.stream() .filter(ParserResult::isInvalid) - .collect(Collectors.toList()); + .toList(); failed.addAll(invalidDatabases); bibDatabases.removeAll(invalidDatabases); diff --git a/src/main/java/org/jabref/gui/collab/metedatachange/MetadataChangeDetailsView.java b/src/main/java/org/jabref/gui/collab/metedatachange/MetadataChangeDetailsView.java index 43023cab438..078ef89fabd 100644 --- a/src/main/java/org/jabref/gui/collab/metedatachange/MetadataChangeDetailsView.java +++ b/src/main/java/org/jabref/gui/collab/metedatachange/MetadataChangeDetailsView.java @@ -4,6 +4,7 @@ import javafx.scene.layout.VBox; import org.jabref.gui.collab.ExternalChangeDetailsView; +import org.jabref.logic.bibtex.comparator.MetaDataDiff; import org.jabref.logic.l10n.Localization; import org.jabref.preferences.PreferencesService; @@ -16,8 +17,8 @@ public MetadataChangeDetailsView(MetadataChange metadataChange, PreferencesServi header.getStyleClass().add("sectionHeader"); container.getChildren().add(header); - for (String change : metadataChange.getMetaDataDiff().getDifferences(preferencesService)) { - container.getChildren().add(new Label(change)); + for (MetaDataDiff.Difference change : metadataChange.getMetaDataDiff().getDifferences(preferencesService)) { + container.getChildren().add(new Label(getDifferenceString(change))); } setLeftAnchor(container, 8d); @@ -27,4 +28,33 @@ public MetadataChangeDetailsView(MetadataChange metadataChange, PreferencesServi getChildren().setAll(container); } + + private String getDifferenceString(MetaDataDiff.Difference change) { + return switch (change) { + case PROTECTED -> + Localization.lang("Library protection"); + case GROUPS_ALTERED -> + Localization.lang("Modified groups tree"); + case ENCODING -> + Localization.lang("Library encoding"); + case SAVE_SORT_ORDER -> + Localization.lang("Save sort order"); + case KEY_PATTERNS -> + Localization.lang("Key patterns"); + case USER_FILE_DIRECTORY -> + Localization.lang("User-specific file directory"); + case LATEX_FILE_DIRECTORY -> + Localization.lang("LaTeX file directory"); + case DEFAULT_KEY_PATTERN -> + Localization.lang("Default pattern"); + case SAVE_ACTIONS -> + Localization.lang("Save actions"); + case MODE -> + Localization.lang("Library mode"); + case GENERAL_FILE_DIRECTORY -> + Localization.lang("General file directory"); + case CONTENT_SELECTOR -> + Localization.lang("Content selectors"); + }; + } } diff --git a/src/main/java/org/jabref/gui/entryeditor/RelatedArticlesTab.java b/src/main/java/org/jabref/gui/entryeditor/RelatedArticlesTab.java index c5384437c51..54f21252406 100644 --- a/src/main/java/org/jabref/gui/entryeditor/RelatedArticlesTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/RelatedArticlesTab.java @@ -65,7 +65,7 @@ private StackPane getRelatedArticlesPane(BibEntry entry) { ProgressIndicator progress = new ProgressIndicator(); progress.setMaxSize(100, 100); - MrDLibFetcher fetcher = new MrDLibFetcher(preferencesService.getLanguage().name(), + MrDLibFetcher fetcher = new MrDLibFetcher(preferencesService.getGeneralPreferences().getLanguage().name(), Globals.BUILD_INFO.version, preferencesService.getMrDlibPreferences()); BackgroundTask .wrap(() -> fetcher.performSearch(entry)) diff --git a/src/main/java/org/jabref/gui/menus/FileHistoryMenu.java b/src/main/java/org/jabref/gui/menus/FileHistoryMenu.java index 43a80641bf1..23554b66fc6 100644 --- a/src/main/java/org/jabref/gui/menus/FileHistoryMenu.java +++ b/src/main/java/org/jabref/gui/menus/FileHistoryMenu.java @@ -11,22 +11,19 @@ import org.jabref.gui.importer.actions.OpenDatabaseAction; import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.io.FileHistory; -import org.jabref.preferences.PreferencesService; public class FileHistoryMenu extends Menu { private final FileHistory history; - private final PreferencesService preferences; private final DialogService dialogService; private final OpenDatabaseAction openDatabaseAction; - public FileHistoryMenu(PreferencesService preferences, DialogService dialogService, OpenDatabaseAction openDatabaseAction) { + public FileHistoryMenu(FileHistory fileHistory, DialogService dialogService, OpenDatabaseAction openDatabaseAction) { setText(Localization.lang("Recent libraries")); - this.preferences = preferences; + this.history = fileHistory; this.dialogService = dialogService; this.openDatabaseAction = openDatabaseAction; - history = preferences.getGuiPreferences().getFileHistory(); if (history.isEmpty()) { setDisable(true); } else { @@ -46,10 +43,10 @@ public boolean openFileByKey(KeyEvent keyEvent) { } char key = keyEvent.getCharacter().charAt(0); int num = Character.getNumericValue(key); - if (num <= 0 || num > history.getHistory().size()) { + if (num <= 0 || num > history.size()) { return false; } - this.openFile(history.getFileAt(Integer.parseInt(keyEvent.getCharacter()) - 1)); + this.openFile(history.get(Integer.parseInt(keyEvent.getCharacter()) - 1)); return true; } @@ -66,7 +63,7 @@ public void newFile(Path file) { private void setItems() { getItems().clear(); for (int index = 0; index < history.size(); index++) { - addItem(history.getFileAt(index), index + 1); + addItem(history.get(index), index + 1); } } diff --git a/src/main/java/org/jabref/gui/preferences/general/GeneralTabViewModel.java b/src/main/java/org/jabref/gui/preferences/general/GeneralTabViewModel.java index 68ea3b24c7a..6e2143f31c4 100644 --- a/src/main/java/org/jabref/gui/preferences/general/GeneralTabViewModel.java +++ b/src/main/java/org/jabref/gui/preferences/general/GeneralTabViewModel.java @@ -68,7 +68,7 @@ public GeneralTabViewModel(DialogService dialogService, PreferencesService prefe public void setValues() { languagesListProperty.setValue(new SortedList<>(FXCollections.observableArrayList(Language.values()), Comparator.comparing(Language::getDisplayName))); - selectedLanguageProperty.setValue(preferencesService.getLanguage()); + selectedLanguageProperty.setValue(preferencesService.getGeneralPreferences().getLanguage()); encodingsListProperty.setValue(FXCollections.observableArrayList(Encodings.getCharsets())); @@ -91,8 +91,8 @@ public void setValues() { public void storeSettings() { Language newLanguage = selectedLanguageProperty.getValue(); - if (newLanguage != preferencesService.getLanguage()) { - preferencesService.setLanguage(newLanguage); + if (newLanguage != preferencesService.getGeneralPreferences().getLanguage()) { + preferencesService.getGeneralPreferences().setLanguage(newLanguage); Localization.setLanguage(newLanguage); restartWarning.add(Localization.lang("Changed language") + ": " + newLanguage.getDisplayName()); } diff --git a/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java b/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java index 7a3c5db3ba0..09c639e6e64 100644 --- a/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java +++ b/src/main/java/org/jabref/logic/bibtex/comparator/MetaDataDiff.java @@ -1,15 +1,27 @@ package org.jabref.logic.bibtex.comparator; -import java.util.ArrayList; -import java.util.List; +import java.util.EnumSet; import java.util.Objects; import java.util.Optional; -import org.jabref.logic.l10n.Localization; import org.jabref.model.metadata.MetaData; import org.jabref.preferences.PreferencesService; public class MetaDataDiff { + public enum Difference { + PROTECTED, + GROUPS_ALTERED, + ENCODING, + SAVE_SORT_ORDER, + KEY_PATTERNS, + USER_FILE_DIRECTORY, + LATEX_FILE_DIRECTORY, + DEFAULT_KEY_PATTERN, + SAVE_ACTIONS, + MODE, + GENERAL_FILE_DIRECTORY, + CONTENT_SELECTOR + } private final Optional groupDiff; private final MetaData originalMetaData; @@ -32,44 +44,44 @@ public static Optional compare(MetaData originalMetaData, MetaData /** * @implNote Should be kept in sync with {@link MetaData#equals(Object)} */ - public List getDifferences(PreferencesService preferences) { - List changes = new ArrayList<>(); + public EnumSet getDifferences(PreferencesService preferences) { + EnumSet changes = EnumSet.noneOf(Difference.class); if (originalMetaData.isProtected() != newMetaData.isProtected()) { - changes.add(Localization.lang("Library protection")); + changes.add(Difference.PROTECTED); } if (!Objects.equals(originalMetaData.getGroups(), newMetaData.getGroups())) { - changes.add(Localization.lang("Modified groups tree")); + changes.add(Difference.GROUPS_ALTERED); } if (!Objects.equals(originalMetaData.getEncoding(), newMetaData.getEncoding())) { - changes.add(Localization.lang("Library encoding")); + changes.add(Difference.ENCODING); } if (!Objects.equals(originalMetaData.getSaveOrderConfig(), newMetaData.getSaveOrderConfig())) { - changes.add(Localization.lang("Save sort order")); + changes.add(Difference.SAVE_SORT_ORDER); } if (!Objects.equals(originalMetaData.getCiteKeyPattern(preferences.getGlobalCitationKeyPattern()), newMetaData.getCiteKeyPattern(preferences.getGlobalCitationKeyPattern()))) { - changes.add(Localization.lang("Key patterns")); + changes.add(Difference.KEY_PATTERNS); } if (!Objects.equals(originalMetaData.getUserFileDirectories(), newMetaData.getUserFileDirectories())) { - changes.add(Localization.lang("User-specific file directory")); + changes.add(Difference.USER_FILE_DIRECTORY); } if (!Objects.equals(originalMetaData.getLatexFileDirectories(), newMetaData.getLatexFileDirectories())) { - changes.add(Localization.lang("LaTeX file directory")); + changes.add(Difference.LATEX_FILE_DIRECTORY); } if (!Objects.equals(originalMetaData.getDefaultCiteKeyPattern(), newMetaData.getDefaultCiteKeyPattern())) { - changes.add(Localization.lang("Default pattern")); + changes.add(Difference.DEFAULT_KEY_PATTERN); } if (!Objects.equals(originalMetaData.getSaveActions(), newMetaData.getSaveActions())) { - changes.add(Localization.lang("Save actions")); + changes.add(Difference.SAVE_ACTIONS); } - if (originalMetaData.getMode() != newMetaData.getMode()) { - changes.add(Localization.lang("Library mode")); + if (!originalMetaData.getMode().equals(newMetaData.getMode())) { + changes.add(Difference.MODE); } if (!Objects.equals(originalMetaData.getDefaultFileDirectory(), newMetaData.getDefaultFileDirectory())) { - changes.add(Localization.lang("General file directory")); + changes.add(Difference.GENERAL_FILE_DIRECTORY); } if (!Objects.equals(originalMetaData.getContentSelectors(), newMetaData.getContentSelectors())) { - changes.add(Localization.lang("Content selectors")); + changes.add(Difference.CONTENT_SELECTOR); } return changes; } diff --git a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java index 1594bdb4aab..3696ac294ae 100644 --- a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java +++ b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanup.java @@ -57,7 +57,7 @@ private List cleanupSingleField(Field fieldKey, BibEntry entry) { // Run formatter String newValue = formatter.format(oldValue); - if (oldValue.equals(newValue)) { + if (newValue.equals(oldValue)) { return Collections.emptyList(); } else { if (newValue.isEmpty()) { @@ -86,7 +86,7 @@ private List cleanupAllFields(BibEntry entry) { private List cleanupAllTextFields(BibEntry entry) { List fieldChanges = new ArrayList<>(); Set fields = new HashSet<>(entry.getFields()); - fields.removeAll(FieldFactory.getNotTextFieldNames()); + FieldFactory.getNotTextFieldNames().forEach(fields::remove); for (Field fieldKey : fields) { if (!fieldKey.equals(InternalField.KEY_FIELD)) { fieldChanges.addAll(cleanupSingleField(fieldKey, entry)); @@ -109,11 +109,10 @@ public boolean equals(Object obj) { if (this == obj) { return true; } - if (!(obj instanceof FieldFormatterCleanup)) { - return false; + if (obj instanceof FieldFormatterCleanup that) { + return Objects.equals(field, that.field) && Objects.equals(formatter, that.formatter); } - FieldFormatterCleanup other = (FieldFormatterCleanup) obj; - return Objects.equals(field, other.field) && Objects.equals(formatter, other.formatter); + return false; } @Override diff --git a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java index 153ee3be486..17e88ab6955 100644 --- a/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java +++ b/src/main/java/org/jabref/logic/cleanup/FieldFormatterCleanups.java @@ -217,15 +217,17 @@ public boolean equals(Object obj) { if (this == obj) { return true; } - if (!(obj instanceof FieldFormatterCleanups)) { - return false; + if (obj instanceof FieldFormatterCleanups other) { + return Objects.equals(actions, other.actions) && (enabled == other.enabled); } - FieldFormatterCleanups other = (FieldFormatterCleanups) obj; - return Objects.equals(actions, other.actions) && (enabled == other.enabled); + return false; } @Override public String toString() { - return "FieldFormatterCleanups [enabled=" + enabled + ", actions=" + actions + "]"; + return "FieldFormatterCleanups{" + + "enabled=" + enabled + "," + + "actions=" + actions + + "}"; } } diff --git a/src/main/java/org/jabref/logic/util/io/FileHistory.java b/src/main/java/org/jabref/logic/util/io/FileHistory.java index 04af2003c92..4281c36306e 100644 --- a/src/main/java/org/jabref/logic/util/io/FileHistory.java +++ b/src/main/java/org/jabref/logic/util/io/FileHistory.java @@ -1,28 +1,43 @@ package org.jabref.logic.util.io; import java.nio.file.Path; +import java.util.ArrayList; import java.util.List; -import java.util.Objects; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; +import javafx.collections.ModifiableObservableListBase; -public class FileHistory { +public class FileHistory extends ModifiableObservableListBase { private static final int HISTORY_SIZE = 8; - private final ObservableList history; + private final List history; - public FileHistory(List files) { - history = FXCollections.observableList(Objects.requireNonNull(files)); + private FileHistory(List list) { + history = new ArrayList<>(list); + } + + @Override + public Path get(int index) { + return history.get(index); } public int size() { return history.size(); } - public boolean isEmpty() { - return history.isEmpty(); + @Override + protected void doAdd(int index, Path element) { + history.add(index, element); + } + + @Override + protected Path doSet(int index, Path element) { + return history.set(index, element); + } + + @Override + protected Path doRemove(int index) { + return history.remove(index); } /** @@ -30,21 +45,17 @@ public boolean isEmpty() { */ public void newFile(Path file) { removeItem(file); - history.add(0, file); + this.add(0, file); while (size() > HISTORY_SIZE) { history.remove(HISTORY_SIZE); } } - public Path getFileAt(int index) { - return history.get(index); - } - public void removeItem(Path file) { - history.remove(file); + this.remove(file); } - public ObservableList getHistory() { - return history; + public static FileHistory of(List list) { + return new FileHistory(new ArrayList<>(list)); } } diff --git a/src/main/java/org/jabref/preferences/GeneralPreferences.java b/src/main/java/org/jabref/preferences/GeneralPreferences.java index 1383e6c11b4..62d4971a6d6 100644 --- a/src/main/java/org/jabref/preferences/GeneralPreferences.java +++ b/src/main/java/org/jabref/preferences/GeneralPreferences.java @@ -5,9 +5,11 @@ import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleObjectProperty; +import org.jabref.logic.l10n.Language; import org.jabref.model.database.BibDatabaseMode; public class GeneralPreferences { + private final ObjectProperty language; private final ObjectProperty defaultBibDatabaseMode; private final BooleanProperty warnAboutDuplicatesInInspection; private final BooleanProperty confirmDelete; @@ -15,11 +17,13 @@ public class GeneralPreferences { private final BooleanProperty memoryStickMode; private final BooleanProperty showAdvancedHints; - public GeneralPreferences(BibDatabaseMode defaultBibDatabaseMode, + public GeneralPreferences(Language language, + BibDatabaseMode defaultBibDatabaseMode, boolean warnAboutDuplicatesInInspection, boolean confirmDelete, boolean memoryStickMode, boolean showAdvancedHints) { + this.language = new SimpleObjectProperty<>(language); this.defaultBibDatabaseMode = new SimpleObjectProperty<>(defaultBibDatabaseMode); this.warnAboutDuplicatesInInspection = new SimpleBooleanProperty(warnAboutDuplicatesInInspection); this.confirmDelete = new SimpleBooleanProperty(confirmDelete); @@ -28,6 +32,18 @@ public GeneralPreferences(BibDatabaseMode defaultBibDatabaseMode, this.showAdvancedHints = new SimpleBooleanProperty(showAdvancedHints); } + public Language getLanguage() { + return language.get(); + } + + public ObjectProperty languageProperty() { + return language; + } + + public void setLanguage(Language language) { + this.language.set(language); + } + public BibDatabaseMode getDefaultBibDatabaseMode() { return defaultBibDatabaseMode.get(); } diff --git a/src/main/java/org/jabref/preferences/GuiPreferences.java b/src/main/java/org/jabref/preferences/GuiPreferences.java index 08f9e199c84..b8ca00d69d0 100644 --- a/src/main/java/org/jabref/preferences/GuiPreferences.java +++ b/src/main/java/org/jabref/preferences/GuiPreferences.java @@ -25,14 +25,14 @@ public class GuiPreferences { private final BooleanProperty windowMaximised; + // the last libraries that were open when jabref closes and should be reopened on startup private final ObservableList lastFilesOpened; private final ObjectProperty lastFocusedFile; + // observable list last files opened in the file menu private final FileHistory fileHistory; private final StringProperty lastSelectedIdBasedFetcher; - private final ObjectProperty mergeDiffMode; - private final DoubleProperty sidePaneWidth; public GuiPreferences(double positionX, diff --git a/src/main/java/org/jabref/preferences/JabRefPreferences.java b/src/main/java/org/jabref/preferences/JabRefPreferences.java index 4f50fe85351..166e5d9f187 100644 --- a/src/main/java/org/jabref/preferences/JabRefPreferences.java +++ b/src/main/java/org/jabref/preferences/JabRefPreferences.java @@ -34,6 +34,7 @@ import java.util.stream.Stream; import javafx.beans.InvalidationListener; +import javafx.collections.ListChangeListener; import javafx.collections.SetChangeListener; import javafx.scene.control.TableColumn.SortType; @@ -414,7 +415,6 @@ public class JabRefPreferences implements PreferencesService { /** * Cache variables */ - private Language language; private GeneralPreferences generalPreferences; private TelemetryPreferences telemetryPreferences; private DOIPreferences doiPreferences; @@ -1254,33 +1254,6 @@ private void storeBibEntryTypes(Collection bibEntryTypes, BibDatab // GeneralPreferences //************************************************************************************************************* - @Override - public Language getLanguage() { - if (language == null) { - updateLanguage(); - } - return language; - } - - private void updateLanguage() { - String languageId = get(LANGUAGE); - language = Stream.of(Language.values()) - .filter(language -> language.getId().equalsIgnoreCase(languageId)) - .findFirst() - .orElse(Language.ENGLISH); - } - - @Override - public void setLanguage(Language language) { - Language oldLanguage = getLanguage(); - put(LANGUAGE, language.getId()); - if (language != oldLanguage) { - // Update any defaults that might be language dependent: - setLanguageDependentDefaultValues(); - } - updateLanguage(); - } - @Override public GeneralPreferences getGeneralPreferences() { if (Objects.nonNull(generalPreferences)) { @@ -1288,12 +1261,20 @@ public GeneralPreferences getGeneralPreferences() { } generalPreferences = new GeneralPreferences( + getLanguage(), getBoolean(BIBLATEX_DEFAULT_MODE) ? BibDatabaseMode.BIBLATEX : BibDatabaseMode.BIBTEX, getBoolean(WARN_ABOUT_DUPLICATES_IN_INSPECTION), getBoolean(CONFIRM_DELETE), getBoolean(MEMORY_STICK_MODE), getBoolean(SHOW_ADVANCED_HINTS)); + EasyBind.listen(generalPreferences.languageProperty(), (obs, oldValue, newValue) -> { + put(LANGUAGE, newValue.getId()); + if (oldValue != newValue) { + setLanguageDependentDefaultValues(); + Localization.setLanguage(newValue); + } + }); EasyBind.listen(generalPreferences.defaultBibDatabaseModeProperty(), (obs, oldValue, newValue) -> putBoolean(BIBLATEX_DEFAULT_MODE, (newValue == BibDatabaseMode.BIBLATEX))); EasyBind.listen(generalPreferences.isWarnAboutDuplicatesInInspectionProperty(), (obs, oldValue, newValue) -> putBoolean(WARN_ABOUT_DUPLICATES_IN_INSPECTION, newValue)); EasyBind.listen(generalPreferences.confirmDeleteProperty(), (obs, oldValue, newValue) -> putBoolean(CONFIRM_DELETE, newValue)); @@ -1303,6 +1284,13 @@ public GeneralPreferences getGeneralPreferences() { return generalPreferences; } + private Language getLanguage() { + return Stream.of(Language.values()) + .filter(language -> language.getId().equalsIgnoreCase(get(LANGUAGE))) + .findFirst() + .orElse(Language.ENGLISH); + } + @Override public TelemetryPreferences getTelemetryPreferences() { if (Objects.nonNull(telemetryPreferences)) { @@ -1312,7 +1300,7 @@ public TelemetryPreferences getTelemetryPreferences() { telemetryPreferences = new TelemetryPreferences( getBoolean(COLLECT_TELEMETRY), !getBoolean(ALREADY_ASKED_TO_COLLECT_TELEMETRY), // mind the ! - getOrCreateUserId() + getTelemetryUserId() ); EasyBind.listen(telemetryPreferences.collectTelemetryProperty(), (obs, oldValue, newValue) -> putBoolean(COLLECT_TELEMETRY, newValue)); @@ -1321,7 +1309,7 @@ public TelemetryPreferences getTelemetryPreferences() { return telemetryPreferences; } - private String getOrCreateUserId() { + private String getTelemetryUserId() { Optional userId = getAsOptional(USER_ID); if (userId.isPresent()) { return userId.get(); @@ -2202,7 +2190,7 @@ private String determineMainFileDirectory(String originalDirectory) { // A non-empty directory is kept return originalDirectory; } - return JabRefDesktop.getDefaultFileChooserDirectory().toString(); + return JabRefDesktop.getDefaultFileChooserDirectory(); } @Override @@ -2574,8 +2562,13 @@ public GuiPreferences getGuiPreferences() { EasyBind.listen(guiPreferences.sizeXProperty(), (obs, oldValue, newValue) -> putDouble(SIZE_X, newValue.doubleValue())); EasyBind.listen(guiPreferences.sizeYProperty(), (obs, oldValue, newValue) -> putDouble(SIZE_Y, newValue.doubleValue())); EasyBind.listen(guiPreferences.windowMaximisedProperty(), (obs, oldValue, newValue) -> putBoolean(WINDOW_MAXIMISED, newValue)); - guiPreferences.getLastFilesOpened().addListener((InvalidationListener) change -> - putStringList(LAST_EDITED, guiPreferences.getLastFilesOpened())); + guiPreferences.getLastFilesOpened().addListener((ListChangeListener) change -> { + if (change.getList().isEmpty()) { + prefs.remove(LAST_EDITED); + } else { + putStringList(LAST_EDITED, guiPreferences.getLastFilesOpened()); + } + }); EasyBind.listen(guiPreferences.lastFocusedFileProperty(), (obs, oldValue, newValue) -> { if (newValue != null) { put(LAST_FOCUSED, newValue.toAbsolutePath().toString()); @@ -2583,7 +2576,7 @@ public GuiPreferences getGuiPreferences() { remove(LAST_EDITED); } }); - guiPreferences.getFileHistory().getHistory().addListener((InvalidationListener) change -> storeFileHistory(guiPreferences.getFileHistory())); + guiPreferences.getFileHistory().addListener((InvalidationListener) change -> storeFileHistory(guiPreferences.getFileHistory())); EasyBind.listen(guiPreferences.lastSelectedIdBasedFetcherProperty(), (obs, oldValue, newValue) -> put(ID_ENTRY_GENERATOR, newValue)); EasyBind.listen(guiPreferences.mergeDiffModeProperty(), (obs, oldValue, newValue) -> put(MERGE_ENTRIES_DIFF_MODE, newValue.name())); EasyBind.listen(guiPreferences.sidePaneWidthProperty(), (obs, oldValue, newValue) -> putDouble(SIDE_PANE_WIDTH, newValue.doubleValue())); @@ -2592,24 +2585,16 @@ public GuiPreferences getGuiPreferences() { } private FileHistory getFileHistory() { - return new FileHistory(getStringList(RECENT_DATABASES).stream() - .map(Path::of) - .collect(Collectors.toList())); + return FileHistory.of(getStringList(RECENT_DATABASES).stream() + .map(Path::of) + .toList()); } private void storeFileHistory(FileHistory history) { - if (!history.isEmpty()) { - putStringList(RECENT_DATABASES, history.getHistory() - .stream() - .map(Path::toAbsolutePath) - .map(Path::toString) - .collect(Collectors.toList())); - } - } - - @Override - public void clearEditedFiles() { - prefs.remove(LAST_EDITED); + putStringList(RECENT_DATABASES, history.stream() + .map(Path::toAbsolutePath) + .map(Path::toString) + .toList()); } //************************************************************************************************************* diff --git a/src/main/java/org/jabref/preferences/PreferencesService.java b/src/main/java/org/jabref/preferences/PreferencesService.java index 7da5fdda1a9..678ecfe37a3 100644 --- a/src/main/java/org/jabref/preferences/PreferencesService.java +++ b/src/main/java/org/jabref/preferences/PreferencesService.java @@ -26,7 +26,6 @@ import org.jabref.logic.importer.fetcher.GrobidPreferences; import org.jabref.logic.journals.JournalAbbreviationPreferences; import org.jabref.logic.journals.JournalAbbreviationRepository; -import org.jabref.logic.l10n.Language; import org.jabref.logic.layout.LayoutFormatterPreferences; import org.jabref.logic.layout.format.FileLinkPreferences; import org.jabref.logic.layout.format.NameFormatterPreferences; @@ -111,10 +110,6 @@ public interface PreferencesService { // GeneralPreferences //************************************************************************************************************* - Language getLanguage(); - - void setLanguage(Language language); - GeneralPreferences getGeneralPreferences(); TelemetryPreferences getTelemetryPreferences(); @@ -247,8 +242,6 @@ public interface PreferencesService { GuiPreferences getGuiPreferences(); - void clearEditedFiles(); - //************************************************************************************************************* // Misc preferences //************************************************************************************************************* diff --git a/src/test/java/org/jabref/logic/util/io/FileHistoryTest.java b/src/test/java/org/jabref/logic/util/io/FileHistoryTest.java index 38f63a6c87d..6d37300cfa3 100644 --- a/src/test/java/org/jabref/logic/util/io/FileHistoryTest.java +++ b/src/test/java/org/jabref/logic/util/io/FileHistoryTest.java @@ -1,8 +1,8 @@ package org.jabref.logic.util.io; import java.nio.file.Path; -import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -16,14 +16,14 @@ class FileHistoryTest { @BeforeEach void setUp() { - history = new FileHistory(new ArrayList<>()); + history = FileHistory.of(Collections.emptyList()); } @Test void newItemsAreAddedInRightOrder() { history.newFile(Path.of("aa")); history.newFile(Path.of("bb")); - assertEquals(Arrays.asList(Path.of("bb"), Path.of("aa")), history.getHistory()); + assertEquals(Arrays.asList(Path.of("bb"), Path.of("aa")), history); } @Test @@ -31,7 +31,7 @@ void itemsAlreadyInListIsMovedToTop() { history.newFile(Path.of("aa")); history.newFile(Path.of("bb")); history.newFile(Path.of("aa")); - assertEquals(Arrays.asList(Path.of("aa"), Path.of("bb")), history.getHistory()); + assertEquals(Arrays.asList(Path.of("aa"), Path.of("bb")), history); } @Test @@ -42,7 +42,7 @@ void removeItemsLeavesOtherItemsInRightOrder() { history.removeItem(Path.of("bb")); - assertEquals(Arrays.asList(Path.of("cc"), Path.of("aa")), history.getHistory()); + assertEquals(Arrays.asList(Path.of("cc"), Path.of("aa")), history); } @Test @@ -66,7 +66,7 @@ void getFileAtTest() { history.newFile(Path.of("aa")); history.newFile(Path.of("bb")); history.newFile(Path.of("cc")); - assertEquals(Path.of("bb"), history.getFileAt(1)); + assertEquals(Path.of("bb"), history.get(1)); } } From fca9fb9525bd90520abecabcc9d576bdbd1fe935 Mon Sep 17 00:00:00 2001 From: scarpio02 <87380951+scarpio02@users.noreply.github.com> Date: Thu, 29 Sep 2022 18:35:37 -0400 Subject: [PATCH 20/27] "Capitalize" capitalizes words after hyphens (#9186) * Fix for issue #9157. Added method that capitalizes first letter of every word, including words after hyphens. * Added test cases for CapitalizeFormatter --- CHANGELOG.md | 1 + .../formatter/casechanger/CapitalizeFormatter.java | 2 +- .../org/jabref/logic/formatter/casechanger/Word.java | 10 ++++++++++ .../formatter/casechanger/CapitalizeFormatterTest.java | 7 +++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8db15b3ea9c..1c97f005429 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,6 +53,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve - We fixed an issue about selecting the save order in the preferences. [#9175](https://github.com/JabRef/jabref/issues/9147) - We fixed an issue where the CSS styles are missing in some dialogs. [#9150](https://github.com/JabRef/jabref/pull/9150) - We fixed an issue where pdfs were re-indexed on each startup. [#9166](https://github.com/JabRef/jabref/pull/9166) +- We fixed an issue where Capitalize didn't capitalize words after hyphen characters. [#9157](https://github.com/JabRef/jabref/issues/9157) ### Removed diff --git a/src/main/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatter.java b/src/main/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatter.java index 01a7a6d5fc2..86b6861ae4e 100644 --- a/src/main/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatter.java +++ b/src/main/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatter.java @@ -22,7 +22,7 @@ public String getKey() { public String format(String input) { Title title = new Title(input); - title.getWords().stream().forEach(Word::toUpperFirst); + title.getWords().stream().forEach(Word::toUpperFirstIgnoreHyphen); return title.toString(); } diff --git a/src/main/java/org/jabref/logic/formatter/casechanger/Word.java b/src/main/java/org/jabref/logic/formatter/casechanger/Word.java index 9cf9dd77ea9..5c777df9a00 100644 --- a/src/main/java/org/jabref/logic/formatter/casechanger/Word.java +++ b/src/main/java/org/jabref/logic/formatter/casechanger/Word.java @@ -102,6 +102,16 @@ public void toUpperFirst() { } } + public void toUpperFirstIgnoreHyphen() { + for (int i = 0; i < chars.length; i++) { + if (!protectedChars[i]) { + chars[i] = (i == 0 || (DASHES.contains(chars[i - 1]))) ? + Character.toUpperCase(chars[i]) : + Character.toLowerCase(chars[i]); + } + } + } + public void toUpperFirstTitle() { for (int i = 0; i < chars.length; i++) { if (!protectedChars[i]) { diff --git a/src/test/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatterTest.java b/src/test/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatterTest.java index 6210e48b96b..d662162c520 100644 --- a/src/test/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatterTest.java +++ b/src/test/java/org/jabref/logic/formatter/casechanger/CapitalizeFormatterTest.java @@ -43,6 +43,13 @@ public void formatExample() { "UPPER {E}ACH {NOT} FIRST, Upper {E}ach {NOT} First", // multiple words upper case with {} "upper each first {NOT} {this}, Upper Each First {NOT} {this}", // multiple words in lower and upper case with {} "upper each first {N}OT {t}his, Upper Each First {N}ot {t}his", // multiple words in lower and upper case with {} part 2 + "upper-each-first, Upper-Each-First", // multiple words lower case with - + "Upper-Each-First, Upper-Each-First", // multiple words correct with - + "Upper-each-First, Upper-Each-First", // multiple words in lower and upper case with - + "UPPER-EACH-FIRST, Upper-Each-First", // multiple words upper case with - + "{u}pper-each-{f}irst, {u}pper-Each-{f}irst", // multiple words lower case with {} and - + "-upper, -Upper", // single word with - + "-{u}pper, -{u}pper", // single word with {} and - }) public void testInputs(String input, String expectedResult) { String formattedStr = formatter.format(input); From 7486037d67526cc5fe311b8421ad4bb3ed309dc2 Mon Sep 17 00:00:00 2001 From: github actions Date: Sat, 1 Oct 2022 03:04:00 +0000 Subject: [PATCH 21/27] Squashed 'buildres/csl/csl-styles/' changes from 201e022903..7bde3e42ab 7bde3e42ab Add style for the Geographical Analysis journal (#6145) 6fa155102f Create taylor-and-francis-chicago-b-author-date.csl (#6232) eba2e8c686 Create taylor-and-francis-ama.csl (#6221) dda9d57219 ACS, AMA, Vancouver: Remove hardcoded space after `citation-number` (#6248) 8f5fe926f2 GitHub Workflows security hardening (#6246) 284bc10618 Create angiology.csl (#6122) eb141cc6e7 Update society-of-biblical-literature-fullnote-bibliography.csl (#6157) dddb459a29 Rewrite law-citation-manual.csl (#6171) (#6171) b975c96857 Update Cell to numeric-superscript style (#6245) 3a41b08533 Create isara-iso-690.csl (#6201) 5a128fe1f9 Create Biomembranes.csl (#6200) da2e0c0076 Capitalize-first short titles for legislation ("Statute"). (#6241) af7f08d360 Create proceedings-of-the-estonian-academy-of-sciences-author-date.csl (#6209) git-subtree-dir: buildres/csl/csl-styles git-subtree-split: 7bde3e42ab6eb20b0ef19009eafe7eb93c3b25a6 --- .github/workflows/label-gun.yml | 5 + .github/workflows/merge.yaml | 5 + .github/workflows/sheldon.yaml | 5 + american-chemical-society.csl | 2 +- american-medical-association.csl | 2 +- angiology.csl | 200 ++++++ biologiceskie-membrany.csl | 145 +++++ cell-numeric-superscript.csl | 123 ---- cell.csl | 159 ++--- dependent/cancer-cell.csl | 4 +- dependent/cell-chemical-biology.csl | 4 +- dependent/cell-genomics.csl | 16 + dependent/cell-host-and-microbe.csl | 4 +- dependent/cell-metabolism.csl | 4 +- dependent/cell-reports-medicine.csl | 17 + ...l-reports.csl => cell-reports-methods.csl} | 14 +- dependent/cell-reports-physcial-science.csl | 17 + dependent/cell-reports.csl | 4 +- dependent/cell-stem-cell.csl | 4 +- dependent/cell-systems.csl | 2 +- dependent/chem-catalysis.csl | 4 +- dependent/chem.csl | 5 +- dependent/current-biology.csl | 2 +- dependent/developmental-cell.csl | 4 +- dependent/hgg-advances.csl | 16 + dependent/immunity.csl | 4 +- dependent/iscience.csl | 12 +- dependent/joule.csl | 2 +- ...american-society-for-mass-spectrometry.csl | 10 +- dependent/matter.csl | 16 + dependent/med.csl | 16 + dependent/molecular-cell.csl | 4 +- ...erapy-methods-and-clinical-development.csl | 9 +- dependent/molecular-therapy-nucleic-acids.csl | 9 +- dependent/molecular-therapy-oncolytics.csl | 9 +- dependent/molecular-therapy.csl | 7 +- dependent/negative-results.csl | 2 +- dependent/neuron.csl | 4 +- dependent/one-earth.csl | 4 +- dependent/patterns.csl | 16 + dependent/star-protocols.csl | 16 + dependent/structure.csl | 4 +- ...the-american-journal-of-human-genetics.csl | 17 + geographical-analysis.csl | 180 ++++++ isara-iso-690.csl | 570 +++++++++++++++++ law-citation-manual.csl | 596 ++++++++++++------ ...andard-for-rettsvitenskapelige-tekster.csl | 2 +- ...tonian-academy-of-sciences-author-date.csl | 222 +++++++ ...e-estonian-academy-of-sciences-numeric.csl | 278 ++++++++ renamed-styles.json | 3 +- ...lical-literature-fullnote-bibliography.csl | 104 ++- spec/filters.yaml | 2 + ...uman-genetics.csl => stem-cell-reports.csl | 73 ++- taylor-and-francis-ama.csl | 274 ++++++++ taylor-and-francis-chicago-b-author-date.csl | 526 ++++++++++++++++ vancouver.csl | 2 +- 56 files changed, 3287 insertions(+), 473 deletions(-) create mode 100644 angiology.csl create mode 100644 biologiceskie-membrany.csl delete mode 100644 cell-numeric-superscript.csl create mode 100644 dependent/cell-genomics.csl create mode 100644 dependent/cell-reports-medicine.csl rename dependent/{stem-cell-reports.csl => cell-reports-methods.csl} (60%) create mode 100644 dependent/cell-reports-physcial-science.csl create mode 100644 dependent/hgg-advances.csl create mode 100644 dependent/matter.csl create mode 100644 dependent/med.csl create mode 100644 dependent/patterns.csl create mode 100644 dependent/star-protocols.csl create mode 100644 dependent/the-american-journal-of-human-genetics.csl create mode 100644 geographical-analysis.csl create mode 100644 isara-iso-690.csl create mode 100644 proceedings-of-the-estonian-academy-of-sciences-author-date.csl create mode 100644 proceedings-of-the-estonian-academy-of-sciences-numeric.csl rename the-american-journal-of-human-genetics.csl => stem-cell-reports.csl (53%) create mode 100644 taylor-and-francis-ama.csl create mode 100644 taylor-and-francis-chicago-b-author-date.csl diff --git a/.github/workflows/label-gun.yml b/.github/workflows/label-gun.yml index d4d022673f8..c87c1721b75 100644 --- a/.github/workflows/label-gun.yml +++ b/.github/workflows/label-gun.yml @@ -6,8 +6,13 @@ on: issue_comment: types: [created, edited, closed] +permissions: {} jobs: label: + permissions: + issues: write # to add label to an issues (retorquere/label-gun) + pull-requests: write # to add label, comment on pull request (retorquere/label-gun) + runs-on: ubuntu-latest steps: - uses: retorquere/label-gun@main diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index f52a6ba4110..c1efb7eab07 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -12,8 +12,13 @@ on: description: Commit message required: true +permissions: {} jobs: release: + permissions: + contents: write # to create a release + pull-requests: read # to read pull requests (dorny/paths-filter) + runs-on: ubuntu-latest env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/sheldon.yaml b/.github/workflows/sheldon.yaml index 9bf525949f1..42962c95090 100644 --- a/.github/workflows/sheldon.yaml +++ b/.github/workflows/sheldon.yaml @@ -4,8 +4,13 @@ on: pull_request_target: types: [ opened, synchronize, workflow_dispatch] +permissions: {} jobs: test: + permissions: + contents: write # to push code in repo (stefanzweifel/git-auto-commit-action) + pull-requests: write # to comment on pull requests + runs-on: ubuntu-latest env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/american-chemical-society.csl b/american-chemical-society.csl index 09c0e9cf088..b7d421858bd 100644 --- a/american-chemical-society.csl +++ b/american-chemical-society.csl @@ -148,7 +148,7 @@ - + diff --git a/american-medical-association.csl b/american-medical-association.csl index b36bbb5488e..e8772592b34 100644 --- a/american-medical-association.csl +++ b/american-medical-association.csl @@ -124,7 +124,7 @@ - + diff --git a/angiology.csl b/angiology.csl new file mode 100644 index 00000000000..8cd8da147b8 --- /dev/null +++ b/angiology.csl @@ -0,0 +1,200 @@ + + diff --git a/biologiceskie-membrany.csl b/biologiceskie-membrany.csl new file mode 100644 index 00000000000..2d5c19fbe06 --- /dev/null +++ b/biologiceskie-membrany.csl @@ -0,0 +1,145 @@ + + diff --git a/cell-numeric-superscript.csl b/cell-numeric-superscript.csl deleted file mode 100644 index c928f064c24..00000000000 --- a/cell-numeric-superscript.csl +++ /dev/null @@ -1,123 +0,0 @@ - - diff --git a/cell.csl b/cell.csl index 4c29acbd6bf..80635fd5fd8 100644 --- a/cell.csl +++ b/cell.csl @@ -4,7 +4,7 @@ Cell http://www.zotero.org/styles/cell - + Adam Mark a.mark@uoguelph.ca @@ -17,113 +17,114 @@ Aurimas Vinckevicius aurimas.dev@gmail.com - + 0092-8674 1097-4172 - The Cell journal style. Original by Julian Onions. - 2013-01-26T22:06:38+00:00 + The Cell journal style, switched to numeric superscript as per the Cell editorial office in Sept. 2022 + 2022-09-23T22:06:38+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License - - - - - - - - + + + + - + + - - - - + + + + + + + + + - - - - - + + - - - - + + - + - - + + + + + - - - + + + - + - - - - - + - - - - - + + - + - - - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + diff --git a/dependent/cancer-cell.csl b/dependent/cancer-cell.csl index 0b835e10ef2..cd5b5bd118b 100644 --- a/dependent/cancer-cell.csl +++ b/dependent/cancer-cell.csl @@ -7,12 +7,12 @@ - + 1535-6108 1878-3686 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/cell-chemical-biology.csl b/dependent/cell-chemical-biology.csl index 297bd541f27..d1bb1ad25b7 100644 --- a/dependent/cell-chemical-biology.csl +++ b/dependent/cell-chemical-biology.csl @@ -7,11 +7,11 @@ - + 2451-9456 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/cell-genomics.csl b/dependent/cell-genomics.csl new file mode 100644 index 00000000000..4ea7fee1309 --- /dev/null +++ b/dependent/cell-genomics.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/cell-host-and-microbe.csl b/dependent/cell-host-and-microbe.csl index b360f70ef8c..bea71d5db54 100644 --- a/dependent/cell-host-and-microbe.csl +++ b/dependent/cell-host-and-microbe.csl @@ -7,12 +7,12 @@ - + 1931-3128 1934-6069 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/cell-metabolism.csl b/dependent/cell-metabolism.csl index 2a671ef3b7a..24f8dc2c5da 100644 --- a/dependent/cell-metabolism.csl +++ b/dependent/cell-metabolism.csl @@ -7,12 +7,12 @@ - + 1550-4131 1932-7420 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/cell-reports-medicine.csl b/dependent/cell-reports-medicine.csl new file mode 100644 index 00000000000..ce4e7b0d289 --- /dev/null +++ b/dependent/cell-reports-medicine.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/stem-cell-reports.csl b/dependent/cell-reports-methods.csl similarity index 60% rename from dependent/stem-cell-reports.csl rename to dependent/cell-reports-methods.csl index 0d3d60a98fa..1ddaf2a5536 100644 --- a/dependent/stem-cell-reports.csl +++ b/dependent/cell-reports-methods.csl @@ -2,16 +2,16 @@ diff --git a/dependent/cell-reports-physcial-science.csl b/dependent/cell-reports-physcial-science.csl new file mode 100644 index 00000000000..3d8ec283509 --- /dev/null +++ b/dependent/cell-reports-physcial-science.csl @@ -0,0 +1,17 @@ + + diff --git a/dependent/cell-reports.csl b/dependent/cell-reports.csl index cf5ddbb3723..83a5c1a58a6 100644 --- a/dependent/cell-reports.csl +++ b/dependent/cell-reports.csl @@ -7,11 +7,11 @@ - + 2211-1247 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/cell-stem-cell.csl b/dependent/cell-stem-cell.csl index e34749d7560..74797176799 100644 --- a/dependent/cell-stem-cell.csl +++ b/dependent/cell-stem-cell.csl @@ -7,12 +7,12 @@ - + 1934-5909 1875-9777 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/cell-systems.csl b/dependent/cell-systems.csl index e98444a82d4..c1bdd10d53d 100644 --- a/dependent/cell-systems.csl +++ b/dependent/cell-systems.csl @@ -7,7 +7,7 @@ - + 2405-4712 diff --git a/dependent/chem-catalysis.csl b/dependent/chem-catalysis.csl index a9f989fb74a..919f71891f0 100644 --- a/dependent/chem-catalysis.csl +++ b/dependent/chem-catalysis.csl @@ -5,12 +5,12 @@ Chem Catalysis http://www.zotero.org/styles/chem-catalysis - + 2667-1093 - 2020-10-20T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/chem.csl b/dependent/chem.csl index 0ef7aed6845..7d19a14ebee 100644 --- a/dependent/chem.csl +++ b/dependent/chem.csl @@ -5,13 +5,12 @@ Chem http://www.zotero.org/styles/chem - + - 2451-9294 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/current-biology.csl b/dependent/current-biology.csl index 224648bdd5e..6329890f928 100644 --- a/dependent/current-biology.csl +++ b/dependent/current-biology.csl @@ -5,7 +5,7 @@ Current Biology http://www.zotero.org/styles/current-biology - + diff --git a/dependent/developmental-cell.csl b/dependent/developmental-cell.csl index ecd9ee313c8..259227edda7 100644 --- a/dependent/developmental-cell.csl +++ b/dependent/developmental-cell.csl @@ -7,12 +7,12 @@ - + 1534-5807 1878-1551 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/hgg-advances.csl b/dependent/hgg-advances.csl new file mode 100644 index 00000000000..1200eee76d7 --- /dev/null +++ b/dependent/hgg-advances.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/immunity.csl b/dependent/immunity.csl index fa6ed30361b..a681ae8afaa 100644 --- a/dependent/immunity.csl +++ b/dependent/immunity.csl @@ -7,12 +7,12 @@ - + 1074-7613 1097-4180 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/iscience.csl b/dependent/iscience.csl index bae308d4ee7..2e16d6655b5 100644 --- a/dependent/iscience.csl +++ b/dependent/iscience.csl @@ -1,14 +1,16 @@ diff --git a/dependent/joule.csl b/dependent/joule.csl index f7552902c73..b6fff2f3bc2 100644 --- a/dependent/joule.csl +++ b/dependent/joule.csl @@ -5,7 +5,7 @@ Joule http://www.zotero.org/styles/joule - + diff --git a/dependent/journal-of-the-american-society-for-mass-spectrometry.csl b/dependent/journal-of-the-american-society-for-mass-spectrometry.csl index 2c8b0e267ba..2a7d71218f4 100644 --- a/dependent/journal-of-the-american-society-for-mass-spectrometry.csl +++ b/dependent/journal-of-the-american-society-for-mass-spectrometry.csl @@ -1,17 +1,17 @@ diff --git a/dependent/matter.csl b/dependent/matter.csl new file mode 100644 index 00000000000..d141af2d9b1 --- /dev/null +++ b/dependent/matter.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/med.csl b/dependent/med.csl new file mode 100644 index 00000000000..376b85fec6a --- /dev/null +++ b/dependent/med.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/molecular-cell.csl b/dependent/molecular-cell.csl index 4a91ebadaf2..9bb53473150 100644 --- a/dependent/molecular-cell.csl +++ b/dependent/molecular-cell.csl @@ -7,12 +7,12 @@ - + 1097-2765 1097-4164 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/molecular-therapy-methods-and-clinical-development.csl b/dependent/molecular-therapy-methods-and-clinical-development.csl index 41348ff90ee..ed592926ac8 100644 --- a/dependent/molecular-therapy-methods-and-clinical-development.csl +++ b/dependent/molecular-therapy-methods-and-clinical-development.csl @@ -1,14 +1,17 @@ diff --git a/dependent/molecular-therapy-nucleic-acids.csl b/dependent/molecular-therapy-nucleic-acids.csl index f4dbbb2dc0f..2f13af4d37b 100644 --- a/dependent/molecular-therapy-nucleic-acids.csl +++ b/dependent/molecular-therapy-nucleic-acids.csl @@ -1,14 +1,17 @@ diff --git a/dependent/molecular-therapy-oncolytics.csl b/dependent/molecular-therapy-oncolytics.csl index 0d305e55f50..de56f89beab 100644 --- a/dependent/molecular-therapy-oncolytics.csl +++ b/dependent/molecular-therapy-oncolytics.csl @@ -1,14 +1,17 @@ diff --git a/dependent/molecular-therapy.csl b/dependent/molecular-therapy.csl index c8776b07346..ed4b1020f3f 100644 --- a/dependent/molecular-therapy.csl +++ b/dependent/molecular-therapy.csl @@ -1,17 +1,18 @@ diff --git a/dependent/negative-results.csl b/dependent/negative-results.csl index ff91c5f8236..5a47f970f73 100644 --- a/dependent/negative-results.csl +++ b/dependent/negative-results.csl @@ -5,7 +5,7 @@ Neg Res http://www.zotero.org/styles/negative-results - + diff --git a/dependent/neuron.csl b/dependent/neuron.csl index 399d16bfece..d88a2b55a27 100644 --- a/dependent/neuron.csl +++ b/dependent/neuron.csl @@ -7,12 +7,12 @@ - + 0896-6273 1097-4199 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/one-earth.csl b/dependent/one-earth.csl index a2720485a3d..3e6dd4c8b6b 100644 --- a/dependent/one-earth.csl +++ b/dependent/one-earth.csl @@ -5,11 +5,11 @@ One Earth http://www.zotero.org/styles/one-earth - + - 2590-3322 + 2590-3322 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/patterns.csl b/dependent/patterns.csl new file mode 100644 index 00000000000..2945c17a4b6 --- /dev/null +++ b/dependent/patterns.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/star-protocols.csl b/dependent/star-protocols.csl new file mode 100644 index 00000000000..fd41c7cd118 --- /dev/null +++ b/dependent/star-protocols.csl @@ -0,0 +1,16 @@ + + diff --git a/dependent/structure.csl b/dependent/structure.csl index 3b68e50023f..44f70c7970f 100644 --- a/dependent/structure.csl +++ b/dependent/structure.csl @@ -7,12 +7,12 @@ - + 0969-2126 1878-4186 - 2016-12-13T12:00:00+00:00 + 2017-10-20T12:00:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License diff --git a/dependent/the-american-journal-of-human-genetics.csl b/dependent/the-american-journal-of-human-genetics.csl new file mode 100644 index 00000000000..f0570c90b1c --- /dev/null +++ b/dependent/the-american-journal-of-human-genetics.csl @@ -0,0 +1,17 @@ + + diff --git a/geographical-analysis.csl b/geographical-analysis.csl new file mode 100644 index 00000000000..7c8e38b8c13 --- /dev/null +++ b/geographical-analysis.csl @@ -0,0 +1,180 @@ + + diff --git a/isara-iso-690.csl b/isara-iso-690.csl new file mode 100644 index 00000000000..115558fcbad --- /dev/null +++ b/isara-iso-690.csl @@ -0,0 +1,570 @@ + + diff --git a/law-citation-manual.csl b/law-citation-manual.csl index b8512c5c40f..0fcc613cfc7 100644 --- a/law-citation-manual.csl +++ b/law-citation-manual.csl @@ -1,250 +1,494 @@ - diff --git a/norsk-henvisningsstandard-for-rettsvitenskapelige-tekster.csl b/norsk-henvisningsstandard-for-rettsvitenskapelige-tekster.csl index 335fa944a16..1a9517a9f90 100644 --- a/norsk-henvisningsstandard-for-rettsvitenskapelige-tekster.csl +++ b/norsk-henvisningsstandard-for-rettsvitenskapelige-tekster.csl @@ -95,7 +95,7 @@ - + diff --git a/proceedings-of-the-estonian-academy-of-sciences-author-date.csl b/proceedings-of-the-estonian-academy-of-sciences-author-date.csl new file mode 100644 index 00000000000..2610b385cae --- /dev/null +++ b/proceedings-of-the-estonian-academy-of-sciences-author-date.csl @@ -0,0 +1,222 @@ + + diff --git a/proceedings-of-the-estonian-academy-of-sciences-numeric.csl b/proceedings-of-the-estonian-academy-of-sciences-numeric.csl new file mode 100644 index 00000000000..6ffc0cdcc70 --- /dev/null +++ b/proceedings-of-the-estonian-academy-of-sciences-numeric.csl @@ -0,0 +1,278 @@ + + diff --git a/renamed-styles.json b/renamed-styles.json index 562bf51a94f..c191da03ae2 100644 --- a/renamed-styles.json +++ b/renamed-styles.json @@ -535,5 +535,6 @@ "harvard-cardiff-university-old":"cardiff-university-harvard", "harvard-oxford-brookes-university-faculty-of-health-and-life-sciences": "harvard-cite-them-right", "bluebook2": "bluebook-law-review", - "moore-theological-college": "society-of-biblical-literature-fullnote-bibliography" + "moore-theological-college": "society-of-biblical-literature-fullnote-bibliography", + "cell-numeric-superscript": "cell" } diff --git a/society-of-biblical-literature-fullnote-bibliography.csl b/society-of-biblical-literature-fullnote-bibliography.csl index 5198c11eae8..2dd9a3b5d27 100644 --- a/society-of-biblical-literature-fullnote-bibliography.csl +++ b/society-of-biblical-literature-fullnote-bibliography.csl @@ -33,12 +33,21 @@ Society of Biblical Literature format with full notes and bibliography - 2022-06-29T13:58:51+00:00 + 2022-07-02T02:53:27+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License + art. ed. + + p. + pp. + + + + ¶¶ + § §§ @@ -675,12 +684,13 @@ - + + @@ -689,9 +699,23 @@ - + + + + + + + + + + + + @@ -814,6 +838,10 @@ + + @@ -854,7 +882,22 @@ - + + + + + + + + + + + + + + @@ -876,7 +919,37 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -906,7 +979,26 @@ - + + + + + + + + + + + + + + + + + + diff --git a/spec/filters.yaml b/spec/filters.yaml index 1c4ddb7bab4..48cb27087d4 100644 --- a/spec/filters.yaml +++ b/spec/filters.yaml @@ -39,6 +39,8 @@ ISSN: - 1520-8524 - 1161-9473 - 2496-7114 +- 1736-6046 +- 1736-7530 # These titles are ignored when checking for duplicate titles TITLES: [] diff --git a/the-american-journal-of-human-genetics.csl b/stem-cell-reports.csl similarity index 53% rename from the-american-journal-of-human-genetics.csl rename to stem-cell-reports.csl index fbfef29d148..60c605a3e3e 100644 --- a/the-american-journal-of-human-genetics.csl +++ b/stem-cell-reports.csl @@ -1,23 +1,28 @@ - diff --git a/taylor-and-francis-chicago-b-author-date.csl b/taylor-and-francis-chicago-b-author-date.csl new file mode 100644 index 00000000000..68a1acf4cc3 --- /dev/null +++ b/taylor-and-francis-chicago-b-author-date.csl @@ -0,0 +1,526 @@ + + diff --git a/vancouver.csl b/vancouver.csl index 71c92032289..e39efa8d842 100644 --- a/vancouver.csl +++ b/vancouver.csl @@ -323,7 +323,7 @@ - + From 6cc43a12b48eec1de4b8b8ccdda614cb3f544eae Mon Sep 17 00:00:00 2001 From: github actions Date: Sat, 1 Oct 2022 03:04:04 +0000 Subject: [PATCH 22/27] Squashed 'buildres/csl/csl-locales/' changes from b2afeb4d87..cb98d36691 cb98d36691 copied .github/workflows/merge.yaml .github/workflows/sheldon.yaml from styles 62dcca65d7 Update locales-nn-NO.xml (#267) eb8587463f Update locales-nb-NO.xml (#266) bd502ffb0d Update locales-pt-PT.xml (#262) 2dcc82ced1 Update locales-it-IT.xml (#263) git-subtree-dir: buildres/csl/csl-locales git-subtree-split: cb98d366912a0c0be361880e12fbc43cef6d383e --- .github/workflows/label-gun.yml | 5 + .github/workflows/merge.yaml | 5 + .github/workflows/sheldon.yaml | 5 + locales-it-IT.xml | 386 ++++++++++++++++---------------- locales-nb-NO.xml | 8 +- locales-nn-NO.xml | 8 +- locales-pt-PT.xml | 240 ++++++++++---------- 7 files changed, 335 insertions(+), 322 deletions(-) diff --git a/.github/workflows/label-gun.yml b/.github/workflows/label-gun.yml index d4d022673f8..c87c1721b75 100644 --- a/.github/workflows/label-gun.yml +++ b/.github/workflows/label-gun.yml @@ -6,8 +6,13 @@ on: issue_comment: types: [created, edited, closed] +permissions: {} jobs: label: + permissions: + issues: write # to add label to an issues (retorquere/label-gun) + pull-requests: write # to add label, comment on pull request (retorquere/label-gun) + runs-on: ubuntu-latest steps: - uses: retorquere/label-gun@main diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml index f52a6ba4110..c1efb7eab07 100644 --- a/.github/workflows/merge.yaml +++ b/.github/workflows/merge.yaml @@ -12,8 +12,13 @@ on: description: Commit message required: true +permissions: {} jobs: release: + permissions: + contents: write # to create a release + pull-requests: read # to read pull requests (dorny/paths-filter) + runs-on: ubuntu-latest env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/sheldon.yaml b/.github/workflows/sheldon.yaml index 9bf525949f1..42962c95090 100644 --- a/.github/workflows/sheldon.yaml +++ b/.github/workflows/sheldon.yaml @@ -4,8 +4,13 @@ on: pull_request_target: types: [ opened, synchronize, workflow_dispatch] +permissions: {} jobs: test: + permissions: + contents: write # to push code in repo (stefanzweifel/git-auto-commit-action) + pull-requests: write # to comment on pull requests + runs-on: ubuntu-latest env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/locales-it-IT.xml b/locales-it-IT.xml index d01bf61c208..2822e365c30 100644 --- a/locales-it-IT.xml +++ b/locales-it-IT.xml @@ -2,13 +2,11 @@ - FI App Development - - - Monica Thuegaz + Filippo Vomiero + filippo.vomiero@unipd.it This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License - 2012-07-04T23:31:02+00:00 + 2022-07-07T17:56:02+01:00 @@ -24,31 +22,31 @@ advance online publication album - audio recording + registrazione audio film - henceforth + d'ora in poi loc. cit. - no place - n.p. - no publisher - n.p. - on + sine loco + s.l. + sine nomine + s.n. + su op. cit. - original work published + opera originale pubblicata comunicazione personale podcast - podcast episode + episodio di podcast preprint - radio broadcast - radio series - radio series episode - special issue - special section - television broadcast - television series - television series episode + trasmissione radiofonica + serie radiofonica + episodio di serie radiofonica + edizione speciale + sezione speciale + trasmissione televisiva + serie televisiva + episodio di serie televisiva video - working paper + documento di lavoro consultato e e altri @@ -77,17 +75,17 @@ internet intervista lettera - senza data + sine data s.d. online presentato al - reference - references + riferimento + riferimenti - ref. - refs. + rif. + rif. recuperato scala @@ -95,67 +93,67 @@ preprint - journal article - magazine article - newspaper article - bill - book + articolo di rivista + articolo di rivista generalista + articolo di giornale + proposta di legge + libro broadcast - book chapter - classic - collection + capitolo di libro + classico + collezione dataset - document - entry - dictionary entry - encyclopedia entry - event + documento + voce + voce di dizionario + voce di enciclopedia + evento - graphic - hearing - interview - legal case - legislation - manuscript - map - video recording - musical score - pamphlet - conference paper - patent - performance - periodical + opera d'arte + udienza + intervista + causa + legislazione + manoscritto + mappa + film + spartito musicale + opuscolo + atto di convegno + brevetto + esecuzione + periodico comunicazione personale - post - blog post - regulation + messaggio + messaggio di blog + decreto report review - book review + recensione di libro software - audio recording - presentation - standard - thesis - treaty - webpage + registrazione audio + presentazione + norma + tesi + trattato + pagina web - journal art. - mag. art. - newspaper art. - bk. - bk. chap. + art. di riv. + art. di riv + art. di g. + l. + c. di l. doc. - graph. + op. d'arte interv. - MS - video rec. + ms. + film rep. rev. - bk. rev. - audio rec. + rec. di l. + reg. audio d.C. @@ -212,48 +210,48 @@ - act - acts + atto + atto - appendix - appendices + appendice + appendici - article - articles + articolo + articoli - canon - canons + canone + canoni - location - locations + indirizzo + indirizzi - equation - equations + equazione + equazioni - rule - rules + regola + regole - scene - scenes + scena + scene - table - tables + tavola + tavole - title - titles + titolo + titoli libro @@ -276,8 +274,8 @@ fogli - numero - numeri + fascicolo + fascicoli riga @@ -300,16 +298,16 @@ pagine - capoverso - capoversi + paragrafo + paragrafi parte parti - paragrafo - paragrafi + sezione + sezioni sub verbo @@ -327,11 +325,11 @@ app. - apps. + app. art. - arts. + art. loc. @@ -339,19 +337,19 @@ eq. - eqs. + eq. r. - rr. + r. sc. - scs. + sc. - tbl. - tbls. + tab. + tab. @@ -369,21 +367,21 @@ col. fig. fgl. - n. - l. + fasc. + r. n. op. - pag. - pagg. + p. + pp. - pag. - pagg. + p. + pp. - cpv. + par. pt. - par. + sez. s.v. s.vv. @@ -409,68 +407,68 @@ - chair - chairs + presidente + presidenti - compiler - compilers + compilatore + compilatori - contributor - contributors + collaboratore + collaboratori - curator - curators + curatore + curatori - executive producer - executive producers + produttore esecutivo + produttori esecutivi - guest - guests + ospite + ospiti - host - hosts + conduttore + conduttori - narrator - narrators + narratore + narratori - organizer - organizers + organizzatore + organizzatori - performer - performers + esecutore + esecutori - producer - producers + produttore + produttori - writer - writers + sceneggiatore + sceneggiatori - series creator - series creators + autore della serie + autori della serie - director - directors + regista + registi curatore curatori - editor - editors + direttore editoriale + direttori editoriali illustratore @@ -488,55 +486,55 @@ comp. - comps. + comp. - contrib. - contribs. + collab. + collab. cur. - curs. + cur. - exec. prod. - exec. prods. + prod.es. + prod. es. narr. - narrs. + narr. org. - orgs. + org. - perf. - perfs. + esec. + esec. prod. - prods. + prod. - writ. - writs. + scen. + scen. - cre. - cres. + aut. d. serie + aut. d. serie - dir. - dir. + reg. + reg. a c. di a c. di - ed. - ed. + dir. ed. + dir. ed. ill. @@ -547,28 +545,28 @@ trad. - a c. di e trad. da - a c. di e trad. da + cur. e trad. + cur. e trad. - chaired by - compiled by - with - curated by - executive produced by - with guest - hosted by - narrated by - organized by - performed by - produced by - written by - created by + presieduto da + compilato da + con un contributo di + a cura di + produzione esecutiva di + con ospite + condotto da + narrato da + organizzato da + esecuzione di + prodotto da + scritto da + creato da di diretto da a cura di - edited by + direzione editoriale di illustrato da intervista di a @@ -577,21 +575,21 @@ a cura di e tradotto da - comp. by - w. - cur. by - exec. prod. by - w. guest - hosted by - narr. by - org. by - perf. by - prod. by - writ. by - cre. by + comp. da + con un contrib. di + a c. di + prod. esec. di + con osp. + cond. da + narr. da + org. da + esec. di + prod. da + scr. da + cre. da dir. da a c. di - ed. + dir. ed. di ill. da trad. da a c. di e trad. da diff --git a/locales-nb-NO.xml b/locales-nb-NO.xml index 19cb91d410a..f83cfb581e0 100644 --- a/locales-nb-NO.xml +++ b/locales-nb-NO.xml @@ -152,10 +152,10 @@ audio rec. - fvt. - evt. - BCE - CE + e.Kr. + f.Kr. + fvt. + evt. « diff --git a/locales-nn-NO.xml b/locales-nn-NO.xml index f48e7b07d76..a91cb07825e 100644 --- a/locales-nn-NO.xml +++ b/locales-nn-NO.xml @@ -152,10 +152,10 @@ audio rec. - fvt. - evt. - BCE - CE + e.Kr. + f.Kr. + fvt. + evt. « diff --git a/locales-pt-PT.xml b/locales-pt-PT.xml index 48fbb4ee04c..929bd481b7b 100644 --- a/locales-pt-PT.xml +++ b/locales-pt-PT.xml @@ -21,30 +21,30 @@ advance online publication album - audio recording - film + gravação áudio + filme henceforth loc. cit. - no place - n.p. - no publisher - n.p. - on + sem local + s.l. + sem editor + s.e. + em op. cit. - original work published + trabalho original publicado comunicação pessoal podcast - podcast episode - preprint - radio broadcast - radio series + episódio podcast + pré-impressão + transmissão de rádio + série de rádio radio series episode special issue special section - television broadcast + transmissão televisiva television series television series episode - video + vídeo working paper acedido e @@ -84,54 +84,54 @@ refs. obtido - scale + escala versão - preprint - journal article - magazine article - newspaper article + pré-impressão + article journal + artigo de revista + artigo de jornal bill - book - broadcast - book chapter - classic - collection + livro + transmissão + capítulo de livro + clássico + coleção dataset - document + documento entry - dictionary entry - encyclopedia entry - event + entrada de dicionário + entrada de enciclopédia + evento - graphic - hearing - interview + gráfico + audiência + entrevista legal case - legislation - manuscript - map - video recording + legislação + manuscrito + mapa + gravação de vídeo musical score - pamphlet + panfleto conference paper - patent + patente performance - periodical + periódico comunicação pessoal post blog post - regulation - report + regulamento + relatório review book review software - audio recording - presentation - standard - thesis - treaty + gravação áudio + discurso + padrão + tése + tratado webpage @@ -142,20 +142,20 @@ bk. chap. doc. - graph. - interv. + gráf. + entrev. MS - video rec. - rep. + transm. vídeo + rel. rev. bk. rev. - audio rec. + grav. áudio AD - BC - BCE - CE + AC + AEC + EC « @@ -195,48 +195,48 @@ - act - acts + ata + atas - appendix - appendices + apêndice + apêndices - article - articles + artigo + artigos canon canons - location - locations + localização + localizações - equation - equations + equação + equações - rule - rules + regra + regras - scene - scenes + cena + cenas - table - tables + tabela + tabelas - title - titles + título + títulos livro @@ -341,15 +341,15 @@ - tit. - tits. + tít. + títs. liv. cap. col. fig. f. - n. + n.º l. n. op. @@ -389,68 +389,68 @@ - chair - chairs + cadeira + cadeiras - compiler - compilers + compilador + compiladores - contributor - contributors + contribuinte + contribuintes - curator - curators + curador + curadores - executive producer - executive producers + produtor executivo + produtores executivos - guest - guests + convidado + convidados - host - hosts + anfitrião + anfitriões - narrator - narrators + narrador + narradores - organizer - organizers + organizador + organizadores - performer - performers + ator + atores - producer - producers + produtor + produtores - writer - writers + escritor + escritores - series creator - series creators + criador de séries + criadores de séries - director - directores + diretor + diretores editor editores - editor - editores + diretor editorial + diretores editoriais ilustrador @@ -461,8 +461,8 @@ tradutores - editor & tradutor - editores & tradutores + editor e tradutor + editores e tradutores @@ -479,8 +479,8 @@ curs. - exec. prod. - exec. prods. + prod. exec. + prods. exec. narr. @@ -532,19 +532,19 @@ - chaired by - compiled by - with - curated by + presidido por + compilado por + com + curado por executive produced by - with guest + com convidado hosted by - narrated by - organized by - performed by - produced by - written by - created by + narrado por + organizado por + atuado por + produzido por + escrito por + criado por por dirigido por editado por @@ -554,7 +554,7 @@ para revisto por traduzido por - editado & traduzido por + editado e traduzido por comp. by From c21c5b45157a72e9b193393850cc2c62a66c4393 Mon Sep 17 00:00:00 2001 From: Lord Helm <41159382+TheGor1lla@users.noreply.github.com> Date: Sun, 2 Oct 2022 20:14:15 +0200 Subject: [PATCH 23/27] Fix missing title for "customize entry types" (#9198) (#9201) Co-authored-by: Patrick Helm --- CHANGELOG.md | 1 + .../gui/customentrytypes/CustomizeEntryTypeDialogView.java | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c97f005429..d4eff4acd12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Fixed +- We fixed the display of the "Customize Entry Types" dialogue title [#9198](https://github.com/JabRef/jabref/issues/9198) - We fixed an issue where author names with tilde accents (for example ñ) were marked as "Names are not in the standard BibTex format" [#8071](https://github.com/JabRef/jabref/issues/8071) - We fixed an issue where the possibility to generate a subdatabase from an aux file was writing empty files when called from the commandline [#9115](https://github.com/JabRef/jabref/issues/9115), [forum#3516](https://discourse.jabref.org/t/export-subdatabase-from-aux-file-on-macos-command-line/3516) - We fixed the display of issue, number, eid and pages fields in the entry preview. [#8607](https://github.com/JabRef/jabref/pull/8607), [#8372](https://github.com/JabRef/jabref/issues/8372), [Koppor#514](https://github.com/koppor/jabref/issues/514), [forum#2390](https://discourse.jabref.org/t/unable-to-edit-my-bibtex-file-that-i-used-before-vers-5-1/2390), [forum#3462](https://discourse.jabref.org/t/jabref-5-6-need-help-with-export-from-jabref-to-microsoft-word-entry-preview-of-apa-7-not-rendering-correctly/3462) diff --git a/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java b/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java index 56cae78cec8..449bdb7602a 100644 --- a/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java +++ b/src/main/java/org/jabref/gui/customentrytypes/CustomizeEntryTypeDialogView.java @@ -72,6 +72,7 @@ public class CustomizeEntryTypeDialogView extends BaseDialog { private CustomLocalDragboard localDragboard; public CustomizeEntryTypeDialogView(BibDatabaseContext bibDatabaseContext, BibEntryTypesManager entryTypesManager) { + this.setTitle(Localization.lang("Customize entry types")); this.mode = bibDatabaseContext.getMode(); this.entryTypesManager = entryTypesManager; From 2029d922c342c83fc5d3d0e461d3dcd3ecb1583f Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Sun, 2 Oct 2022 20:15:39 +0200 Subject: [PATCH 24/27] Improve installation of java 18 in devcontainer (#9197) --- .devcontainer/devcontainer.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c242a90a152..498a52431af 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -19,7 +19,7 @@ } }, - "onCreateCommand": "yes | sdk install java 18.0.2-tem && gradle assemble", + "onCreateCommand": "gradle assemble", // Need to connect as root otherwise we run into issues with gradle. // default option is "vscode". More info: https://aka.ms/vscode-remote/containers/non-root. @@ -28,10 +28,11 @@ // Adds a lightweight desktop that can be accessed using a VNC viewer or the web "desktop-lite": "latest", - // Install java 17 (java 18 is not yet available from ms) + // Install java "java": { - "version": "17", - "installGradle": true + "version": "18", + "installGradle": true, + "jdkDistro": "sem" } } } From 1797af8e3bcc6105563b337223e5257abc97ca35 Mon Sep 17 00:00:00 2001 From: Michael Berry Date: Sun, 2 Oct 2022 20:11:33 +0100 Subject: [PATCH 25/27] Add mappings on ModsImporter.java (#9193) --- CHANGELOG.md | 1 + .../logic/importer/fileformat/ModsImporter.java | 13 ++++++++++++- .../fileformat/MODSImporterTestGenreMapping.bib | 2 ++ .../fileformat/MODSImporterTestGenreMapping.xml | 8 ++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.bib create mode 100644 src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index d4eff4acd12..09770b0aa12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Changed +- Genres are now mapped correctly to entry types when importing MODS files. [#9185](https://github.com/JabRef/jabref/issues/9185) - We improved the Citavi Importer to also import so called Knowledge-items into the field `comment` of the corresponding entry [#9025](https://github.com/JabRef/jabref/issues/9025) - We removed wrapping of string constants when writing to a `.bib` file. - We call backup files `.bak` and temporary writing files now `.sav`. diff --git a/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java b/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java index 69ebd404f14..052578f7657 100644 --- a/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java +++ b/src/main/java/org/jabref/logic/importer/fileformat/ModsImporter.java @@ -9,6 +9,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -167,7 +168,7 @@ private void parseModsGroup(Map fields, List modsGroup, B abstractDefinition .ifPresent(abstractDef -> putIfValueNotNull(fields, StandardField.ABSTRACT, abstractDef.getValue())); - genreDefinition.ifPresent(genre -> entry.setType(EntryTypeFactory.parse(genre.getValue()))); + genreDefinition.ifPresent(genre -> entry.setType(EntryTypeFactory.parse(mapGenre(genre.getValue())))); languageDefinition.ifPresent( languageDef -> languageDef.getLanguageTerm().stream().map(LanguageTermDefinition::getValue) @@ -203,6 +204,16 @@ private void parseModsGroup(Map fields, List modsGroup, B putIfListIsNotEmpty(fields, notes, StandardField.NOTE, ", "); } + private String mapGenre(String genre) { + return switch (genre.toLowerCase(Locale.ROOT)) { + case "conference publication" -> "proceedings"; + case "database" -> "dataset"; + case "yearbook", "handbook" -> "book"; + case "law report or digest", "technical report", "reporting" -> "report"; + default -> genre; + }; + } + private void parseTitle(Map fields, List titleOrSubTitleOrPartNumber) { for (Object object : titleOrSubTitleOrPartNumber) { if (object instanceof JAXBElement) { diff --git a/src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.bib b/src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.bib new file mode 100644 index 00000000000..907ce08b8da --- /dev/null +++ b/src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.bib @@ -0,0 +1,2 @@ +@proceedings{TestPublication, +} diff --git a/src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.xml b/src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.xml new file mode 100644 index 00000000000..ef8ad54b2a2 --- /dev/null +++ b/src/test/resources/org/jabref/logic/importer/fileformat/MODSImporterTestGenreMapping.xml @@ -0,0 +1,8 @@ + + + +Conference Publication +TestPublication + + From 1e700411d31b60dd6229cc098c047e57e7f0c8aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 17:22:00 +0200 Subject: [PATCH 26/27] Bump slf4j-api from 2.0.2 to 2.0.3 in /buildSrc (#9211) Bumps [slf4j-api](https://github.com/qos-ch/slf4j) from 2.0.2 to 2.0.3. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_2.0.2...v_2.0.3) --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- buildSrc/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 9ca9b37d366..3e9f9aa812c 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -8,7 +8,7 @@ repositories { dependencies { implementation 'com.h2database:h2-mvstore:2.1.214' implementation 'org.apache.commons:commons-csv:1.9.0' - implementation 'org.slf4j:slf4j-api:2.0.2' + implementation 'org.slf4j:slf4j-api:2.0.3' } sourceSets{ From 3d3a0f05776d8b5111af7c36d2880b8d3e0c2955 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 17:22:13 +0200 Subject: [PATCH 27/27] Bump slf4j-api from 2.0.2 to 2.0.3 (#9207) Bumps [slf4j-api](https://github.com/qos-ch/slf4j) from 2.0.2 to 2.0.3. - [Release notes](https://github.com/qos-ch/slf4j/releases) - [Commits](https://github.com/qos-ch/slf4j/compare/v_2.0.2...v_2.0.3) --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index e500f73e6c8..7c4576b1e1b 100644 --- a/build.gradle +++ b/build.gradle @@ -178,7 +178,7 @@ dependencies { implementation 'org.jsoup:jsoup:1.15.3' implementation 'com.konghq:unirest-java:3.13.11' - implementation 'org.slf4j:slf4j-api:2.0.2' + implementation 'org.slf4j:slf4j-api:2.0.3' implementation "org.tinylog:tinylog-api:2.5.0" implementation "org.tinylog:slf4j-tinylog:2.5.0" implementation "org.tinylog:tinylog-impl:2.5.0"