From c8da256d894b124cdd6a7a998862a7c853d09d6f Mon Sep 17 00:00:00 2001 From: Giri Date: Fri, 8 May 2020 18:06:54 -0400 Subject: [PATCH 1/6] Partial fix for issue 5891 --- CHANGELOG.md | 1 + .../java/org/jabref/model/database/BibDatabaseContext.java | 2 -- .../java/org/jabref/logic/integrity/IntegrityCheckTest.java | 5 ++++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5f4e34895c..327b8aa52ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Fixed +- We fixed to only search file links in the BIB file location directory when preferences has corresponding checkbox checked. [#5891](https://github.com/JabRef/jabref/issues/5891) - We fixed wrong button order (Apply and Cancel) in ManageProtectedTermsDialog. - We fixed an issue with incompatible characters at BibTeX key [#6257](https://github.com/JabRef/jabref/issues/6257) - We fixed an issue where dash (`-`) was reported as illegal BibTeX key [#6295](https://github.com/JabRef/jabref/issues/6295) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index f6f56dc5bd7..20d3c85ddbb 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -144,8 +144,6 @@ public List getFileDirectoriesAsPaths(FilePreferences preferences) { // Check if we should add it as primary file dir (first in the list) or not: if (preferences.isBibLocationAsPrimary()) { fileDirs.add(0, parentPath); - } else { - fileDirs.add(parentPath); } }); diff --git a/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java b/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java index 4da2ccc6d2b..4f8eb0c5901 100644 --- a/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java +++ b/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java @@ -35,6 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; class IntegrityCheckTest { @@ -414,8 +415,10 @@ private void assertWrong(BibDatabaseContext context) { } private void assertCorrect(BibDatabaseContext context) { + FilePreferences filePreferencesMock = mock(FilePreferences.class); + when(filePreferencesMock.isBibLocationAsPrimary()).thenReturn(true); List messages = new IntegrityCheck(context, - mock(FilePreferences.class), + filePreferencesMock, createBibtexKeyPatternPreferences(), JournalAbbreviationLoader.loadBuiltInRepository(), false ).checkDatabase(); From ce3335776aca522f3cf4333032bd23a96a6b9551 Mon Sep 17 00:00:00 2001 From: Giri Date: Fri, 8 May 2020 18:06:54 -0400 Subject: [PATCH 2/6] Added more tests --- CHANGELOG.md | 1 + .../model/database/BibDatabaseContext.java | 2 -- .../externalfiles/AutoSetFileLinksUtilTest.java | 17 +++++++++++++---- .../logic/cleanup/MoveFilesCleanupTest.java | 14 +++++++++++++- .../logic/integrity/IntegrityCheckTest.java | 5 ++++- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5f4e34895c..327b8aa52ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Fixed +- We fixed to only search file links in the BIB file location directory when preferences has corresponding checkbox checked. [#5891](https://github.com/JabRef/jabref/issues/5891) - We fixed wrong button order (Apply and Cancel) in ManageProtectedTermsDialog. - We fixed an issue with incompatible characters at BibTeX key [#6257](https://github.com/JabRef/jabref/issues/6257) - We fixed an issue where dash (`-`) was reported as illegal BibTeX key [#6295](https://github.com/JabRef/jabref/issues/6295) diff --git a/src/main/java/org/jabref/model/database/BibDatabaseContext.java b/src/main/java/org/jabref/model/database/BibDatabaseContext.java index f6f56dc5bd7..20d3c85ddbb 100644 --- a/src/main/java/org/jabref/model/database/BibDatabaseContext.java +++ b/src/main/java/org/jabref/model/database/BibDatabaseContext.java @@ -144,8 +144,6 @@ public List getFileDirectoriesAsPaths(FilePreferences preferences) { // Check if we should add it as primary file dir (first in the list) or not: if (preferences.isBibLocationAsPrimary()) { fileDirs.add(0, parentPath); - } else { - fileDirs.add(parentPath); } }); diff --git a/src/test/java/org/jabref/gui/externalfiles/AutoSetFileLinksUtilTest.java b/src/test/java/org/jabref/gui/externalfiles/AutoSetFileLinksUtilTest.java index 1bcd3895338..2aaf9e98eca 100644 --- a/src/test/java/org/jabref/gui/externalfiles/AutoSetFileLinksUtilTest.java +++ b/src/test/java/org/jabref/gui/externalfiles/AutoSetFileLinksUtilTest.java @@ -30,24 +30,33 @@ public class AutoSetFileLinksUtilTest { private final BibDatabaseContext databaseContext = mock(BibDatabaseContext.class); private final ExternalFileTypes externalFileTypes = mock(ExternalFileTypes.class); private final BibEntry entry = new BibEntry(StandardEntryType.Article); + private Path path = null; @BeforeEach public void setUp(@TempDir Path folder) throws Exception { - Path path = folder.resolve("CiteKey.pdf"); + path = folder.resolve("CiteKey.pdf"); Files.createFile(path); entry.setCiteKey("CiteKey"); - when(databaseContext.getFileDirectoriesAsPaths(any())).thenReturn(Collections.singletonList(path.getParent())); - when(externalFileTypes.getExternalFileTypeSelection()).thenReturn(new TreeSet<>(ExternalFileTypes.getDefaultExternalFileTypes())); } @Test - public void test() throws Exception { + public void testFindAssociatedNotLinkedFilesSuccess() throws Exception { // Due to mocking the externalFileType class, the file extension will not be found + when(databaseContext.getFileDirectoriesAsPaths(any())).thenReturn(Collections.singletonList(path.getParent())); + when(externalFileTypes.getExternalFileTypeSelection()).thenReturn(new TreeSet<>(ExternalFileTypes.getDefaultExternalFileTypes())); List expected = Collections.singletonList(new LinkedFile("", "CiteKey.pdf", "")); AutoSetFileLinksUtil util = new AutoSetFileLinksUtil(databaseContext, fileDirPrefs, autoLinkPrefs, externalFileTypes); List actual = util.findAssociatedNotLinkedFiles(entry); assertEquals(expected, actual); } + + @Test + public void testFindAssociatedNotLinkedFilesForEmptySearchDir() throws Exception { + when(fileDirPrefs.isBibLocationAsPrimary()).thenReturn(false); + AutoSetFileLinksUtil util = new AutoSetFileLinksUtil(databaseContext, fileDirPrefs, autoLinkPrefs, externalFileTypes); + List actual = util.findAssociatedNotLinkedFiles(entry); + assertEquals(Collections.emptyList(), actual); + } } diff --git a/src/test/java/org/jabref/logic/cleanup/MoveFilesCleanupTest.java b/src/test/java/org/jabref/logic/cleanup/MoveFilesCleanupTest.java index 22ef8bd86e7..a237f03d6d8 100644 --- a/src/test/java/org/jabref/logic/cleanup/MoveFilesCleanupTest.java +++ b/src/test/java/org/jabref/logic/cleanup/MoveFilesCleanupTest.java @@ -4,8 +4,11 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; +import java.util.Collections; +import java.util.List; import java.util.Optional; +import org.jabref.model.FieldChange; import org.jabref.model.database.BibDatabase; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -32,6 +35,7 @@ class MoveFilesCleanupTest { private MoveFilesCleanup cleanup; private BibEntry entry; private FilePreferences filePreferences; + private BibDatabaseContext databaseContext; @BeforeEach void setUp(@TempDir Path bibFolder) throws IOException { @@ -47,7 +51,7 @@ void setUp(@TempDir Path bibFolder) throws IOException { MetaData metaData = new MetaData(); metaData.setDefaultFileDirectory(defaultFileFolder.toAbsolutePath().toString()); - BibDatabaseContext databaseContext = new BibDatabaseContext(new BibDatabase(), metaData); + databaseContext = new BibDatabaseContext(new BibDatabase(), metaData); Files.createFile(bibFolder.resolve("test.bib")); databaseContext.setDatabasePath(bibFolder.resolve("test.bib")); @@ -119,4 +123,12 @@ void movesFileWithSubdirectoryPattern() throws Exception { assertFalse(Files.exists(fileBefore)); assertTrue(Files.exists(fileAfter)); } + + @Test + void movesFileWithNoDirectory() throws Exception { + databaseContext.setMetaData(new MetaData()); + when(filePreferences.getFileDirPattern()).thenReturn(""); + List changes = cleanup.cleanup(entry); + assertEquals(Collections.emptyList(), changes); + } } diff --git a/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java b/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java index 4da2ccc6d2b..4f8eb0c5901 100644 --- a/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java +++ b/src/test/java/org/jabref/logic/integrity/IntegrityCheckTest.java @@ -35,6 +35,7 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; class IntegrityCheckTest { @@ -414,8 +415,10 @@ private void assertWrong(BibDatabaseContext context) { } private void assertCorrect(BibDatabaseContext context) { + FilePreferences filePreferencesMock = mock(FilePreferences.class); + when(filePreferencesMock.isBibLocationAsPrimary()).thenReturn(true); List messages = new IntegrityCheck(context, - mock(FilePreferences.class), + filePreferencesMock, createBibtexKeyPatternPreferences(), JournalAbbreviationLoader.loadBuiltInRepository(), false ).checkDatabase(); From 4b997f8acf805cb440d95013be58fefe1f92d04f Mon Sep 17 00:00:00 2001 From: mbadar Date: Wed, 27 May 2020 23:47:34 -0400 Subject: [PATCH 3/6] updating text for checkbox --- src/main/java/org/jabref/gui/preferences/FileTab.fxml | 2 +- src/main/resources/l10n/JabRef_da.properties | 2 +- src/main/resources/l10n/JabRef_de.properties | 2 +- src/main/resources/l10n/JabRef_el.properties | 2 +- src/main/resources/l10n/JabRef_en.properties | 2 +- src/main/resources/l10n/JabRef_es.properties | 2 +- src/main/resources/l10n/JabRef_fr.properties | 2 +- src/main/resources/l10n/JabRef_in.properties | 2 +- src/main/resources/l10n/JabRef_it.properties | 2 +- src/main/resources/l10n/JabRef_ja.properties | 2 +- src/main/resources/l10n/JabRef_nl.properties | 2 +- src/main/resources/l10n/JabRef_no.properties | 2 +- src/main/resources/l10n/JabRef_pt.properties | 2 +- src/main/resources/l10n/JabRef_pt_BR.properties | 2 +- src/main/resources/l10n/JabRef_ru.properties | 4 ++-- src/main/resources/l10n/JabRef_sv.properties | 2 +- src/main/resources/l10n/JabRef_tl.properties | 2 +- src/main/resources/l10n/JabRef_tr.properties | 2 +- src/main/resources/l10n/JabRef_zh.properties | 2 +- 19 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/jabref/gui/preferences/FileTab.fxml b/src/main/java/org/jabref/gui/preferences/FileTab.fxml index dd1f0d4c949..0aa25f266f2 100644 --- a/src/main/java/org/jabref/gui/preferences/FileTab.fxml +++ b/src/main/java/org/jabref/gui/preferences/FileTab.fxml @@ -43,7 +43,7 @@