From 936eedf433288490313b5365e86215c82dfe0ecc Mon Sep 17 00:00:00 2001 From: Kai Takac Date: Mon, 9 Dec 2019 21:43:49 +0100 Subject: [PATCH] Fix #5603 - account for file extension in file name length (#5726) * Fix #5603 - account for file extension in file name length * Update changelog --- CHANGELOG.md | 1 + src/main/java/org/jabref/logic/util/io/FileUtil.java | 2 +- src/test/java/org/jabref/logic/util/io/FileUtilTest.java | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e62873f5eed..6b28e1370db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -71,6 +71,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where the side pane was not remembering its position. [#5615](https://github.com/JabRef/jabref/issues/5615) - We fixed an issue where JabRef could not interact with [Oracle XE](https://www.oracle.com/de/database/technologies/appdev/xe.html) in the [shared SQL database setup](https://docs.jabref.org/collaborative-work/sqldatabase). - We fixed an issue where the toolbar icons were hidden on smaller screens. +- We fixed an issue where renaming referenced files for bib entries with long titles was not possible. [#5603](https://github.com/JabRef/jabref/issues/5603) ### Removed diff --git a/src/main/java/org/jabref/logic/util/io/FileUtil.java b/src/main/java/org/jabref/logic/util/io/FileUtil.java index bbaa00159e3..1a489720431 100644 --- a/src/main/java/org/jabref/logic/util/io/FileUtil.java +++ b/src/main/java/org/jabref/logic/util/io/FileUtil.java @@ -79,7 +79,7 @@ public static String getValidFileName(String fileName) { if (nameWithoutExtension.length() > MAXIMUM_FILE_NAME_LENGTH) { Optional extension = getFileExtension(fileName); - String shortName = nameWithoutExtension.substring(0, MAXIMUM_FILE_NAME_LENGTH); + String shortName = nameWithoutExtension.substring(0, MAXIMUM_FILE_NAME_LENGTH - extension.map(s -> s.length() + 1).orElse(0)); LOGGER.info(String.format("Truncated the too long filename '%s' (%d characters) to '%s'.", fileName, fileName.length(), shortName)); return extension.map(s -> shortName + "." + s).orElse(shortName); } diff --git a/src/test/java/org/jabref/logic/util/io/FileUtilTest.java b/src/test/java/org/jabref/logic/util/io/FileUtilTest.java index 803eec50de0..be50604045f 100644 --- a/src/test/java/org/jabref/logic/util/io/FileUtilTest.java +++ b/src/test/java/org/jabref/logic/util/io/FileUtilTest.java @@ -343,7 +343,7 @@ void validFilenameWithoutExtension() { @Test void validFilenameShouldBeMaximum255Chars() { - String longestValidFilename = Stream.generate(() -> String.valueOf('1')).limit(FileUtil.MAXIMUM_FILE_NAME_LENGTH).collect(Collectors.joining()) + ".pdf"; + String longestValidFilename = Stream.generate(() -> String.valueOf('1')).limit(FileUtil.MAXIMUM_FILE_NAME_LENGTH - 4).collect(Collectors.joining()) + ".pdf"; String longerFilename = Stream.generate(() -> String.valueOf('1')).limit(260).collect(Collectors.joining()) + ".pdf"; assertEquals(longestValidFilename, FileUtil.getValidFileName(longerFilename)); }