4 import java.io.FilenameFilter;
6 public class BackupFilenameFilter implements FilenameFilter
11 public String template;
15 public String extension;
17 public BackupFilenameFilter(String base, String template, int digits,
21 this.template = template;
23 this.extension = extension;
27 public boolean accept(File file, String filename)
29 // CHECK THIS IS NOT ALWAYS THE PARENT DIR
30 if (file.isDirectory())
36 BackupFilenameParts bffp = new BackupFilenameParts(filename, base,
37 template, digits, extension);
38 return bffp.isBackupFile();
44 class BackupFilenameParts
62 public BackupFilenameParts(File file, String base, String template, int digits,
65 this(file.getName(), base, template, digits, extension);
68 public BackupFilenameParts(String filename, String base, String template,
69 int digits, String extension)
71 this.isBackupFile = false;
73 if (!(filename.startsWith(base) && filename.endsWith(extension)))
78 int numcharstart = template.indexOf(BackupFiles.NUM_PLACEHOLDER);
79 String templateStart = template;
80 String templateEnd = "";
81 if (numcharstart > -1)
83 templateStart = template.substring(0, numcharstart);
84 templateEnd = template.substring(numcharstart + BackupFiles.NUM_PLACEHOLDER.length());
86 int startLength = base.length() + templateStart.length();
87 int endLength = templateEnd.length() + extension.length();
88 String numString = filename.substring(startLength, filename.length() - endLength + 1);
90 if (filename.length() >= startLength + digits + endLength
91 && filename.startsWith(base + templateStart)
92 && filename.endsWith(templateEnd + extension)
93 && numString.matches("[0-9]+"))
97 this.templateStart = templateStart;
98 this.num = Integer.parseInt(numString);
100 this.templateStart = templateStart;
101 this.templateEnd = templateEnd;
102 this.isBackupFile = true;
107 public static String getBackupFilename(int index, String base,
109 int digits, String extension)
111 String numString = String.format("%0" + digits + "d", index);
112 String backupSuffix = template.replaceAll(BackupFiles.NUM_PLACEHOLDER,
114 String backupfilename = base + backupSuffix + extension;
115 return backupfilename;
118 public boolean isBackupFile()
120 return this.isBackupFile;
123 public int indexNum()