JAL-3365 expand range of allowed DSSP secondary structure symbols in Stockholm files
[jalview.git] / src / jalview / io / BackupFilenameFilter.java
index 647e250..b8a721e 100644 (file)
@@ -1,9 +1,30 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.io;
 
 import java.io.File;
 import java.io.FilenameFilter;
+import java.io.IOException;
 
-public class BackupFileFilter implements FilenameFilter
+public class BackupFilenameFilter implements FilenameFilter
 {
 
   public String base;
@@ -12,49 +33,34 @@ public class BackupFileFilter implements FilenameFilter
 
   public int digits;
 
-  public String extension;
-
-  public BackupFileFilter(String base, String template, int digits,
-          String extension)
+  public BackupFilenameFilter(String base, String template, int digits)
   {
     this.base = base;
     this.template = template;
     this.digits = digits;
-    this.extension = extension;
   }
 
   @Override
-  public boolean accept(File file, String filename)
+  public boolean accept(File dir, String filename)
   {
-    if (file.isDirectory())
-    {
-      return true;
-    }
-    else
+    try
     {
-      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();
-      if (filename.length() == startLength + digits + endLength
-              && filename.startsWith(base + templateStart)
-              && filename.endsWith(templateEnd + extension)
-              && filename
-                      .substring(startLength,
-                              filename.length() - endLength + 1)
-                      .matches("[0-9]+"))
+      File file = new File(
+              dir.getCanonicalPath() + File.separatorChar + filename);
+      if (file.isDirectory())
       {
-        return true;
+        // backup files aren't dirs!
+        return false;
       }
-
+    } catch (IOException e)
+    {
+      System.out.println("IOException when checking file '" + filename
+              + "' is a backupfile");
     }
-    return false;
+
+    BackupFilenameParts bffp = new BackupFilenameParts(filename, base,
+            template, digits);
+    return bffp.isBackupFile();
   }
 
 }