diff --git a/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java b/src/main/java/org/jabref/logic/cleanup/RenamePdfCleanup.java index 674596df2bd..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; @@ -32,6 +33,10 @@ public RenamePdfCleanup(boolean onlyRelativePaths, Supplier this.filePreferences = filePreferences; } + private boolean allowedFileType(String fileName) { + return true; + } + @Override public List cleanup(BibEntry entry) { List files = entry.getFiles(); @@ -42,6 +47,23 @@ public List cleanup(BibEntry entry) { continue; } + String fullName = Path.of(file.getLink()).getFileName().toString(); + Optional extension = FileUtil.getFileExtension(fullName); + String baseName = FileUtil.getBaseName(fullName); + + if (extension.isEmpty()) { + LOGGER.info(" No extension found "); + continue; + } + String extensionFinal = extension.get(); + String newCitationKey = entry.getCitationKey().orElse(""); + + String newBaseName = newCitationKey; + int dash = baseName.indexOf('-'); + if (dash != -1) { + newBaseName += baseName.substring(dash); + } + String newFileName = newBaseName + "." + extensionFinal; LinkedFileHandler fileHandler = new LinkedFileHandler(file, entry, databaseContext.get(), filePreferences); try { boolean changedFile = fileHandler.renameToSuggestedName(); 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..ea971c1e0b5 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,7 +63,7 @@ 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)); } @@ -92,7 +92,7 @@ void cleanupRenamePdfRenamesWithMultipleFiles() throws IOException { @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)); }