From b5e7efd880190cabbbd48c25cd275ada5c353978 Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Tue, 22 Jan 2019 13:15:08 +0000 Subject: [PATCH] JAL-3141 Fixed what happens when suffix template has no '%n' index --- src/jalview/io/BackupFilenameParts.java | 33 ++++++++++++++++--------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/jalview/io/BackupFilenameParts.java b/src/jalview/io/BackupFilenameParts.java index 93aa602..a91414a 100644 --- a/src/jalview/io/BackupFilenameParts.java +++ b/src/jalview/io/BackupFilenameParts.java @@ -22,21 +22,12 @@ public class BackupFilenameParts } public BackupFilenameParts(String filename, String base, String template, - int digits) + int suggesteddigits) { this.isBackupFile = false; - // 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 numcharstart = template.indexOf(BackupFiles.NUM_PLACEHOLDER); + int digits = 0; String templateStart = template; String templateEnd = ""; if (numcharstart > -1) @@ -44,23 +35,33 @@ 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(); - String numString = filename.substring(startLength, - filename.length() - endLength); + String numString = numcharstart > -1?filename.substring(startLength, + filename.length() - endLength):""; if (filename.length() >= startLength + digits + endLength && filename.startsWith(base + templateStart) && filename.endsWith(templateEnd) - && numString.matches("[0-9]+")) + && 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; } -- 1.7.10.2