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 digits) { 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); String templateStart = template; String templateEnd = ""; if (numcharstart > -1) { templateStart = template.substring(0, numcharstart); templateEnd = template.substring( numcharstart + BackupFiles.NUM_PLACEHOLDER.length()); } int startLength = base.length() + templateStart.length(); int endLength = templateEnd.length(); String numString = 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 = Integer.parseInt(numString); this.digits = digits; this.templateStart = templateStart; this.templateEnd = templateEnd; this.isBackupFile = true; } } public boolean isBackupFile() { return this.isBackupFile; } public int indexNum() { return this.num; } }