X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FBackupFiles.java;h=1553a41c312acd7abc3d7384e27be698ee91b1cf;hb=fb7ba61b4b7e4bc0260a288cd07335321f61ad18;hp=7a026f9069bfae08bb8d6537bda49e4861d3a7f4;hpb=d9a4775abc320c59c605b143c665ff0fede7783d;p=jalview.git diff --git a/src/jalview/io/BackupFiles.java b/src/jalview/io/BackupFiles.java index 7a026f9..1553a41 100644 --- a/src/jalview/io/BackupFiles.java +++ b/src/jalview/io/BackupFiles.java @@ -16,7 +16,7 @@ import java.util.TreeMap; * BackupFiles used for manipulating (naming rolling/deleting) backup/version files when an alignment or project file is saved. * User configurable options are: * BACKUPFILES_ENABLED - boolean flag as to whether to use this mechanism or act as before, including overwriting files as saved. - * BACKUPFILES_SUFFIX - a template to insert just before the file extension. Use '%n' to be replaced by a 0-led SUFFIX_DIGITS long integer. + * BACKUPFILES_SUFFIX - a template to insert after the file extension. Use '%n' to be replaced by a 0-led SUFFIX_DIGITS long integer. * BACKUPFILES_NO_MAX - flag to turn off setting a maximum number of backup files to keep. * BACKUPFILES_ROLL_MAX - the maximum number of backupfiles to keep for any one alignment or project file. * BACKUPFILES_SUFFIX_DIGITS - the number of digits to insert replace %n with (e.g. BACKUPFILES_SUFFIX_DIGITS = 3 would make "001", "002", etc) @@ -48,6 +48,8 @@ public class BackupFiles private static final String DEFAULT_TEMP_FILE = "jalview_temp_file_" + NS; + private static final String TEMP_FILE_EXT = ".tmp"; + // file - File object to be backed up and then updated (written over) private File file; @@ -90,7 +92,7 @@ public class BackupFiles // REVERSE_ORDER public BackupFiles(File file) { - this(file, "-v" + NUM_PLACEHOLDER, false, 4, 3, false); + this(file, ".v" + NUM_PLACEHOLDER, false, 4, 3, false); } public BackupFiles(File file, @@ -115,11 +117,11 @@ public class BackupFiles { String tempfilename = file.getName(); File tempdir = file.getParentFile(); - temp = File.createTempFile(tempfilename, ".tmp", tempdir); + temp = File.createTempFile(tempfilename, TEMP_FILE_EXT, tempdir); } else { - temp = File.createTempFile(DEFAULT_TEMP_FILE, ".tmp"); + temp = File.createTempFile(DEFAULT_TEMP_FILE, TEMP_FILE_EXT); } } catch (IOException e) { @@ -200,6 +202,7 @@ public class BackupFiles public boolean renameTempFile() { + System.out.println("RENAMING TEMP FILE '"+tempFile.getName() + "' TO '"+file.getName()+"'"); // DELETEME return tempFile.renameTo(file); } @@ -231,15 +234,6 @@ public class BackupFiles } String filename = file.getName(); String basename = filename; - String extension = ""; - int dotcharpos = filename.lastIndexOf('.'); - // don't split filenames with the last '.' at the very beginning or - // very end of the filename - if ((dotcharpos > 0) && (dotcharpos < filename.length() - 1)) - { - basename = filename.substring(0, dotcharpos); - extension = filename.substring(dotcharpos); // NOTE this includes the '.' - } boolean ret = true; // Create/move backups up one @@ -248,8 +242,7 @@ public class BackupFiles // find existing backup files BackupFilenameFilter bff = new BackupFilenameFilter(basename, suffix, - digits, - extension); + digits); File[] backupFiles = dirFile.listFiles(bff); int nextIndexNum = 0; String confirmDeleteExtraInfo = null; @@ -261,7 +254,7 @@ public class BackupFiles } else { - TreeMap bfTreeMap = sortBackupFilesAsTreeMap(backupFiles, basename, extension); + TreeMap bfTreeMap = sortBackupFilesAsTreeMap(backupFiles, basename); if (reverseOrder) { @@ -290,7 +283,7 @@ public class BackupFiles // int n = tempMax - m; String backupfilename = dir + File.separatorChar + BackupFilenameFilter.getBackupFilename(n, basename, - suffix, digits, extension); + suffix, digits); File backupfile_n = new File(backupfilename); if (!backupfile_n.exists()) @@ -305,7 +298,7 @@ public class BackupFiles // move the largest (max) rolled file to a temp file and add to the delete list try { - File temp = File.createTempFile(backupfilename, ".tmp", + File temp = File.createTempFile(backupfilename, TEMP_FILE_EXT, dirFile); backupfile_n.renameTo(temp); @@ -362,7 +355,7 @@ public class BackupFiles // Let's make the new backup file!! yay, got there at last! String latestBackupFilename = dir + File.separatorChar + BackupFilenameFilter.getBackupFilename(nextIndexNum, basename, - suffix, digits, extension); + suffix, digits); File latestBackupFile = new File(latestBackupFilename); ret = ret && file.renameTo(latestBackupFile); @@ -419,14 +412,14 @@ public class BackupFiles } } - private TreeMap sortBackupFilesAsTreeMap(File[] backupFiles, String basename, String extension) { + private TreeMap sortBackupFilesAsTreeMap(File[] backupFiles, String basename) { // sort the backup files (based on integer found in the suffix) using a // precomputed Hashmap for speed Map bfHashMap = new HashMap<>(); for (int i = 0; i < backupFiles.length; i++) { File f = backupFiles[i]; - BackupFilenameParts bfp = new BackupFilenameParts(f, basename, suffix, digits, extension); + BackupFilenameParts bfp = new BackupFilenameParts(f, basename, suffix, digits); bfHashMap.put(bfp.indexNum(), f); } TreeMap bfTreeMap = new TreeMap<>(); @@ -497,18 +490,9 @@ public class BackupFiles String filename = file.getName(); String basename = filename; - String extension = ""; - int dotcharpos = filename.lastIndexOf('.'); - // don't split of filenames with the last '.' at the very beginning or - // very end of the filename - if ((dotcharpos > 0) && (dotcharpos < filename.length() - 1)) - { - basename = filename.substring(0, dotcharpos); - extension = filename.substring(dotcharpos); // NOTE this includes the '.' - } // find existing backup files - BackupFilenameFilter bff = new BackupFilenameFilter(basename, suffix, digits, extension); + BackupFilenameFilter bff = new BackupFilenameFilter(basename, suffix, digits); backupFiles = dirFile.listFiles(bff); // is clone needed? // sort the backup files (based on integer found in the suffix) using a @@ -518,7 +502,7 @@ public class BackupFiles { File f = backupFiles[i]; BackupFilenameParts bfp = new BackupFilenameParts(f, basename, suffix, - digits, extension); + digits); bfHashMap.put(bfp.indexNum(), f); } TreeMap bfTreeMap = new TreeMap<>();