From c82fc171e344db1e2a970bccde1567f63299ce64 Mon Sep 17 00:00:00 2001 From: Oliver Kopp Date: Fri, 12 Aug 2022 17:01:15 +0200 Subject: [PATCH] Keep EOL setting at backups (#9048) * Fix org.jabref.logic.autosaveandbackup.BackupManager#performBackup to use line ending of library * Fix typos * fix checkstyle Co-authored-by: Siedlerchr --- .../gui/exporter/SaveDatabaseAction.java | 4 +++- .../autosaveandbackup/BackupManager.java | 20 +++++++++---------- .../org/jabref/logic/util/io/FileUtil.java | 6 +++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java b/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java index 685e1c0d28d..293e03d45be 100644 --- a/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java +++ b/src/main/java/org/jabref/gui/exporter/SaveDatabaseAction.java @@ -228,11 +228,13 @@ private boolean save(Path targetPath, SaveDatabaseMode mode) { } private boolean saveDatabase(Path file, boolean selectedOnly, Charset encoding, SavePreferences.DatabaseSaveType saveType) throws SaveException { + // if this code is adapted, please also adapt org.jabref.logic.autosaveandbackup.BackupManager.performBackup + GeneralPreferences generalPreferences = this.preferences.getGeneralPreferences(); SavePreferences savePreferences = this.preferences.getSavePreferences() .withSaveType(saveType); + BibDatabaseContext bibDatabaseContext = libraryTab.getBibDatabaseContext(); try (AtomicFileWriter fileWriter = new AtomicFileWriter(file, encoding, savePreferences.shouldMakeBackup())) { - BibDatabaseContext bibDatabaseContext = libraryTab.getBibDatabaseContext(); BibWriter bibWriter = new BibWriter(fileWriter, bibDatabaseContext.getDatabase().getNewLineSeparator()); BibtexDatabaseWriter databaseWriter = new BibtexDatabaseWriter(bibWriter, generalPreferences, savePreferences, entryTypesManager); diff --git a/src/main/java/org/jabref/logic/autosaveandbackup/BackupManager.java b/src/main/java/org/jabref/logic/autosaveandbackup/BackupManager.java index 948aca58bf5..65656f71f9a 100644 --- a/src/main/java/org/jabref/logic/autosaveandbackup/BackupManager.java +++ b/src/main/java/org/jabref/logic/autosaveandbackup/BackupManager.java @@ -1,7 +1,6 @@ package org.jabref.logic.autosaveandbackup; import java.io.IOException; -import java.io.Writer; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; @@ -20,7 +19,6 @@ import org.jabref.logic.exporter.SavePreferences; import org.jabref.logic.util.CoarseChangeFilter; import org.jabref.logic.util.DelayTaskThrottler; -import org.jabref.logic.util.OS; import org.jabref.logic.util.io.FileUtil; import org.jabref.model.database.BibDatabaseContext; import org.jabref.model.database.event.BibDatabaseContextChangedEvent; @@ -57,7 +55,7 @@ private BackupManager(BibDatabaseContext bibDatabaseContext, BibEntryTypesManage this.bibDatabaseContext = bibDatabaseContext; this.entryTypesManager = entryTypesManager; this.preferences = preferences; - this.throttler = new DelayTaskThrottler(15000); + this.throttler = new DelayTaskThrottler(15_000); changeFilter = new CoarseChangeFilter(bibDatabaseContext); changeFilter.registerListener(this); @@ -134,13 +132,13 @@ private Optional determineBackupPath() { } private void performBackup(Path backupPath) { - try { - Charset charset = bibDatabaseContext.getMetaData().getEncoding().orElse(StandardCharsets.UTF_8); - GeneralPreferences generalPreferences = preferences.getGeneralPreferences(); - SavePreferences savePreferences = preferences.getSavePreferences() - .withMakeBackup(false); - Writer writer = new AtomicFileWriter(backupPath, charset); - BibWriter bibWriter = new BibWriter(writer, OS.NEWLINE); + // code similar to org.jabref.gui.exporter.SaveDatabaseAction.saveDatabase + GeneralPreferences generalPreferences = preferences.getGeneralPreferences(); + SavePreferences savePreferences = preferences.getSavePreferences() + .withMakeBackup(false); + Charset encoding = bibDatabaseContext.getMetaData().getEncoding().orElse(StandardCharsets.UTF_8); + try (AtomicFileWriter fileWriter = new AtomicFileWriter(backupPath, encoding)) { + BibWriter bibWriter = new BibWriter(fileWriter, bibDatabaseContext.getDatabase().getNewLineSeparator()); new BibtexDatabaseWriter(bibWriter, generalPreferences, savePreferences, entryTypesManager) .saveDatabase(bibDatabaseContext); } catch (IOException e) { @@ -157,7 +155,7 @@ private void logIfCritical(Path backupPath, IOException e) { // do not print errors in field values into the log during autosave if (!isErrorInField) { - LOGGER.error("Error while saving to file" + backupPath, e); + LOGGER.error("Error while saving to file {}", backupPath, e); } } 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 ae6be08ba15..f60ff2b110c 100644 --- a/src/main/java/org/jabref/logic/util/io/FileUtil.java +++ b/src/main/java/org/jabref/logic/util/io/FileUtil.java @@ -193,7 +193,7 @@ public static boolean copyFile(Path pathToSourceFile, Path pathToDestinationFile * * @param fromFile The source filename to rename * @param toFile The target fileName - * @return True if the rename was successful, false if an exception occurred + * @return True if rename was successful, false if an exception occurred */ public static boolean renameFile(Path fromFile, Path toFile) { return renameFile(fromFile, toFile, false); @@ -204,8 +204,8 @@ public static boolean renameFile(Path fromFile, Path toFile) { * * @param fromFile The source filename to rename * @param toFile The target fileName - * @param replaceExisting Wether to replace existing files or not - * @return True if the rename was successful, false if an exception occurred + * @param replaceExisting Whether to replace existing files or not + * @return True if rename was successful, false if an exception occurred * @deprecated Use {@link Files#move(Path, Path, CopyOption...)} instead and handle exception properly */ @Deprecated