package jalview.io; import java.io.File; public class BackupFilenameParts { String base; String templateStart; int num; int digits; String templateEnd; boolean isBackupFile; public BackupFilenameParts(File file, String base, String template, int digits) { this(file.getName(), base, template, digits); } public BackupFilenameParts(String filename, String base, String template, int suggesteddigits) { this.isBackupFile = false; int numcharstart = template.indexOf(BackupFiles.NUM_PLACEHOLDER); int digits = 0; String templateStart = template; String templateEnd = ""; if (numcharstart > -1) { 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 = 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]*")) { this.base = base; this.templateStart = templateStart; this.num = numString.length() > 0 ? Integer.parseInt(numString) : 0; this.digits = digits; this.templateEnd = templateEnd; this.isBackupFile = true; } } public boolean isBackupFile() { return this.isBackupFile; } public int indexNum() { return this.num; } }