From 9ad25defe3cc13559f87ad3fa4a5255fae7f028b Mon Sep 17 00:00:00 2001 From: laky241 Date: Sat, 18 Jan 2025 23:48:11 +0530 Subject: [PATCH 1/5] fixed the cleanup renaming which will only rename ".pdf" files. --- .../org/jabref/logic/cleanup/RenamePdfCleanup.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java index 674596df2bd..0369fafb185 100644 --- a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java +++ b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java @@ -32,6 +32,12 @@ public RenamePdfCleanup(boolean onlyRelativePaths, Supplier this.filePreferences = filePreferences; } + private boolean allowedFileType(String filePath) { + String lowerCase = filePath.toLowerCase(); + + return lowerCase.endsWith(".pdf"); + } + @Override public List cleanup(BibEntry entry) { List files = entry.getFiles(); @@ -41,6 +47,10 @@ public List cleanup(BibEntry entry) { if (onlyRelativePaths && Path.of(file.getLink()).isAbsolute()) { continue; } + if (!allowedFileType(file.getLink())) { + LOGGER.info("Skipping renaming: {}", file.getLink()); + continue; + } LinkedFileHandler fileHandler = new LinkedFileHandler(file, entry, databaseContext.get(), filePreferences); try { From bf0767f8f55bffdf1863ab7cfc9341b73a809fb4 Mon Sep 17 00:00:00 2001 From: laky241 Date: Sun, 19 Jan 2025 23:52:43 +0530 Subject: [PATCH 2/5] fixed the unit tests --- .../org/jabref/logic/cleanup/CleanupWorkerTest.java | 4 ++-- .../jabref/logic/cleanup/RenamePdfCleanupTest.java | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/org/jabref/logic/cleanup/CleanupWorkerTest.java b/src/test/java/org/jabref/logic/cleanup/CleanupWorkerTest.java index 7f01fc0e81f..0145d7244c8 100644 --- a/src/test/java/org/jabref/logic/cleanup/CleanupWorkerTest.java +++ b/src/test/java/org/jabref/logic/cleanup/CleanupWorkerTest.java @@ -253,7 +253,7 @@ void cleanupRelativePathsConvertAbsoluteToRelativePath() throws IOException { void cleanupRenamePdfRenamesRelativeFile() throws IOException { CleanupPreferences preset = new CleanupPreferences(CleanupPreferences.CleanupStep.RENAME_PDF); - Path path = pdfPath.resolve("AnotherRandomlyNamedFile.tmp"); + Path path = pdfPath.resolve("AnotherRandomlyNamedFile.pdf"); Files.createFile(path); BibEntry entry = new BibEntry() .withCitationKey("Toot"); @@ -261,7 +261,7 @@ void cleanupRenamePdfRenamesRelativeFile() throws IOException { entry.setField(StandardField.FILE, FileFieldWriter.getStringRepresentation(fileField)); worker.cleanup(preset, entry); - LinkedFile newFileField = new LinkedFile("", Path.of("Toot.tmp"), ""); + LinkedFile newFileField = new LinkedFile("", Path.of("Toot.pdf"), ""); assertEquals(Optional.of(FileFieldWriter.getStringRepresentation(newFileField)), entry.getField(StandardField.FILE)); } diff --git a/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java b/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java index 609dbb3abee..ceaaa80ac5b 100644 --- a/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java +++ b/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java @@ -54,7 +54,7 @@ void setUp(@TempDir Path testFolder) { */ @Test void cleanupRenamePdfRenamesFileEvenIfOnlyDifferenceIsCase() throws IOException { - Path path = testFolder.resolve("toot.tmp"); + Path path = testFolder.resolve("toot.pdf"); Files.createFile(path); LinkedFile fileField = new LinkedFile("", path.toAbsolutePath(), ""); @@ -63,13 +63,13 @@ void cleanupRenamePdfRenamesFileEvenIfOnlyDifferenceIsCase() throws IOException when(filePreferences.getFileNamePattern()).thenReturn("[citationkey]"); cleanup.cleanup(entry); - LinkedFile newFileField = new LinkedFile("", Path.of("Toot.tmp"), ""); + LinkedFile newFileField = new LinkedFile("", Path.of("Toot.pdf"), ""); assertEquals(Optional.of(FileFieldWriter.getStringRepresentation(newFileField)), entry.getField(StandardField.FILE)); } @Test void cleanupRenamePdfRenamesWithMultipleFiles() throws IOException { - Path path = testFolder.resolve("Toot.tmp"); + Path path = testFolder.resolve("Toot.pdf"); Files.createFile(path); entry.setField(StandardField.TITLE, "test title"); @@ -85,14 +85,14 @@ void cleanupRenamePdfRenamesWithMultipleFiles() throws IOException { assertEquals(Optional.of(FileFieldWriter.getStringRepresentation( Arrays.asList( new LinkedFile("", Path.of(""), ""), - new LinkedFile("", Path.of("Toot - test title.tmp"), ""), + new LinkedFile("", Path.of("Toot - test title.pdf"), ""), new LinkedFile("", Path.of(""), "")))), entry.getField(StandardField.FILE)); } @Test void cleanupRenamePdfRenamesFileStartingWithCitationKey() throws IOException { - Path path = testFolder.resolve("Toot.tmp"); + Path path = testFolder.resolve("Toot.pdf"); Files.createFile(path); LinkedFile fileField = new LinkedFile("", path.toAbsolutePath(), ""); @@ -102,7 +102,7 @@ void cleanupRenamePdfRenamesFileStartingWithCitationKey() throws IOException { when(filePreferences.getFileNamePattern()).thenReturn("[citationkey] - [fulltitle]"); cleanup.cleanup(entry); - LinkedFile newFileField = new LinkedFile("", Path.of("Toot - test title.tmp"), ""); + LinkedFile newFileField = new LinkedFile("", Path.of("Toot - test title.pdf"), ""); assertEquals(Optional.of(FileFieldWriter.getStringRepresentation(newFileField)), entry.getField(StandardField.FILE)); } From 3f3ddcb59c6951533bea149d742fa705f871a2e2 Mon Sep 17 00:00:00 2001 From: laky241 Date: Tue, 21 Jan 2025 22:45:17 +0530 Subject: [PATCH 3/5] now using FileUtil.isPDFFile --- .../java/org/jabref/logic/cleanup/RenamePdfCleanup.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java index 0369fafb185..f2009d8ba49 100644 --- a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java +++ b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java @@ -10,6 +10,7 @@ import org.jabref.logic.FilePreferences; import org.jabref.logic.externalfiles.LinkedFileHandler; +import org.jabref.logic.util.io.FileUtil; import org.jabref.model.FieldChange; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -32,10 +33,10 @@ public RenamePdfCleanup(boolean onlyRelativePaths, Supplier this.filePreferences = filePreferences; } - private boolean allowedFileType(String filePath) { - String lowerCase = filePath.toLowerCase(); + private boolean allowedFileType(String fileName) { + Path file = Path.of(fileName); - return lowerCase.endsWith(".pdf"); + return FileUtil.isPDFFile(file); } @Override From 4814a59772087bee1283979997b3a21dbdad06bb Mon Sep 17 00:00:00 2001 From: laky241 Date: Thu, 23 Jan 2025 00:43:15 +0530 Subject: [PATCH 4/5] made the requested changes --- .../logic/cleanup/RenamePdfCleanup.java | 20 +++++++++++++------ .../logic/cleanup/RenamePdfCleanupTest.java | 4 ++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java index f2009d8ba49..875ff782455 100644 --- a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java +++ b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java @@ -10,7 +10,6 @@ import org.jabref.logic.FilePreferences; import org.jabref.logic.externalfiles.LinkedFileHandler; -import org.jabref.logic.util.io.FileUtil; import org.jabref.model.FieldChange; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -34,9 +33,7 @@ public RenamePdfCleanup(boolean onlyRelativePaths, Supplier } private boolean allowedFileType(String fileName) { - Path file = Path.of(fileName); - - return FileUtil.isPDFFile(file); + return true; } @Override @@ -48,11 +45,22 @@ public List cleanup(BibEntry entry) { if (onlyRelativePaths && Path.of(file.getLink()).isAbsolute()) { continue; } - if (!allowedFileType(file.getLink())) { - LOGGER.info("Skipping renaming: {}", file.getLink()); + + String fullName = Path.of(file.getLink()).getFileName().toString(); + int dot = fullName.lastIndexOf('.'); + if (dot == -1) { continue; } + String extension = fullName.substring(dot + 1); + String baseName = fullName.substring(0, dot); + String newCitationKey = entry.getCitationKey().orElse(""); + String newBaseName = newCitationKey; + int dash = baseName.indexOf('-'); + if (dash != -1) { + newBaseName += baseName.substring(dash); + } + String newFileName = newBaseName + "." + extension; LinkedFileHandler fileHandler = new LinkedFileHandler(file, entry, databaseContext.get(), filePreferences); try { boolean changedFile = fileHandler.renameToSuggestedName(); diff --git a/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java b/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java index ceaaa80ac5b..ea971c1e0b5 100644 --- a/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java +++ b/src/test/java/org/jabref/logic/cleanup/RenamePdfCleanupTest.java @@ -69,7 +69,7 @@ void cleanupRenamePdfRenamesFileEvenIfOnlyDifferenceIsCase() throws IOException @Test void cleanupRenamePdfRenamesWithMultipleFiles() throws IOException { - Path path = testFolder.resolve("Toot.pdf"); + Path path = testFolder.resolve("Toot.tmp"); Files.createFile(path); entry.setField(StandardField.TITLE, "test title"); @@ -85,7 +85,7 @@ void cleanupRenamePdfRenamesWithMultipleFiles() throws IOException { assertEquals(Optional.of(FileFieldWriter.getStringRepresentation( Arrays.asList( new LinkedFile("", Path.of(""), ""), - new LinkedFile("", Path.of("Toot - test title.pdf"), ""), + new LinkedFile("", Path.of("Toot - test title.tmp"), ""), new LinkedFile("", Path.of(""), "")))), entry.getField(StandardField.FILE)); } From c27c32d13d91c2f792327905cde483f321b63f8a Mon Sep 17 00:00:00 2001 From: laky241 Date: Fri, 24 Jan 2025 00:17:26 +0530 Subject: [PATCH 5/5] made the requested changes --- .../org/jabref/logic/cleanup/RenamePdfCleanup.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java index 875ff782455..e23156624cd 100644 --- a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java +++ b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java @@ -10,6 +10,7 @@ import org.jabref.logic.FilePreferences; import org.jabref.logic.externalfiles.LinkedFileHandler; +import org.jabref.logic.util.io.FileUtil; import org.jabref.model.FieldChange; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.entry.BibEntry; @@ -47,12 +48,14 @@ public List cleanup(BibEntry entry) { } String fullName = Path.of(file.getLink()).getFileName().toString(); - int dot = fullName.lastIndexOf('.'); - if (dot == -1) { + Optional extension = FileUtil.getFileExtension(fullName); + String baseName = FileUtil.getBaseName(fullName); + + if (extension.isEmpty()) { + LOGGER.info(" No extension found "); continue; } - String extension = fullName.substring(dot + 1); - String baseName = fullName.substring(0, dot); + String extensionFinal = extension.get(); String newCitationKey = entry.getCitationKey().orElse(""); String newBaseName = newCitationKey; @@ -60,7 +63,7 @@ public List cleanup(BibEntry entry) { if (dash != -1) { newBaseName += baseName.substring(dash); } - String newFileName = newBaseName + "." + extension; + String newFileName = newBaseName + "." + extensionFinal; LinkedFileHandler fileHandler = new LinkedFileHandler(file, entry, databaseContext.get(), filePreferences); try { boolean changedFile = fileHandler.renameToSuggestedName();