JAL-3141 forgot to add this file after extracting the class!
authorBen Soares <bsoares@dundee.ac.uk>
Wed, 9 Jan 2019 07:58:32 +0000 (07:58 +0000)
committerBen Soares <bsoares@dundee.ac.uk>
Wed, 9 Jan 2019 07:58:32 +0000 (07:58 +0000)
src/jalview/io/BackupFilenameParts.java [new file with mode: 0644]

diff --git a/src/jalview/io/BackupFilenameParts.java b/src/jalview/io/BackupFilenameParts.java
new file mode 100644 (file)
index 0000000..b9f766e
--- /dev/null
@@ -0,0 +1,84 @@
+package jalview.io;
+
+import java.io.File;
+
+public class BackupFilenameParts
+{
+  String base;
+
+  String templateStart;
+
+  int num;
+
+  int digits;
+
+  String templateEnd;
+
+  String extension;
+
+  boolean isBackupFile;
+
+  public BackupFilenameParts(File file, String base, String template, int digits,
+          String extension)
+  {
+    this(file.getName(), base, template, digits, extension);
+  }
+
+  public BackupFilenameParts(String filename, String base, String template,
+          int digits, String extension)
+  {
+    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);
+    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() + extension.length();
+    String numString = filename.substring(startLength,
+            filename.length() - endLength);
+
+    if (filename.length() >= startLength + digits + endLength
+            && filename.startsWith(base + templateStart)
+            && filename.endsWith(templateEnd + extension)
+            && 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;
+  }
+}