Conversation
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
|||||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||||||||||||
| | [Elsevier (ScienceDirect / Scopus)](https://dev.elsevier.com/) | [Elsevier Dev Portal](https://dev.elsevier.com/) | `ScopusApiKey` | [20.000 calls/week](https://dev.elsevier.com/api_key_settings.html) | | ||
| | [IEEEXplore](https://docs.jabref.org/collect/import-using-online-bibliographic-database#ieeexplore) | [IEEE Xplore API portal](https://developer.ieee.org) | `IEEEAPIKey` | 200 calls/day | | ||
| | [Medline/Pubmed](https://pubmed.ncbi.nlm.nih.gov/) | [NCBI User account](https://account.ncbi.nlm.nih.gov/settings/) | `medlineApiKey` | 10 requests/seconds | | ||
| | [MathSciNet](http://www.ams.org/mathscinet) | (none) | (none) | Depending on the current network | |
There was a problem hiding this comment.
🚫 [linkspector] reported by reviewdog 🐶
Cannot reach http://www.ams.org/mathscinet Status: null net::ERR_BLOCKED_BY_CLIENT at http://www.ams.org/mathscinet
| String url = urlOpt.get(); | ||
| String lower = url.toLowerCase(); | ||
| try { | ||
| int idx = lower.indexOf("openalex.org/"); |
There was a problem hiding this comment.
Wrap in an URL Objet and use getHost
There was a problem hiding this comment.
Note: approved in #14020 - I just moved the code.
| entry.setField(StandardField.TITLE, item.optString("title")); | ||
|
|
||
| // Year | ||
| // TODO BibTeX vs. BibLaTeX |
There was a problem hiding this comment.
You can put both in Date. We have a post cleanup for every fetcher that converts based on library mode
| fetcher = new OpenAlex(); | ||
| ImporterPreferences importerPreferences = mock(ImporterPreferences.class); | ||
| when(importerPreferences.getApiKeys()).thenReturn(FXCollections.emptyObservableSet()); | ||
| when(importerPreferences.getApiKey(MedlineFetcher.FETCHER_NAME)).thenReturn(API_KEY); |
There was a problem hiding this comment.
Medline fetcher with open alex key does not make sense
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
|||||||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||||||||
Co-authored-by: qodo-free-for-open-source-projects[bot] <189517486+qodo-free-for-open-source-projects[bot]@users.noreply.github.com>
* upstream/main: New Crowdin updates (#15035) Use patched Gradle version (#15034) Add OpenAlex-based Citation Fetcher (#15023) Update null annotaitons at EntryBasedFetcher (#15024) Fix CHANGELOG.md test Use _ for unused variables (#15028) Use ubuntu-latest for checkstyle and javadoc Update Gradle Wrapper from 9.3.0-jabref-2 to 9.3.1 (#15021) Use "ubuntu-slim" for most workflows (#15019) Refine GroupsTree (#15013)
…4902 * upstream/main: (23 commits) Some more recipes from OpenRewrite (JabRef#15030) feat: Add PDF Upload endpoint to EntryResource (JabRef#14963) Heuristics also used at batch (JabRef#15025) Fix cleanup-pr.yml New Crowdin updates (JabRef#15035) Use patched Gradle version (JabRef#15034) Add OpenAlex-based Citation Fetcher (JabRef#15023) Update null annotaitons at EntryBasedFetcher (JabRef#15024) Fix CHANGELOG.md test Use _ for unused variables (JabRef#15028) Use ubuntu-latest for checkstyle and javadoc Update Gradle Wrapper from 9.3.0-jabref-2 to 9.3.1 (JabRef#15021) Use "ubuntu-slim" for most workflows (JabRef#15019) Refine GroupsTree (JabRef#15013) New Crowdin updates (JabRef#15018) Added Clear group option (JabRef#15017) Chore(deps): Bump com.uber.nullaway:nullaway from 0.12.15 to 0.13.1 in /versions (JabRef#15006) Chore(deps): Bump tools.jackson:jackson-bom in /versions (JabRef#15007) No rush in Docker building Yaml issue workaround ...
…es/jablib/src/main/resources/csl-styles-6c79ffe * upstream/main: (68 commits) Chore(deps): Bump org.apache.httpcomponents.client5:httpclient5 (#15060) Chore(deps): Bump com.google.errorprone:error_prone_core in /versions (#15059) Chore(deps): Bump de.undercouch.download:de.undercouch.download.gradle.plugin (#15057) Chore(deps): Bump org.postgresql:postgresql in /versions (#15058) Chore(deps): Bump de.undercouch.download:de.undercouch.download.gradle.plugin (#15056) Updates on Wednesday, not on Sunday Add screenshot requirement (#15050) Switch image for javadoc Better docker layer caching during build (#15042) New Crowdin updates (#15045) Chore: reuse shared 'setup-gradle' in all places in test-code.yml (#15043) Chore: add 'testlens-app/setup-testlens' GH action (#15044) Add: HTTP Server and LSP server toggles to quick settings (#14972) Some more recipes from OpenRewrite (#15030) feat: Add PDF Upload endpoint to EntryResource (#14963) Heuristics also used at batch (#15025) Fix cleanup-pr.yml New Crowdin updates (#15035) Use patched Gradle version (#15034) Add OpenAlex-based Citation Fetcher (#15023) ...
User description
Adds https://docs.openalex.org/ to Citations Tab.
Small refactorings, too.
Steps to test
Even better: Get free API key at https://openalex.org/settings/api - and configure JabRef to use it.
Mandatory checks
CHANGELOG.mdin a way that is understandable for the average user (if change is visible to the user)PR Type
Enhancement
Description
Add OpenAlex as citation fetcher with API key support
Refactor repository architecture to use single MVStore file
Rename repository methods for consistency (insert→add, read→get)
Improve error handling and null safety in fetchers
Add SemanticScholar to customizable key fetchers list
Diagram Walkthrough
File Walkthrough
10 files
Implement CitationFetcher with API key supportConsolidate to single MVStore file architectureRename methods for API consistencyRefactor to accept MVStore instanceRemove close method from interfaceUpdate to use refactored repository methodsAdd OpenAlex and SemanticScholar to customizable fetchersAdd OpenAlex citation fetcher type enumImprove variable naming and initializationAllow null values in setField for cleaner code4 files
Add documentation about registration requirementAdd documentation comments and clarificationsDocument OpenAlex and SemanticScholar additionsAdd OpenAlex to fetcher documentation table5 files
Add OpenAlex API key configurationAdd OpenAlex API key environment variableAdd OpenAlex API key environment variableConfigure OpenAlex API key build propertyAdd OpenAlex API key property and reorder1 files
Use getLocalizedMessage for better error display7 files
Update tests for refactored repository methodsAdapt tests to MVStore instance injectionUpdate test helpers for renamed methodsAdd ImporterPreferences mock to testsAdd new citation fetcher testsRemove null handling testRemove null citation key test2 files
Minor formatting adjustmentMinor whitespace formatting2 files