X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FBackupFilenameParts.java;h=6f7da93b02895e23544b482a1fa0f99369c5de1c;hb=656e362ece73c630f032d8bf30322143a297d92e;hp=b9f766e658c4fadf1a8bef97b0c71afad7a337bb;hpb=05c12ef9626200844bf5067056f03e84090565b3;p=jalview.git diff --git a/src/jalview/io/BackupFilenameParts.java b/src/jalview/io/BackupFilenameParts.java index b9f766e..6f7da93 100644 --- a/src/jalview/io/BackupFilenameParts.java +++ b/src/jalview/io/BackupFilenameParts.java @@ -14,34 +14,21 @@ public class BackupFilenameParts String templateEnd; - String extension; - boolean isBackupFile; - public BackupFilenameParts(File file, String base, String template, int digits, - String extension) + public BackupFilenameParts(File file, String base, String template, + int digits) { - this(file.getName(), base, template, digits, extension); + this(file.getName(), base, template, digits); } public BackupFilenameParts(String filename, String base, String template, - int digits, String extension) + int suggesteddigits) { this.isBackupFile = false; - // calculate minimum length of a backup filename - int minlength = base.length() + template.length() - - BackupFiles.NUM_PLACEHOLDER.length() + digits - + extension.length(); - - if (!(filename.startsWith(base) && filename.endsWith(extension) - && filename.length() >= minlength)) - { - // non-starter - return; - } - int numcharstart = template.indexOf(BackupFiles.NUM_PLACEHOLDER); + int digits = 0; String templateStart = template; String templateEnd = ""; if (numcharstart > -1) @@ -49,27 +36,38 @@ public class BackupFilenameParts templateStart = template.substring(0, numcharstart); templateEnd = template.substring( numcharstart + BackupFiles.NUM_PLACEHOLDER.length()); + digits = suggesteddigits; + } + + // calculate minimum length of a backup filename + int minlength = base.length() + template.length() + - BackupFiles.NUM_PLACEHOLDER.length() + digits; + + if (!(filename.startsWith(base) && filename.length() >= minlength)) + { + // non-starter + return; } - + int startLength = base.length() + templateStart.length(); - int endLength = templateEnd.length() + extension.length(); - String numString = filename.substring(startLength, - filename.length() - endLength); + int endLength = templateEnd.length(); + String numString = numcharstart > -1 + ? filename.substring(startLength, filename.length() - endLength) + : ""; if (filename.length() >= startLength + digits + endLength && filename.startsWith(base + templateStart) - && filename.endsWith(templateEnd + extension) - && numString.matches("[0-9]+")) + && filename.endsWith(templateEnd) + && numString.matches("[0-9]*")) { this.base = base; this.templateStart = templateStart; - this.num = Integer.parseInt(numString); + this.num = numString.length() > 0 ? Integer.parseInt(numString) : 0; this.digits = digits; - this.templateStart = templateStart; this.templateEnd = templateEnd; this.isBackupFile = true; } - + } public boolean isBackupFile()