Fix/citation relations doi case insensitive#15341
Conversation
When no library tab is active, the entry editor remained visible. Added close() call in the activeTabProperty listener's else branch to handle the zero-libraries-open case. Fixes JabRef#13125
Review Summary by QodoFix case-insensitive DOI comparison and entry editor closing
WalkthroughsDescription• Made DOI comparison case-insensitive in duplicate detection - Changed equals() to equalsIgnoreCase() for identifier fields - Ensures DOIs differing only in letter casing are recognized as duplicates • Fixed entry editor not closing when last library is closed - Added close() call when activeTabProperty listener detects zero open libraries • Added comprehensive test coverage for case-insensitive DOI matching Diagramflowchart LR
A["Duplicate Detection"] -->|Case-insensitive comparison| B["DOI Matching"]
C["Library Tab Listener"] -->|Close on zero libraries| D["Entry Editor"]
E["Test Cases"] -->|Verify DOI casing| F["Duplicate Detection"]
File Changes1. jablib/src/main/java/org/jabref/logic/database/DuplicateCheck.java
|
Code Review by Qodo
1.
|
JabRef#15328) Bumps [org.gradlex:java-module-dependencies](https://github.com/gradlex-org/java-module-dependencies) from 1.12 to 1.12.1. - [Release notes](https://github.com/gradlex-org/java-module-dependencies/releases) - [Changelog](https://github.com/gradlex-org/java-module-dependencies/blob/main/CHANGELOG.md) - [Commits](gradlex-org/java-module-dependencies@v1.12...v1.12.1) --- updated-dependencies: - dependency-name: org.gradlex:java-module-dependencies dependency-version: 1.12.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ef#15326) Bumps org.openrewrite.rewrite from 7.26.0 to 7.28.1. --- updated-dependencies: - dependency-name: org.openrewrite.rewrite dependency-version: 7.28.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.22.0 to 5.23.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](mockito/mockito@v5.22.0...v5.23.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-version: 5.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps org.cyclonedx.bom from 3.2.0 to 3.2.1. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [com.squareup.okio:okio-jvm](https://github.com/square/okio) from 3.16.4 to 3.17.0. - [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md) - [Commits](square/okio@parent-3.16.4...parent-3.17.0) --- updated-dependencies: - dependency-name: com.squareup.okio:okio-jvm dependency-version: 3.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com>
…JabRef#15315) * Extend the split regex to match en-dash and em-dash * Added tests --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com>
* Remove object redundancy, miscellaneous refactoring Signed-off-by: subhramit <subhramit.bb@live.in> * Use abbreviationRepository parameter Signed-off-by: subhramit <subhramit.bb@live.in> * Use less injections for journal abbreviations repository Signed-off-by: subhramit <subhramit.bb@live.in> * Indent Signed-off-by: subhramit <subhramit.bb@live.in> * Revert to codepoint --------- Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com>
* Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com>
Bumps org.cyclonedx.bom from 3.2.1 to 3.2.2. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…Ref#15338) Bumps [org.eclipse.jgit:org.eclipse.jgit](https://github.com/eclipse-jgit/jgit) from 7.5.0.202512021534-r to 7.6.0.202603022253-r. - [Commits](eclipse-jgit/jgit@v7.5.0.202512021534-r...v7.6.0.202603022253-r) --- updated-dependencies: - dependency-name: org.eclipse.jgit:org.eclipse.jgit dependency-version: 7.6.0.202603022253-r dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…JabRef#15292) * Add 'All' citation fetcher that aggregates and deduplicates results from all providers - Implements CitationFetcher as AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Deduplicates results using DuplicateCheck with BibDatabaseMode.BIBTEX - Returns maximum citation count across all providers - Tolerates individual provider failures gracefully - Adds ALL entry to CitationFetcherType enum and factory method - Covers behaviour with unit tests (failure tolerance, deduplication, max count) Closes JabRef#15029 * Add 'All' citation fetcher that aggregates results from all providers - Add ALL as first entry in CitationFetcherType enum - Implement AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Union results using DatabaseMerger with keyword separator from ImportFormatPreferences, as specified in the task - Return maximum citation count across all providers - Tolerate individual provider failures gracefully - Fix race condition in SearchCitationsRelationsService by marking citationFetcher and citationCountFetcher fields as volatile - Set ALL as the default citation fetcher in preferences - Add unit tests covering failure tolerance, deduplication, and max citation count Closes JabRef#15029 * Update CHANGELOG for issue JabRef#15029 * Address bot review: fix AllCitationFetcher and improve tests - Build provider list from CitationFetcherType enum (excluding ALL) to avoid duplicate list that can drift when new providers are added - Track anySuccess in fetch() and getCitationCount(); throw FetcherException when all providers fail instead of silently returning empty results - Emit WARN log when some providers fail but others succeed - Rename test variables to intent-revealing names - Fix citation count assertion to use assertEquals(Optional.of(20)) - Add tests for all-providers-fail and partial-failure scenarios * Trigger CI * Reformat AllCitationFetcher * Fix checkstyle: remove blank line at start of constructor block * Reverted back to semantic scholar ui preference * Revert default citation fetcher to SEMANTIC_SCHOLAR in EntryEditorPreferences * Re-trigger CI * Adapt tests to use real constructor with mocks, remove test constructor * fix unchecked excpetion --------- Co-authored-by: Siedlerchr <siedlerkiller@gmail.com>
* Avoid error logs when search queries are incomplete Log the parsing error at debug level instead of error level. This prevents having unnecessary output when user is still entering input like "title =". * Update changelog for fixing incomplete search logging issue * Update changelog entry for incomplete search logging issue * Refine changelog entry for incomplete search logging issue
….0 to 3.25.0 (JabRef#15217) * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom Bumps [org.openrewrite.recipe:rewrite-recipe-bom](https://github.com/openrewrite/rewrite-recipe-bom) from 3.24.0 to 3.25.0. - [Release notes](https://github.com/openrewrite/rewrite-recipe-bom/releases) - [Commits](openrewrite/rewrite-recipe-bom@v3.24.0...v3.25.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-recipe-bom dependency-version: 3.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * udpate plugin * update rewrite --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com>
…) (JabRef#15255) * Select better value in MultiMergeEntries dialog component (JabRef#15027) * Use PlausibilityComparatorFactory in MultiMergeEntriesViewModel to select the more plausible value when merging fields from multiple sources, instead of always keeping the first-seen value. * Add DateFieldPlausibilityComparator to prefer more specific dates. * Add unit tests for DateFieldPlausibilityComparator * implement review comments * Fix trailing whitespace in MultiMergeEntriesViewModelTest * Trigger CI * CI: re-trigger * CI: re-trigger --------- Co-authored-by: Christoph <siedlerkiller@gmail.com>
* Cleanups * Refactor PreviewPreferences for resetting and import * Some null checks and migrations * Fix wrong notnull * Fix import * Avoid addAll crash on immutable List * Add forgotten customPreviewLayout * Fix artifact from code iteration * Refactor for consistency * Fix artifact from code iteration * Enhance dummy fallback layout * Try to fix jbang * Apply IDE suggestions * Fix weird checkstyle behaviour * Add default styles * Fix migration tests * Add tests * Small cleanups --------- Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com>
* Closes JabRef#14897 This incorporates all the pending old Javadoc to Markdown changes required after merging JabRef#14891.The following files are changed: 1.AutoCompletionTextInputBinding.java 2.JabRefCliPreferences.java 3.SearchBasedParserFetcher.java 4.StartNewStudyAction.java 1. * 1. * Rsolved mix up of endregion and endRegion.Final one is endregion. 1.File changed-JabRefCliPreferences.java * Rsolved format issue related to line space.Files changed. 1.JabRefCliPreferences.java 2.SearchBasedParserFetcher.java * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Added // endregion to maintain sync with region:AI And // region Push to application preferences and //region to Git 2.Changed region: to region 3.Changed region: Cleanup to previous ToDo: Cleanup 4.changed endRegion to end region 5.Adjusted dangling // endregion by merging Imported Preference tag(new one) with Other Preferences(old one) * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Apply IntelliJ formatting
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
| } | ||
|
|
||
| @Test | ||
| void twoEntriesWithSameDoiButDifferentCasingAreDuplicates() { |
There was a problem hiding this comment.
somehow the formatter complains at this file, please take a look
There was a problem hiding this comment.
Thank you for the review @Siedlerchr! Im working on that.
There was a problem hiding this comment.
The formatting issue is in the test clase! Please read the failing CI output
There was a problem hiding this comment.
Thank you for fixing the formatting and for reviewing my PR.
I tried to follow your instruction, but there was a problem, my intelliJ was in auto-format, then I disabled it. However I still had the same problem.
Do you know what is the problem? What should I do to fix it?
There was a problem hiding this comment.
Just follow the instructions how to setup the formatter https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-13-code-style.html
There was a problem hiding this comment.
Got you, thank you so much!
Head branch was pushed to by a user without write access
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
|
||
| /// This class contains utility method for duplicate checking of entries. | ||
| public class DuplicateCheck { | ||
|
|
There was a problem hiding this comment.
Revert the formatting here! The CI check says that it's the test file!!
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
✅ All tests passed ✅🏷️ Commit: df0c888 Learn more about TestLens at testlens.app. |
* Close entry editor when last library is closed When no library tab is active, the entry editor remained visible. Added close() call in the activeTabProperty listener's else branch to handle the zero-libraries-open case. Fixes JabRef#13125 * Update CHANGELOG for JabRef#13125 * Fix case-insensitive DOI comparison in duplicate detection (JabRef#12967) * Chore(deps): Bump org.gradlex:java-module-dependencies in /build-logic (JabRef#15328) Bumps [org.gradlex:java-module-dependencies](https://github.com/gradlex-org/java-module-dependencies) from 1.12 to 1.12.1. - [Release notes](https://github.com/gradlex-org/java-module-dependencies/releases) - [Changelog](https://github.com/gradlex-org/java-module-dependencies/blob/main/CHANGELOG.md) - [Commits](gradlex-org/java-module-dependencies@v1.12...v1.12.1) --- updated-dependencies: - dependency-name: org.gradlex:java-module-dependencies dependency-version: 1.12.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.openrewrite.rewrite from 7.26.0 to 7.28.1 (JabRef#15326) Bumps org.openrewrite.rewrite from 7.26.0 to 7.28.1. --- updated-dependencies: - dependency-name: org.openrewrite.rewrite dependency-version: 7.28.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.mockito:mockito-core in /versions (JabRef#15330) Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.22.0 to 5.23.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](mockito/mockito@v5.22.0...v5.23.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-version: 5.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.cyclonedx.bom from 3.2.0 to 3.2.1 (JabRef#15327) Bumps org.cyclonedx.bom from 3.2.0 to 3.2.1. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump com.squareup.okio:okio-jvm in /versions (JabRef#15329) Bumps [com.squareup.okio:okio-jvm](https://github.com/square/okio) from 3.16.4 to 3.17.0. - [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md) - [Commits](square/okio@parent-3.16.4...parent-3.17.0) --- updated-dependencies: - dependency-name: com.squareup.okio:okio-jvm dependency-version: 3.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * New translations jabref_en.properties (Italian) (JabRef#15334) * RIS export SP/EP fields when pages contain Unicode en-dash or em-dash (JabRef#15315) * Extend the split regex to match en-dash and em-dash * Added tests --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Remove object redundancy, miscellaneous refactoring (JabRef#15332) * Remove object redundancy, miscellaneous refactoring Signed-off-by: subhramit <subhramit.bb@live.in> * Use abbreviationRepository parameter Signed-off-by: subhramit <subhramit.bb@live.in> * Use less injections for journal abbreviations repository Signed-off-by: subhramit <subhramit.bb@live.in> * Indent Signed-off-by: subhramit <subhramit.bb@live.in> * Revert to codepoint --------- Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Add drag-and-drop support for Citation Relations tab (JabRef#15181) * Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Update dependency org.eclipse.jgit:org.eclipse.jgit.pgm to v7.6.0.202603022253-r (JabRef#15335) * Chore(deps): Bump org.cyclonedx.bom from 3.2.1 to 3.2.2 (JabRef#15337) Bumps org.cyclonedx.bom from 3.2.1 to 3.2.2. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.eclipse.jgit:org.eclipse.jgit in /versions (JabRef#15338) Bumps [org.eclipse.jgit:org.eclipse.jgit](https://github.com/eclipse-jgit/jgit) from 7.5.0.202512021534-r to 7.6.0.202603022253-r. - [Commits](eclipse-jgit/jgit@v7.5.0.202512021534-r...v7.6.0.202603022253-r) --- updated-dependencies: - dependency-name: org.eclipse.jgit:org.eclipse.jgit dependency-version: 7.6.0.202603022253-r dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add 'All' citation fetcher that aggregates results from all providers (JabRef#15292) * Add 'All' citation fetcher that aggregates and deduplicates results from all providers - Implements CitationFetcher as AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Deduplicates results using DuplicateCheck with BibDatabaseMode.BIBTEX - Returns maximum citation count across all providers - Tolerates individual provider failures gracefully - Adds ALL entry to CitationFetcherType enum and factory method - Covers behaviour with unit tests (failure tolerance, deduplication, max count) Closes JabRef#15029 * Add 'All' citation fetcher that aggregates results from all providers - Add ALL as first entry in CitationFetcherType enum - Implement AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Union results using DatabaseMerger with keyword separator from ImportFormatPreferences, as specified in the task - Return maximum citation count across all providers - Tolerate individual provider failures gracefully - Fix race condition in SearchCitationsRelationsService by marking citationFetcher and citationCountFetcher fields as volatile - Set ALL as the default citation fetcher in preferences - Add unit tests covering failure tolerance, deduplication, and max citation count Closes JabRef#15029 * Update CHANGELOG for issue JabRef#15029 * Address bot review: fix AllCitationFetcher and improve tests - Build provider list from CitationFetcherType enum (excluding ALL) to avoid duplicate list that can drift when new providers are added - Track anySuccess in fetch() and getCitationCount(); throw FetcherException when all providers fail instead of silently returning empty results - Emit WARN log when some providers fail but others succeed - Rename test variables to intent-revealing names - Fix citation count assertion to use assertEquals(Optional.of(20)) - Add tests for all-providers-fail and partial-failure scenarios * Trigger CI * Reformat AllCitationFetcher * Fix checkstyle: remove blank line at start of constructor block * Reverted back to semantic scholar ui preference * Revert default citation fetcher to SEMANTIC_SCHOLAR in EntryEditorPreferences * Re-trigger CI * Adapt tests to use real constructor with mocks, remove test constructor * fix unchecked excpetion --------- Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Avoid error logs when search queries are incomplete (JabRef#15333) * Avoid error logs when search queries are incomplete Log the parsing error at debug level instead of error level. This prevents having unnecessary output when user is still entering input like "title =". * Update changelog for fixing incomplete search logging issue * Update changelog entry for incomplete search logging issue * Refine changelog entry for incomplete search logging issue * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom from 3.24.0 to 3.25.0 (JabRef#15217) * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom Bumps [org.openrewrite.recipe:rewrite-recipe-bom](https://github.com/openrewrite/rewrite-recipe-bom) from 3.24.0 to 3.25.0. - [Release notes](https://github.com/openrewrite/rewrite-recipe-bom/releases) - [Commits](openrewrite/rewrite-recipe-bom@v3.24.0...v3.25.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-recipe-bom dependency-version: 3.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * udpate plugin * update rewrite --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Select better value in MultiMergeEntries dialog component (JabRef#15027) (JabRef#15255) * Select better value in MultiMergeEntries dialog component (JabRef#15027) * Use PlausibilityComparatorFactory in MultiMergeEntriesViewModel to select the more plausible value when merging fields from multiple sources, instead of always keeping the first-seen value. * Add DateFieldPlausibilityComparator to prefer more specific dates. * Add unit tests for DateFieldPlausibilityComparator * implement review comments * Fix trailing whitespace in MultiMergeEntriesViewModelTest * Trigger CI * CI: re-trigger * CI: re-trigger --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> * Fix reset and import for PreviewPreferences (JabRef#15306) * Cleanups * Refactor PreviewPreferences for resetting and import * Some null checks and migrations * Fix wrong notnull * Fix import * Avoid addAll crash on immutable List * Add forgotten customPreviewLayout * Fix artifact from code iteration * Refactor for consistency * Fix artifact from code iteration * Enhance dummy fallback layout * Try to fix jbang * Apply IDE suggestions * Fix weird checkstyle behaviour * Add default styles * Fix migration tests * Add tests * Small cleanups --------- Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Fix javadoc markdown artifacts (JabRef#15309) * Closes JabRef#14897 This incorporates all the pending old Javadoc to Markdown changes required after merging JabRef#14891.The following files are changed: 1.AutoCompletionTextInputBinding.java 2.JabRefCliPreferences.java 3.SearchBasedParserFetcher.java 4.StartNewStudyAction.java 1. * 1. * Rsolved mix up of endregion and endRegion.Final one is endregion. 1.File changed-JabRefCliPreferences.java * Rsolved format issue related to line space.Files changed. 1.JabRefCliPreferences.java 2.SearchBasedParserFetcher.java * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Added // endregion to maintain sync with region:AI And // region Push to application preferences and //region to Git 2.Changed region: to region 3.Changed region: Cleanup to previous ToDo: Cleanup 4.changed endRegion to end region 5.Adjusted dangling // endregion by merging Imported Preference tag(new one) with Other Preferences(old one) * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Apply IntelliJ formatting * Update CHANGELOG for JabRef#12967 * Apply case-insensitive comparison only to DOI identifiers * Apply IntelliJ code formatting to DuplicateCheck and DuplicateCheckTest * Add tests for case-insensitive DOI duplicate detection * Fix case-insensitive DOI comparison in duplicate detection * fix formatting --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Faneesh Juneja <willowstration@gmail.com> Co-authored-by: Subhramit Basu <subhramit.bb@live.in> Co-authored-by: Paul <thecoder777.github@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: Nishant Dasgupta <nishant.24bcs10451@sst.scaler.com> Co-authored-by: Mike Zhang <97817030+mikezhanghaozhe@users.noreply.github.com> Co-authored-by: JunWang222 <70090336+JunWang222@users.noreply.github.com> Co-authored-by: AbhijitBhowmick <94289124+AbhijitBhowmick@users.noreply.github.com>
* Close entry editor when last library is closed When no library tab is active, the entry editor remained visible. Added close() call in the activeTabProperty listener's else branch to handle the zero-libraries-open case. Fixes JabRef#13125 * Update CHANGELOG for JabRef#13125 * Fix case-insensitive DOI comparison in duplicate detection (JabRef#12967) * Chore(deps): Bump org.gradlex:java-module-dependencies in /build-logic (JabRef#15328) Bumps [org.gradlex:java-module-dependencies](https://github.com/gradlex-org/java-module-dependencies) from 1.12 to 1.12.1. - [Release notes](https://github.com/gradlex-org/java-module-dependencies/releases) - [Changelog](https://github.com/gradlex-org/java-module-dependencies/blob/main/CHANGELOG.md) - [Commits](gradlex-org/java-module-dependencies@v1.12...v1.12.1) --- updated-dependencies: - dependency-name: org.gradlex:java-module-dependencies dependency-version: 1.12.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.openrewrite.rewrite from 7.26.0 to 7.28.1 (JabRef#15326) Bumps org.openrewrite.rewrite from 7.26.0 to 7.28.1. --- updated-dependencies: - dependency-name: org.openrewrite.rewrite dependency-version: 7.28.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.mockito:mockito-core in /versions (JabRef#15330) Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.22.0 to 5.23.0. - [Release notes](https://github.com/mockito/mockito/releases) - [Commits](mockito/mockito@v5.22.0...v5.23.0) --- updated-dependencies: - dependency-name: org.mockito:mockito-core dependency-version: 5.23.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.cyclonedx.bom from 3.2.0 to 3.2.1 (JabRef#15327) Bumps org.cyclonedx.bom from 3.2.0 to 3.2.1. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump com.squareup.okio:okio-jvm in /versions (JabRef#15329) Bumps [com.squareup.okio:okio-jvm](https://github.com/square/okio) from 3.16.4 to 3.17.0. - [Changelog](https://github.com/square/okio/blob/master/CHANGELOG.md) - [Commits](square/okio@parent-3.16.4...parent-3.17.0) --- updated-dependencies: - dependency-name: com.squareup.okio:okio-jvm dependency-version: 3.17.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * New translations jabref_en.properties (Italian) (JabRef#15334) * RIS export SP/EP fields when pages contain Unicode en-dash or em-dash (JabRef#15315) * Extend the split regex to match en-dash and em-dash * Added tests --------- Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Remove object redundancy, miscellaneous refactoring (JabRef#15332) * Remove object redundancy, miscellaneous refactoring Signed-off-by: subhramit <subhramit.bb@live.in> * Use abbreviationRepository parameter Signed-off-by: subhramit <subhramit.bb@live.in> * Use less injections for journal abbreviations repository Signed-off-by: subhramit <subhramit.bb@live.in> * Indent Signed-off-by: subhramit <subhramit.bb@live.in> * Revert to codepoint --------- Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> * Add drag-and-drop support for Citation Relations tab (JabRef#15181) * Add drag-and-drop support for Citation Relations tab - Implement drag detection in CitationRelationsTab to allow dragging entries - Add drag support to ViewModelListCellFactory - Fix NullPointerException in FrameDndHandler when dropping onto tabs without IDs - Fixes JabRef#15135 * Fix: correctly set drop completion status for entries * Fix: Add Unreleased section and moved changelog entries * Fix CHANGELOG formatting and upstream linter errors; removed empty groups * Fix code consistency for cr * Add explicit type * Consistency in CHANGELOG.md --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Update dependency org.eclipse.jgit:org.eclipse.jgit.pgm to v7.6.0.202603022253-r (JabRef#15335) * Chore(deps): Bump org.cyclonedx.bom from 3.2.1 to 3.2.2 (JabRef#15337) Bumps org.cyclonedx.bom from 3.2.1 to 3.2.2. --- updated-dependencies: - dependency-name: org.cyclonedx.bom dependency-version: 3.2.2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Chore(deps): Bump org.eclipse.jgit:org.eclipse.jgit in /versions (JabRef#15338) Bumps [org.eclipse.jgit:org.eclipse.jgit](https://github.com/eclipse-jgit/jgit) from 7.5.0.202512021534-r to 7.6.0.202603022253-r. - [Commits](eclipse-jgit/jgit@v7.5.0.202512021534-r...v7.6.0.202603022253-r) --- updated-dependencies: - dependency-name: org.eclipse.jgit:org.eclipse.jgit dependency-version: 7.6.0.202603022253-r dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add 'All' citation fetcher that aggregates results from all providers (JabRef#15292) * Add 'All' citation fetcher that aggregates and deduplicates results from all providers - Implements CitationFetcher as AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Deduplicates results using DuplicateCheck with BibDatabaseMode.BIBTEX - Returns maximum citation count across all providers - Tolerates individual provider failures gracefully - Adds ALL entry to CitationFetcherType enum and factory method - Covers behaviour with unit tests (failure tolerance, deduplication, max count) Closes JabRef#15029 * Add 'All' citation fetcher that aggregates results from all providers - Add ALL as first entry in CitationFetcherType enum - Implement AllCitationFetcher aggregating CrossRef, OpenAlex, OpenCitations, and SemanticScholar - Union results using DatabaseMerger with keyword separator from ImportFormatPreferences, as specified in the task - Return maximum citation count across all providers - Tolerate individual provider failures gracefully - Fix race condition in SearchCitationsRelationsService by marking citationFetcher and citationCountFetcher fields as volatile - Set ALL as the default citation fetcher in preferences - Add unit tests covering failure tolerance, deduplication, and max citation count Closes JabRef#15029 * Update CHANGELOG for issue JabRef#15029 * Address bot review: fix AllCitationFetcher and improve tests - Build provider list from CitationFetcherType enum (excluding ALL) to avoid duplicate list that can drift when new providers are added - Track anySuccess in fetch() and getCitationCount(); throw FetcherException when all providers fail instead of silently returning empty results - Emit WARN log when some providers fail but others succeed - Rename test variables to intent-revealing names - Fix citation count assertion to use assertEquals(Optional.of(20)) - Add tests for all-providers-fail and partial-failure scenarios * Trigger CI * Reformat AllCitationFetcher * Fix checkstyle: remove blank line at start of constructor block * Reverted back to semantic scholar ui preference * Revert default citation fetcher to SEMANTIC_SCHOLAR in EntryEditorPreferences * Re-trigger CI * Adapt tests to use real constructor with mocks, remove test constructor * fix unchecked excpetion --------- Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Avoid error logs when search queries are incomplete (JabRef#15333) * Avoid error logs when search queries are incomplete Log the parsing error at debug level instead of error level. This prevents having unnecessary output when user is still entering input like "title =". * Update changelog for fixing incomplete search logging issue * Update changelog entry for incomplete search logging issue * Refine changelog entry for incomplete search logging issue * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom from 3.24.0 to 3.25.0 (JabRef#15217) * Chore(deps): Bump org.openrewrite.recipe:rewrite-recipe-bom Bumps [org.openrewrite.recipe:rewrite-recipe-bom](https://github.com/openrewrite/rewrite-recipe-bom) from 3.24.0 to 3.25.0. - [Release notes](https://github.com/openrewrite/rewrite-recipe-bom/releases) - [Commits](openrewrite/rewrite-recipe-bom@v3.24.0...v3.25.0) --- updated-dependencies: - dependency-name: org.openrewrite.recipe:rewrite-recipe-bom dependency-version: 3.25.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * udpate plugin * update rewrite --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Siedlerchr <siedlerkiller@gmail.com> * Select better value in MultiMergeEntries dialog component (JabRef#15027) (JabRef#15255) * Select better value in MultiMergeEntries dialog component (JabRef#15027) * Use PlausibilityComparatorFactory in MultiMergeEntriesViewModel to select the more plausible value when merging fields from multiple sources, instead of always keeping the first-seen value. * Add DateFieldPlausibilityComparator to prefer more specific dates. * Add unit tests for DateFieldPlausibilityComparator * implement review comments * Fix trailing whitespace in MultiMergeEntriesViewModelTest * Trigger CI * CI: re-trigger * CI: re-trigger --------- Co-authored-by: Christoph <siedlerkiller@gmail.com> * Fix reset and import for PreviewPreferences (JabRef#15306) * Cleanups * Refactor PreviewPreferences for resetting and import * Some null checks and migrations * Fix wrong notnull * Fix import * Avoid addAll crash on immutable List * Add forgotten customPreviewLayout * Fix artifact from code iteration * Refactor for consistency * Fix artifact from code iteration * Enhance dummy fallback layout * Try to fix jbang * Apply IDE suggestions * Fix weird checkstyle behaviour * Add default styles * Fix migration tests * Add tests * Small cleanups --------- Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> * Fix javadoc markdown artifacts (JabRef#15309) * Closes JabRef#14897 This incorporates all the pending old Javadoc to Markdown changes required after merging JabRef#14891.The following files are changed: 1.AutoCompletionTextInputBinding.java 2.JabRefCliPreferences.java 3.SearchBasedParserFetcher.java 4.StartNewStudyAction.java 1. * 1. * Rsolved mix up of endregion and endRegion.Final one is endregion. 1.File changed-JabRefCliPreferences.java * Rsolved format issue related to line space.Files changed. 1.JabRefCliPreferences.java 2.SearchBasedParserFetcher.java * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Added // endregion to maintain sync with region:AI And // region Push to application preferences and //region to Git 2.Changed region: to region 3.Changed region: Cleanup to previous ToDo: Cleanup 4.changed endRegion to end region 5.Adjusted dangling // endregion by merging Imported Preference tag(new one) with Other Preferences(old one) * Files changed. 1.JabRefCliPreferences.java. The following changes are done:- 1.Apply IntelliJ formatting * Update CHANGELOG for JabRef#12967 * Apply case-insensitive comparison only to DOI identifiers * Apply IntelliJ code formatting to DuplicateCheck and DuplicateCheckTest * Add tests for case-insensitive DOI duplicate detection * Fix case-insensitive DOI comparison in duplicate detection * fix formatting --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: subhramit <subhramit.bb@live.in> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Carl Christian Snethlage <50491877+calixtus@users.noreply.github.com> Co-authored-by: Christoph <siedlerkiller@gmail.com> Co-authored-by: Faneesh Juneja <willowstration@gmail.com> Co-authored-by: Subhramit Basu <subhramit.bb@live.in> Co-authored-by: Paul <thecoder777.github@gmail.com> Co-authored-by: Carl Christian Snethlage <calixtus@users.noreply.github.com> Co-authored-by: Mend Renovate <bot@renovateapp.com> Co-authored-by: Nishant Dasgupta <nishant.24bcs10451@sst.scaler.com> Co-authored-by: Mike Zhang <97817030+mikezhanghaozhe@users.noreply.github.com> Co-authored-by: JunWang222 <70090336+JunWang222@users.noreply.github.com> Co-authored-by: AbhijitBhowmick <94289124+AbhijitBhowmick@users.noreply.github.com>
Related issues and pull requests
Closes #12967
PR Description
The haveSameIdentifier method in DuplicateCheck.java compared identifier fields like DOI using case-sensitive equality. DOIs are case insensitive identifiers, these caused the Citation Relations tab to miss papers that are in the library when their stored DOI differed in letter casing from the fetched result. I changed the way how it checks for equality, equals() with .equalsIgnoreCase() so that DOI comparisons correctly treat two DOIs that differ only in letter casing as the same identifier, as required by the official DOI specification.
Steps to test
Checklist
CHANGELOG.mdin a way that can be understood by the average user (if change is visible to the user)