From 36a2e4251e1bffb6e5778ee3a10e3b801fe53d9a Mon Sep 17 00:00:00 2001 From: epalter Date: Mon, 24 Mar 2025 12:58:29 -0700 Subject: [PATCH 01/23] ella's fix - see end of change implementation doc --- .../gui/mergeentries/FetchAndMergeEntry.java | 4 +++ .../gui/mergeentries/MergeEntriesDialog.java | 4 +++ .../newmergedialog/FieldRowView.java | 34 +++++++++++++++++++ .../newmergedialog/ThreeWayMergeView.java | 8 +++++ 4 files changed, 50 insertions(+) diff --git a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java index c14e0770c15..b48c24a0ac6 100644 --- a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java +++ b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java @@ -110,6 +110,10 @@ private void showMergeDialog(BibEntry originalEntry, BibEntry fetchedEntry, WebF dialog.setTitle(Localization.lang("Merge entry with %0 information", fetcher.getName())); dialog.setLeftHeaderText(Localization.lang("Original entry")); dialog.setRightHeaderText(Localization.lang("Entry from %0", fetcher.getName())); + if ("DOI".equalsIgnoreCase(fetcher.getName())) { + // This call will do your “better autoselection” for year/type + dialog.autoSelectBetterFields(); + } Optional mergedEntry = dialogService.showCustomDialogAndWait(dialog).map(EntriesMergeResult::mergedEntry); if (mergedEntry.isPresent()) { diff --git a/src/main/java/org/jabref/gui/mergeentries/MergeEntriesDialog.java b/src/main/java/org/jabref/gui/mergeentries/MergeEntriesDialog.java index dc485757be0..8cc8fab556d 100644 --- a/src/main/java/org/jabref/gui/mergeentries/MergeEntriesDialog.java +++ b/src/main/java/org/jabref/gui/mergeentries/MergeEntriesDialog.java @@ -64,4 +64,8 @@ public void setRightHeaderText(String rightHeaderText) { public void configureDiff(ShowDiffConfig diffConfig) { threeWayMergeView.showDiff(diffConfig); } + + public void autoSelectBetterFields() { + threeWayMergeView.autoSelectBetterFields(); + } } diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index e74420f9fa4..c1702e119bc 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -212,4 +212,38 @@ public boolean hasEqualLeftAndRightValues() { public String toString() { return "FieldRowView [shouldShowDiffs=" + shouldShowDiffs.get() + ", fieldNameCell=" + fieldNameCell + ", leftValueCell=" + leftValueCell + ", rightValueCell=" + rightValueCell + ", mergedValueCell=" + mergedValueCell + "]"; } + + public void autoSelectBetterValue() { + String fieldName = fieldNameCell.getText(); + if (fieldName == null) { + return; + } + fieldName = fieldName.toLowerCase().trim(); + + String leftVal = leftValueCell.textProperty().getValue(); + if (leftVal == null) { + return; + } + leftVal = leftVal.trim(); + + // 1) If it's a "year" field and out of valid range + if (fieldName.contains("year")) { + try { + int year = Integer.parseInt(leftVal); + if (year < 1800 || year > 2100) { + selectRightValue(); + } + } catch (NumberFormatException e) { + selectRightValue(); + } + } + + // 2) If it's a "type" field and the left is "misc" + else if (fieldName.contains("type")) { + if ("misc".equalsIgnoreCase(leftVal)) { + selectRightValue(); + } + } + } + } diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java index e70d8ff8807..e538853882f 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java @@ -155,6 +155,7 @@ private void addRow(int fieldIndex) { fieldRow = new FieldRowView(field, getLeftEntry(), getRightEntry(), getMergedEntry(), fieldMergerFactory, preferences, fieldIndex); } + fieldRows.add(fieldIndex, fieldRow); mergeGridPane.add(fieldRow.getFieldNameCell(), 0, fieldIndex); @@ -200,4 +201,11 @@ public BibEntry getRightEntry() { public void saveConfiguration() { toolbar.saveToolbarConfiguration(); } + + public void autoSelectBetterFields() { + for (FieldRowView row : fieldRows) { + row.autoSelectBetterValue(); + } + } + } From b2018c564701483b23da831df6d6e4655c2c7719 Mon Sep 17 00:00:00 2001 From: epalter Date: Tue, 25 Mar 2025 13:49:25 -0700 Subject: [PATCH 02/23] added logic for if years differ by more than 10 --- .../mergeentries/newmergedialog/FieldRowView.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index c1702e119bc..a54940a59d3 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -221,18 +221,28 @@ public void autoSelectBetterValue() { fieldName = fieldName.toLowerCase().trim(); String leftVal = leftValueCell.textProperty().getValue(); + String rightVal = rightValueCell.textProperty().getValue(); if (leftVal == null) { return; } leftVal = leftVal.trim(); + rightVal = rightVal.trim(); // 1) If it's a "year" field and out of valid range if (fieldName.contains("year")) { try { - int year = Integer.parseInt(leftVal); - if (year < 1800 || year > 2100) { + int leftYear = Integer.parseInt(leftVal); + int rightYear = Integer.parseInt(rightVal); + if (leftYear < 1800 || leftYear > 2100) { selectRightValue(); } + else if(leftYear-rightYear >10 ||leftYear-rightYear <-10){ + if(leftYear>rightYear){ + selectLeftValue(); + }else{ + selectRightValue(); + } + } } catch (NumberFormatException e) { selectRightValue(); } From cdb51a827bd475faae228103aa955f55a35dceba Mon Sep 17 00:00:00 2001 From: Menoa Brennan Date: Tue, 25 Mar 2025 14:10:52 -0700 Subject: [PATCH 03/23] Made consistency changes before PR --- .../newmergedialog/FieldRowView.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index a54940a59d3..2d8589176a1 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -216,44 +216,42 @@ public String toString() { public void autoSelectBetterValue() { String fieldName = fieldNameCell.getText(); if (fieldName == null) { - return; + return; // Early return if fieldName is null } - fieldName = fieldName.toLowerCase().trim(); + fieldName = fieldName.trim().toLowerCase(); // Trim and convert to lower case String leftVal = leftValueCell.textProperty().getValue(); String rightVal = rightValueCell.textProperty().getValue(); - if (leftVal == null) { - return; + if (leftVal == null || rightVal == null) { + return; // Early return if leftVal or rightVal is null } leftVal = leftVal.trim(); rightVal = rightVal.trim(); - // 1) If it's a "year" field and out of valid range + // Logic for auto selection based on field name if (fieldName.contains("year")) { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); if (leftYear < 1800 || leftYear > 2100) { - selectRightValue(); - } - else if(leftYear-rightYear >10 ||leftYear-rightYear <-10){ - if(leftYear>rightYear){ + selectRightValue(); // Select right value if left year is out of range + } else if (Math.abs(leftYear - rightYear) > 10) { + // Select value based on a difference condition + if (leftYear > rightYear) { selectLeftValue(); - }else{ + } else { selectRightValue(); } } } catch (NumberFormatException e) { - selectRightValue(); + selectRightValue(); // Handle parsing exceptions } - } - - // 2) If it's a "type" field and the left is "misc" - else if (fieldName.contains("type")) { + } else if (fieldName.contains("type")) { if ("misc".equalsIgnoreCase(leftVal)) { - selectRightValue(); + selectRightValue(); // Select right value if left value is "misc" } } } + } From c37c4f9b7bd767fb860ea4a0894f54d5cbd4297f Mon Sep 17 00:00:00 2001 From: Menoa Brennan Date: Tue, 25 Mar 2025 14:54:41 -0700 Subject: [PATCH 04/23] Added update to the changelog.md file under the fixed category --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e54e07046cb..17a18fe325e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv ### Fixed +- We fixed an issue where when fetching from DOI, dialog selects field data based on validity. [#12549](https://github.com/JabRef/jabref/issues/12549) - We fixed an issue where the F4 shortcut key did not work without opening the right-click context menu. [#6101](https://github.com/JabRef/jabref/pull/6101) - We fixed an issue where the file renaming dialog was not resizable and its size was too small for long file names. [#12518](https://github.com/JabRef/jabref/pull/12518) - We fixed an issue where the name of the untitled database was shown as a blank space in the right-click context menu's "Copy to" option. [#12459](https://github.com/JabRef/jabref/pull/12459) From 9342eb8fd502ff1f3a27953fef7a4df07db90d8d Mon Sep 17 00:00:00 2001 From: Menoa Brennan Date: Tue, 25 Mar 2025 15:26:41 -0700 Subject: [PATCH 05/23] Fixed all the gradle checkstyle problems --- .../jabref/gui/mergeentries/newmergedialog/FieldRowView.java | 2 -- .../gui/mergeentries/newmergedialog/ThreeWayMergeView.java | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index 2d8589176a1..685fd0d78bf 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -252,6 +252,4 @@ public void autoSelectBetterValue() { } } } - - } diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java index e538853882f..a6aef1b954f 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java @@ -155,7 +155,6 @@ private void addRow(int fieldIndex) { fieldRow = new FieldRowView(field, getLeftEntry(), getRightEntry(), getMergedEntry(), fieldMergerFactory, preferences, fieldIndex); } - fieldRows.add(fieldIndex, fieldRow); mergeGridPane.add(fieldRow.getFieldNameCell(), 0, fieldIndex); @@ -207,5 +206,4 @@ public void autoSelectBetterFields() { row.autoSelectBetterValue(); } } - } From 75e28e7fea90a47490bd2e77e4de5f973e860410 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 25 Mar 2025 18:13:01 -0700 Subject: [PATCH 06/23] Changed leftYear comparison from '>2100' to +100 years from current year. Added comment to clarify processing of work from year 1800 or before. --- .../gui/mergeentries/newmergedialog/FieldRowView.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index 685fd0d78bf..d519250abb6 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -25,6 +25,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.time.Year; + /** * A controller class to control left, right and merged field values */ @@ -233,8 +235,8 @@ public void autoSelectBetterValue() { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); - if (leftYear < 1800 || leftYear > 2100) { - selectRightValue(); // Select right value if left year is out of range + if (leftYear < 1800 || leftYear > (Year.now().getValue() + 100) ) { + selectRightValue(); // Select right value if left year is out of range, note that work created before Year 1800 will still be correctly processed } else if (Math.abs(leftYear - rightYear) > 10) { // Select value based on a difference condition if (leftYear > rightYear) { From b22e1f94fe4363721bfbddb24869016f2078f1f5 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 25 Mar 2025 18:30:44 -0700 Subject: [PATCH 07/23] Corrected Style --- .../jabref/gui/mergeentries/newmergedialog/FieldRowView.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index d519250abb6..56e9a6b006c 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -1,5 +1,7 @@ package org.jabref.gui.mergeentries.newmergedialog; +import java.time.Year; + import javafx.beans.property.BooleanProperty; import javafx.beans.property.ReadOnlyStringProperty; import javafx.beans.property.SimpleBooleanProperty; @@ -25,7 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.time.Year; /** * A controller class to control left, right and merged field values @@ -235,7 +236,7 @@ public void autoSelectBetterValue() { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); - if (leftYear < 1800 || leftYear > (Year.now().getValue() + 100) ) { + if (leftYear < 1800 || leftYear > (Year.now().getValue() + 100)) { selectRightValue(); // Select right value if left year is out of range, note that work created before Year 1800 will still be correctly processed } else if (Math.abs(leftYear - rightYear) > 10) { // Select value based on a difference condition From 96e4d1e1e37a74841b529d8f3d1fb13585e74c36 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 25 Mar 2025 18:35:43 -0700 Subject: [PATCH 08/23] Corrected Style --- .../org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index 56e9a6b006c..121b226f55e 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -27,7 +27,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; - /** * A controller class to control left, right and merged field values */ From 7bb2e3f9f71cac26e007dee017a673d45497f193 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 25 Mar 2025 19:13:02 -0700 Subject: [PATCH 09/23] Added JavaDoc documentation for two methods --- .../jabref/gui/mergeentries/newmergedialog/FieldRowView.java | 4 ++++ .../gui/mergeentries/newmergedialog/ThreeWayMergeView.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index 121b226f55e..fe4c963dc75 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -215,6 +215,10 @@ public String toString() { return "FieldRowView [shouldShowDiffs=" + shouldShowDiffs.get() + ", fieldNameCell=" + fieldNameCell + ", leftValueCell=" + leftValueCell + ", rightValueCell=" + rightValueCell + ", mergedValueCell=" + mergedValueCell + "]"; } + /** + * Method for selecting the 'Better' year value. + * If the local year is out of a reasonable range (e.g., before 1800 or 100 years after current year as determined by the System Clock) or differs from the DOI year by more than 10 years, it will choose the more recent year out of the two. + */ public void autoSelectBetterValue() { String fieldName = fieldNameCell.getText(); if (fieldName == null) { diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java index a6aef1b954f..1d715a7e285 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java @@ -201,6 +201,10 @@ public void saveConfiguration() { toolbar.saveToolbarConfiguration(); } + /** + * Directs to the method autoSelectBetterValue() in FieldRowView.java + * Select 'Better' values for each field row in the Entry + */ public void autoSelectBetterFields() { for (FieldRowView row : fieldRows) { row.autoSelectBetterValue(); From 56ab176f502351ec8bd9e470e67f14c377145af4 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 25 Mar 2025 19:44:21 -0700 Subject: [PATCH 10/23] Changed magic numbers and String to constants --- .../gui/mergeentries/newmergedialog/FieldRowView.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index fe4c963dc75..5d19db702ad 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -220,6 +220,11 @@ public String toString() { * If the local year is out of a reasonable range (e.g., before 1800 or 100 years after current year as determined by the System Clock) or differs from the DOI year by more than 10 years, it will choose the more recent year out of the two. */ public void autoSelectBetterValue() { + final int YEAR_LOWER = 1800; + final int YEAR_DIF = 10; + final int YEAR_UPPER_DIF = 100; + final String MISC = "misc"; + String fieldName = fieldNameCell.getText(); if (fieldName == null) { return; // Early return if fieldName is null @@ -239,9 +244,9 @@ public void autoSelectBetterValue() { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); - if (leftYear < 1800 || leftYear > (Year.now().getValue() + 100)) { + if (leftYear < YEAR_LOWER || leftYear > (Year.now().getValue() + YEAR_UPPER_DIF)) { selectRightValue(); // Select right value if left year is out of range, note that work created before Year 1800 will still be correctly processed - } else if (Math.abs(leftYear - rightYear) > 10) { + } else if (Math.abs(leftYear - rightYear) > YEAR_DIF) { // Select value based on a difference condition if (leftYear > rightYear) { selectLeftValue(); @@ -253,7 +258,7 @@ public void autoSelectBetterValue() { selectRightValue(); // Handle parsing exceptions } } else if (fieldName.contains("type")) { - if ("misc".equalsIgnoreCase(leftVal)) { + if (MISC.equalsIgnoreCase(leftVal)) { selectRightValue(); // Select right value if left value is "misc" } } From fa3dfd8d7561bcfaf788da312987a5153915a94d Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 25 Mar 2025 20:10:41 -0700 Subject: [PATCH 11/23] Changed magic numbers and String to constants --- .../gui/mergeentries/newmergedialog/FieldRowView.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index 5d19db702ad..e7664b82487 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -40,6 +40,10 @@ public class FieldRowView { private final FieldValueCell leftValueCell; private final FieldValueCell rightValueCell; private final MergedFieldCell mergedValueCell; + final int YEAR_LOWER = 1800; + final int YEAR_DIF = 10; + final int YEAR_UPPER_DIF = 100; + final String MISC = "misc"; private final ToggleGroup toggleGroup = new ToggleGroup(); @@ -220,11 +224,6 @@ public String toString() { * If the local year is out of a reasonable range (e.g., before 1800 or 100 years after current year as determined by the System Clock) or differs from the DOI year by more than 10 years, it will choose the more recent year out of the two. */ public void autoSelectBetterValue() { - final int YEAR_LOWER = 1800; - final int YEAR_DIF = 10; - final int YEAR_UPPER_DIF = 100; - final String MISC = "misc"; - String fieldName = fieldNameCell.getText(); if (fieldName == null) { return; // Early return if fieldName is null From a0f7e9f5b70169319d82c5c26a421c068ca55478 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 25 Mar 2025 21:25:56 -0700 Subject: [PATCH 12/23] Changed magic numbers and String to constants --- .../gui/mergeentries/newmergedialog/FieldRowView.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index e7664b82487..e6f98b00cd7 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -40,10 +40,10 @@ public class FieldRowView { private final FieldValueCell leftValueCell; private final FieldValueCell rightValueCell; private final MergedFieldCell mergedValueCell; - final int YEAR_LOWER = 1800; - final int YEAR_DIF = 10; - final int YEAR_UPPER_DIF = 100; - final String MISC = "misc"; + private static final int YEAR_LOWER = 1800; + private static final int YEAR_DIF = 10; + private static final int YEAR_UPPER_DIF = 100; + private static final String MISC = "misc"; private final ToggleGroup toggleGroup = new ToggleGroup(); @@ -226,7 +226,7 @@ public String toString() { public void autoSelectBetterValue() { String fieldName = fieldNameCell.getText(); if (fieldName == null) { - return; // Early return if fieldName is null + return; // Early return if fieldName is null or invalid } fieldName = fieldName.trim().toLowerCase(); // Trim and convert to lower case From ba16c49e5c7f82af65bb2e519afff7f2f8b50859 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Wed, 26 Mar 2025 02:11:53 -0700 Subject: [PATCH 13/23] Style correction --- .../gui/mergeentries/newmergedialog/FieldRowView.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index e6f98b00cd7..3529de437fb 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -32,6 +32,10 @@ */ public class FieldRowView { private static final Logger LOGGER = LoggerFactory.getLogger(FieldRowView.class); + private static final int YEAR_LOWER = 1800; + private static final int YEAR_DIF = 10; + private static final int YEAR_UPPER_DIF = 100; + private static final String MISC = "misc"; protected final FieldRowViewModel viewModel; @@ -40,10 +44,6 @@ public class FieldRowView { private final FieldValueCell leftValueCell; private final FieldValueCell rightValueCell; private final MergedFieldCell mergedValueCell; - private static final int YEAR_LOWER = 1800; - private static final int YEAR_DIF = 10; - private static final int YEAR_UPPER_DIF = 100; - private static final String MISC = "misc"; private final ToggleGroup toggleGroup = new ToggleGroup(); From 4aadea9fdb1668291ede7d0c5e211794cde81c5d Mon Sep 17 00:00:00 2001 From: xts2002 <91926488+xts2002@users.noreply.github.com> Date: Fri, 28 Mar 2025 18:57:07 -0700 Subject: [PATCH 14/23] Update src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java Suggested change Co-authored-by: Oliver Kopp --- .../java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java index b48c24a0ac6..ad477b089d8 100644 --- a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java +++ b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java @@ -110,7 +110,7 @@ private void showMergeDialog(BibEntry originalEntry, BibEntry fetchedEntry, WebF dialog.setTitle(Localization.lang("Merge entry with %0 information", fetcher.getName())); dialog.setLeftHeaderText(Localization.lang("Original entry")); dialog.setRightHeaderText(Localization.lang("Entry from %0", fetcher.getName())); - if ("DOI".equalsIgnoreCase(fetcher.getName())) { + if (fetcher instanceof DoiFetcher) { // This call will do your “better autoselection” for year/type dialog.autoSelectBetterFields(); } From 52cf5cb2b9c7ba994ea25534cf5c61b9eaf79c6e Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Sun, 30 Mar 2025 00:04:39 -0700 Subject: [PATCH 15/23] Moved Logic from FieldRowView.java to FieldRowViewModel.java --- .../gui/mergeentries/FetchAndMergeEntry.java | 4 +- .../newmergedialog/FieldRowView.java | 44 +--------------- .../newmergedialog/FieldRowViewModel.java | 51 +++++++++++++++++++ .../newmergedialog/ThreeWayMergeView.java | 4 +- .../mergeentries/FieldRowViewModelTest.java | 1 + 5 files changed, 58 insertions(+), 46 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java index b48c24a0ac6..02e780fa71d 100644 --- a/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java +++ b/src/main/java/org/jabref/gui/mergeentries/FetchAndMergeEntry.java @@ -22,6 +22,7 @@ import org.jabref.logic.importer.ImportCleanup; import org.jabref.logic.importer.WebFetcher; import org.jabref.logic.importer.WebFetchers; +import org.jabref.logic.importer.fetcher.DoiFetcher; import org.jabref.logic.l10n.Localization; import org.jabref.logic.util.BackgroundTask; import org.jabref.logic.util.TaskExecutor; @@ -110,8 +111,7 @@ private void showMergeDialog(BibEntry originalEntry, BibEntry fetchedEntry, WebF dialog.setTitle(Localization.lang("Merge entry with %0 information", fetcher.getName())); dialog.setLeftHeaderText(Localization.lang("Original entry")); dialog.setRightHeaderText(Localization.lang("Entry from %0", fetcher.getName())); - if ("DOI".equalsIgnoreCase(fetcher.getName())) { - // This call will do your “better autoselection” for year/type + if (fetcher instanceof DoiFetcher) { dialog.autoSelectBetterFields(); } Optional mergedEntry = dialogService.showCustomDialogAndWait(dialog).map(EntriesMergeResult::mergedEntry); diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index 3529de437fb..9c9e9bc6cfc 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -219,47 +219,7 @@ public String toString() { return "FieldRowView [shouldShowDiffs=" + shouldShowDiffs.get() + ", fieldNameCell=" + fieldNameCell + ", leftValueCell=" + leftValueCell + ", rightValueCell=" + rightValueCell + ", mergedValueCell=" + mergedValueCell + "]"; } - /** - * Method for selecting the 'Better' year value. - * If the local year is out of a reasonable range (e.g., before 1800 or 100 years after current year as determined by the System Clock) or differs from the DOI year by more than 10 years, it will choose the more recent year out of the two. - */ - public void autoSelectBetterValue() { - String fieldName = fieldNameCell.getText(); - if (fieldName == null) { - return; // Early return if fieldName is null or invalid - } - fieldName = fieldName.trim().toLowerCase(); // Trim and convert to lower case - - String leftVal = leftValueCell.textProperty().getValue(); - String rightVal = rightValueCell.textProperty().getValue(); - if (leftVal == null || rightVal == null) { - return; // Early return if leftVal or rightVal is null - } - leftVal = leftVal.trim(); - rightVal = rightVal.trim(); - - // Logic for auto selection based on field name - if (fieldName.contains("year")) { - try { - int leftYear = Integer.parseInt(leftVal); - int rightYear = Integer.parseInt(rightVal); - if (leftYear < YEAR_LOWER || leftYear > (Year.now().getValue() + YEAR_UPPER_DIF)) { - selectRightValue(); // Select right value if left year is out of range, note that work created before Year 1800 will still be correctly processed - } else if (Math.abs(leftYear - rightYear) > YEAR_DIF) { - // Select value based on a difference condition - if (leftYear > rightYear) { - selectLeftValue(); - } else { - selectRightValue(); - } - } - } catch (NumberFormatException e) { - selectRightValue(); // Handle parsing exceptions - } - } else if (fieldName.contains("type")) { - if (MISC.equalsIgnoreCase(leftVal)) { - selectRightValue(); // Select right value if left value is "misc" - } - } + public void autoSelectBetterValue_1(){ + viewModel.autoSelectBetterValue(); } } diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java index 46886d9bee1..e174cbea99b 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java @@ -1,5 +1,7 @@ package org.jabref.gui.mergeentries.newmergedialog; +import java.time.Year; + import javax.swing.undo.AbstractUndoableEdit; import javax.swing.undo.CannotRedoException; import javax.swing.undo.CannotUndoException; @@ -37,6 +39,10 @@ public enum Selection { NONE } + private static final int YEAR_LOWER = 1800; + private static final int YEAR_DIF = 10; + private static final int YEAR_UPPER_DIF = 100; + private static final String MISC = "misc"; private final Logger LOGGER = LoggerFactory.getLogger(FieldRowViewModel.class); private final BooleanProperty isFieldsMerged = new SimpleBooleanProperty(Boolean.FALSE); @@ -282,4 +288,49 @@ public void redo() throws CannotRedoException { setRightFieldValue(mergedFields); } } + + /** + * Method for selecting the 'Better' year value. + * If the local year is out of a reasonable range (e.g., before 1800 or 100 years after current year as determined by the System Clock) or differs from the DOI year by more than 10 years, it will choose the more recent year out of the two. + */ + public void autoSelectBetterValue() { + String field_1 = getField().getDisplayName(); + if (field_1 == null) { + return; + } + field_1 = field_1.trim().toLowerCase(); + + String leftVal = getLeftFieldValue(); + String rightVal = getRightFieldValue(); + if (leftVal == null || rightVal == null) { + return; + } + leftVal = leftVal.trim(); + rightVal = rightVal.trim(); + + // Logic for auto selection based on field name + // Default is right value + if (field_1.equals("year")) { + try { + int leftYear = Integer.parseInt(leftVal); + int rightYear = Integer.parseInt(rightVal); + if (leftYear < YEAR_LOWER || leftYear > (Year.now().getValue() + YEAR_UPPER_DIF)) { + selectRightValue(); // Select right value if left year is out of range, note that work created before Year 1800 will still be correctly processed + } else if (Math.abs(leftYear - rightYear) > YEAR_DIF) { + // Select value based on a difference condition + if (leftYear > rightYear) { + selectLeftValue(); + } else { + selectRightValue(); + } + } + } catch (NumberFormatException e) { + selectRightValue(); + } + } else if (field_1.equals("type")) { + if (MISC.equalsIgnoreCase(leftVal)) { + selectRightValue(); // Select right value if left value is "misc" + } + } + } } diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java index 1d715a7e285..bc10099712d 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/ThreeWayMergeView.java @@ -202,12 +202,12 @@ public void saveConfiguration() { } /** - * Directs to the method autoSelectBetterValue() in FieldRowView.java + * Directs to the method autoSelectBetterValue() in FieldRowViewModel.java * Select 'Better' values for each field row in the Entry */ public void autoSelectBetterFields() { for (FieldRowView row : fieldRows) { - row.autoSelectBetterValue(); + row.autoSelectBetterValue_1(); } } } diff --git a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java index 712897b3db4..275ac0c9d02 100644 --- a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java +++ b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java @@ -124,6 +124,7 @@ void hasEqualLeftAndRightValuesShouldReturnTrueIfKeywordsAreEqual() { void selectLeftValueShouldBeCorrect() { var monthFieldViewModel = createViewModelForField(StandardField.MONTH); monthFieldViewModel.selectLeftValue(); + assertEquals(FieldRowViewModel.Selection.LEFT, monthFieldViewModel.getSelection()); assertEquals(Optional.of(""), Optional.ofNullable(monthFieldViewModel.getMergedFieldValue())); From 27741ad58386fbaf34fd4b301d6730e1e8a76ee2 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Sun, 30 Mar 2025 00:39:55 -0700 Subject: [PATCH 16/23] Checkstyle change --- .../jabref/gui/mergeentries/newmergedialog/FieldRowView.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java index 9c9e9bc6cfc..daec4a54cc1 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowView.java @@ -1,7 +1,5 @@ package org.jabref.gui.mergeentries.newmergedialog; -import java.time.Year; - import javafx.beans.property.BooleanProperty; import javafx.beans.property.ReadOnlyStringProperty; import javafx.beans.property.SimpleBooleanProperty; @@ -219,7 +217,7 @@ public String toString() { return "FieldRowView [shouldShowDiffs=" + shouldShowDiffs.get() + ", fieldNameCell=" + fieldNameCell + ", leftValueCell=" + leftValueCell + ", rightValueCell=" + rightValueCell + ", mergedValueCell=" + mergedValueCell + "]"; } - public void autoSelectBetterValue_1(){ + public void autoSelectBetterValue_1() { viewModel.autoSelectBetterValue(); } } From 957ba764e2f865d9948a4c22cee2b25470b0f00d Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Sun, 30 Mar 2025 00:46:37 -0700 Subject: [PATCH 17/23] Checkstyle change --- .../gui/mergeentries/newmergedialog/FieldRowViewModel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java index e174cbea99b..23ac1ca8bcc 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java @@ -310,7 +310,7 @@ public void autoSelectBetterValue() { // Logic for auto selection based on field name // Default is right value - if (field_1.equals("year")) { + if (field_1.contains("year")) { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); @@ -327,7 +327,7 @@ public void autoSelectBetterValue() { } catch (NumberFormatException e) { selectRightValue(); } - } else if (field_1.equals("type")) { + } else if (field_1.contains("type")) { if (MISC.equalsIgnoreCase(leftVal)) { selectRightValue(); // Select right value if left value is "misc" } From 1be86a01e666976052a5b45ebdb6b41ed7b96030 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Sun, 30 Mar 2025 00:58:54 -0700 Subject: [PATCH 18/23] OpenRewrite Change --- .../gui/mergeentries/newmergedialog/FieldRowViewModel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java index 23ac1ca8bcc..e68305e3e2c 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java @@ -310,7 +310,7 @@ public void autoSelectBetterValue() { // Logic for auto selection based on field name // Default is right value - if (field_1.contains("year")) { + if ("year".equals(field_1)) { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); @@ -327,7 +327,7 @@ public void autoSelectBetterValue() { } catch (NumberFormatException e) { selectRightValue(); } - } else if (field_1.contains("type")) { + } else if ("type".equals(field_1)) { if (MISC.equalsIgnoreCase(leftVal)) { selectRightValue(); // Select right value if left value is "misc" } From 16ab73fb8cd8af37ed27a54c66ead4aebf4fb8db Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Sun, 30 Mar 2025 02:47:18 -0700 Subject: [PATCH 19/23] Added Tests in FieldRowViewModelTest.java --- .../mergeentries/FieldRowViewModelTest.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java index 275ac0c9d02..ffd633ca8a9 100644 --- a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java +++ b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java @@ -2,6 +2,8 @@ import java.util.Optional; +import java.time.Year; + import org.jabref.gui.mergeentries.newmergedialog.FieldRowViewModel; import org.jabref.gui.mergeentries.newmergedialog.fieldsmerger.FieldMergerFactory; import org.jabref.model.entry.BibEntry; @@ -15,6 +17,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDirFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -29,6 +32,11 @@ public class FieldRowViewModelTest { BibEntry rightEntry; BibEntry extraEntry; + BibEntry extraEntry2; + BibEntry extraEntry3; + BibEntry extraEntry4; + BibEntry extraEntry5; + BibEntry extraEntry6; BibEntry mergedEntry; @@ -71,6 +79,21 @@ void setup() throws ParseException { .withField(StandardField.KEYWORDS, "b, c, a") .withField(StandardField.YEAR, "2013"); + extraEntry2 = new BibEntry(StandardEntryType.InProceedings) + .withField(StandardField.YEAR, "1750"); + + extraEntry3 = new BibEntry(StandardEntryType.InProceedings) + .withField(StandardField.YEAR, String.valueOf(Year.now().getValue() + 110)); + + extraEntry4 = new BibEntry(StandardEntryType.InProceedings) + .withField(StandardField.YEAR, "2001"); + + extraEntry5 = new BibEntry(StandardEntryType.InProceedings) + .withField(StandardField.YEAR, "2022"); + + extraEntry6 = new BibEntry(StandardEntryType.InProceedings) + .withField(StandardField.YEAR, "2011"); + mergedEntry = new BibEntry(); fieldMergerFactory = new FieldMergerFactory(bibEntryPreferences); @@ -216,7 +239,57 @@ void unmergeFieldsShouldDoNothingIfFieldsAreNotMerged() { assertEquals(oldRightGroups, groupsField.getRightFieldValue()); } + @Test + void autoSelectBetterYearWhenMergingExistingYearOutOfBounds() { + var yearField = create2ndViewModelForField(StandardField.YEAR); + yearField.autoSelectBetterValue(); + + var yearField2 = create3rdViewModelForField(StandardField.YEAR); + yearField2.autoSelectBetterValue(); + + assertEquals(FieldRowViewModel.Selection.RIGHT, yearField.getSelection()); + assertEquals(FieldRowViewModel.Selection.RIGHT, yearField2.getSelection()); + } + + @Test + void autoSelectBetterYearWhenMergingExistingYearWithinBounds() { + var yearField = create4thViewModelForField(StandardField.YEAR); + var oldRightGroups = yearField.getRightFieldValue(); + yearField.autoSelectBetterValue(); + + var yearField2 = create5thViewModelForField(StandardField.YEAR); + var oldLeftGroups = yearField2.getLeftFieldValue(); + yearField2.autoSelectBetterValue(); + + var yearField3 = create6thViewModelForField(StandardField.YEAR); + yearField3.autoSelectBetterValue(); + + assertEquals(FieldRowViewModel.Selection.RIGHT, yearField.getSelection()); + assertEquals(FieldRowViewModel.Selection.LEFT, yearField2.getSelection()); + assertEquals(FieldRowViewModel.Selection.LEFT, yearField3.getSelection()); + } + public FieldRowViewModel createViewModelForField(Field field) { return new FieldRowViewModel(field, leftEntry, rightEntry, mergedEntry, fieldMergerFactory); } + + public FieldRowViewModel create2ndViewModelForField(Field field) { + return new FieldRowViewModel(field, extraEntry2, extraEntry6, mergedEntry, fieldMergerFactory); + } + + public FieldRowViewModel create3rdViewModelForField(Field field) { + return new FieldRowViewModel(field, extraEntry3, extraEntry6, mergedEntry, fieldMergerFactory); + } + + public FieldRowViewModel create4thViewModelForField(Field field) { + return new FieldRowViewModel(field, extraEntry4, extraEntry, mergedEntry, fieldMergerFactory); + } + + public FieldRowViewModel create5thViewModelForField(Field field) { + return new FieldRowViewModel(field, extraEntry5, extraEntry6, mergedEntry, fieldMergerFactory); + } + + public FieldRowViewModel create6thViewModelForField(Field field) { + return new FieldRowViewModel(field, extraEntry, extraEntry5, mergedEntry, fieldMergerFactory); + } } From 0a9991cafeafdbc67951877a29ffa2f2be2b2a9b Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Sun, 30 Mar 2025 02:48:12 -0700 Subject: [PATCH 20/23] Added Tests in FieldRowViewModelTest.java --- .../java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java index ffd633ca8a9..65f74f94a7d 100644 --- a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java +++ b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java @@ -254,11 +254,9 @@ void autoSelectBetterYearWhenMergingExistingYearOutOfBounds() { @Test void autoSelectBetterYearWhenMergingExistingYearWithinBounds() { var yearField = create4thViewModelForField(StandardField.YEAR); - var oldRightGroups = yearField.getRightFieldValue(); yearField.autoSelectBetterValue(); var yearField2 = create5thViewModelForField(StandardField.YEAR); - var oldLeftGroups = yearField2.getLeftFieldValue(); yearField2.autoSelectBetterValue(); var yearField3 = create6thViewModelForField(StandardField.YEAR); From 0b676339a66e53dab2e78e7bf6461c85de257274 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Sun, 30 Mar 2025 03:14:57 -0700 Subject: [PATCH 21/23] CheckStyle Change --- .../org/jabref/gui/mergeentries/FieldRowViewModelTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java index 65f74f94a7d..f4dec772897 100644 --- a/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java +++ b/src/test/java/org/jabref/gui/mergeentries/FieldRowViewModelTest.java @@ -1,8 +1,7 @@ package org.jabref.gui.mergeentries; -import java.util.Optional; - import java.time.Year; +import java.util.Optional; import org.jabref.gui.mergeentries.newmergedialog.FieldRowViewModel; import org.jabref.gui.mergeentries.newmergedialog.fieldsmerger.FieldMergerFactory; @@ -17,7 +16,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDirFactory; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; From 2c9238cdff291ea228aa3d99bfc99a13566504e0 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 1 Apr 2025 18:54:59 -0700 Subject: [PATCH 22/23] Method autoSelectBetterValue now use ```Field``` to check whether the selected entry type. --- .../newmergedialog/FieldRowViewModel.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java index e68305e3e2c..8b72311e066 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java @@ -21,6 +21,7 @@ import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.field.Field; import org.jabref.model.entry.field.InternalField; +import org.jabref.model.entry.field.StandardField; import org.jabref.model.entry.types.EntryTypeFactory; import org.jabref.model.strings.StringUtil; @@ -294,12 +295,6 @@ public void redo() throws CannotRedoException { * If the local year is out of a reasonable range (e.g., before 1800 or 100 years after current year as determined by the System Clock) or differs from the DOI year by more than 10 years, it will choose the more recent year out of the two. */ public void autoSelectBetterValue() { - String field_1 = getField().getDisplayName(); - if (field_1 == null) { - return; - } - field_1 = field_1.trim().toLowerCase(); - String leftVal = getLeftFieldValue(); String rightVal = getRightFieldValue(); if (leftVal == null || rightVal == null) { @@ -310,7 +305,7 @@ public void autoSelectBetterValue() { // Logic for auto selection based on field name // Default is right value - if ("year".equals(field_1)) { + if ((StandardField.YEAR).equals(field)) { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); @@ -327,7 +322,7 @@ public void autoSelectBetterValue() { } catch (NumberFormatException e) { selectRightValue(); } - } else if ("type".equals(field_1)) { + } else if ((StandardField.TYPE).equals(field)) { if (MISC.equalsIgnoreCase(leftVal)) { selectRightValue(); // Select right value if left value is "misc" } From 65e4d0ee22a64702ee07acc95785782a6601d9d7 Mon Sep 17 00:00:00 2001 From: Tim Xu Date: Tue, 1 Apr 2025 19:05:17 -0700 Subject: [PATCH 23/23] OpenRewrite Run --- .../gui/mergeentries/newmergedialog/FieldRowViewModel.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java index 8b72311e066..732bef6591c 100644 --- a/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java +++ b/src/main/java/org/jabref/gui/mergeentries/newmergedialog/FieldRowViewModel.java @@ -305,7 +305,7 @@ public void autoSelectBetterValue() { // Logic for auto selection based on field name // Default is right value - if ((StandardField.YEAR).equals(field)) { + if ((StandardField.YEAR) == field) { try { int leftYear = Integer.parseInt(leftVal); int rightYear = Integer.parseInt(rightVal); @@ -322,7 +322,7 @@ public void autoSelectBetterValue() { } catch (NumberFormatException e) { selectRightValue(); } - } else if ((StandardField.TYPE).equals(field)) { + } else if ((StandardField.TYPE) == field) { if (MISC.equalsIgnoreCase(leftVal)) { selectRightValue(); // Select right value if left value is "misc" }