JAL-2344 now flagging formats as 'identifiable' instead of 'dynamic'
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 12 Jan 2017 09:05:56 +0000 (09:05 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 12 Jan 2017 09:05:56 +0000 (09:05 +0000)
src/jalview/gui/Desktop.java
src/jalview/io/FileFormat.java
src/jalview/io/FileFormats.java
test/jalview/io/FileFormatsTest.java

index c09adea..4ce42dc 100644 (file)
@@ -1033,15 +1033,14 @@ public class Desktop extends jalview.jbgui.GDesktop implements
        * Skip this step for dynamically added file formats, because
        * IdentifyFile does not know how to recognise them.
        */
-      boolean dynamicFormat = FileFormats.getInstance().isDynamic(format);
-      if (!dynamicFormat && !FileFormat.Jalview.equals(format))
+      if (FileFormats.getInstance().isIdentifiable(format))
       {
         try
         {
           format = new IdentifyFile().identify(choice, DataSourceType.FILE);
         } catch (FileFormatException e)
         {
-          // format is null
+          // format = null; //??
         }
       }
 
index 5a95a9e..a11147c 100644 (file)
@@ -332,6 +332,12 @@ public enum FileFormat implements FileFormatI
     {
       return false;
     }
+
+    @Override
+    public boolean isIdentifiable()
+    {
+      return false;
+    }
   };
 
   private boolean writable;
@@ -405,4 +411,14 @@ public enum FileFormat implements FileFormatI
   {
     return false;
   }
+
+  /**
+   * By default, answers true, indicating the format is one that can be
+   * identified by IdentifyFile. Formats that cannot be identified should
+   * override this method to return false.
+   */
+  public boolean isIdentifiable()
+  {
+    return true;
+  }
 }
index a18d4e8..158489e 100644 (file)
@@ -26,10 +26,9 @@ public class FileFormats
   private static Map<String, FileFormatI> formats;
 
   /*
-   * Formats in this set are built in to Jalview and instantiated
-   * on startup, any others are added dynamically 
+   * Formats in this set are capable of being identified by IdentifyFile 
    */
-  private static Set<FileFormatI> builtIn;
+  private static Set<FileFormatI> identifiable;
 
   public static FileFormats getInstance()
   {
@@ -52,21 +51,20 @@ public class FileFormats
   public synchronized void reset()
   {
     formats = new LinkedHashMap<String, FileFormatI>();
-    builtIn = new HashSet<FileFormatI>();
+    identifiable = new HashSet<FileFormatI>();
     for (FileFormat format : FileFormat.values())
     {
-      registerFileFormat(format, true);
+      registerFileFormat(format, format.isIdentifiable());
     }
   }
 
   /**
-   * Answers false if the format is one 'built in' to Jalview, or true if not
-   * (meaning it has been added dynamically at runtime). Only built-in formats
-   * can be validated by IdentifyFile. Answers true for a null input.
+   * Answers true if the format is one that can be identified by IdentifyFile.
+   * Answers false for a null value.
    */
-  public boolean isDynamic(FileFormatI f)
+  public boolean isIdentifiable(FileFormatI f)
   {
-    return !builtIn.contains(f);
+    return identifiable.contains(f);
   }
 
   /**
@@ -80,7 +78,7 @@ public class FileFormats
   }
 
   protected void registerFileFormat(FileFormatI format,
-          boolean isBuiltIn)
+          boolean isIdentifiable)
   {
     String name = format.getName().toUpperCase();
     if (formats.containsKey(name))
@@ -88,9 +86,9 @@ public class FileFormats
       System.err.println("Overwriting file format: " + format.getName());
     }
     formats.put(name, format);
-    if (isBuiltIn)
+    if (isIdentifiable)
     {
-      builtIn.add(format);
+      identifiable.add(format);
     }
   }
 
@@ -102,7 +100,7 @@ public class FileFormats
   public void deregisterFileFormat(String name)
   {
     FileFormatI ff = formats.remove(name.toUpperCase());
-    builtIn.remove(ff);
+    identifiable.remove(ff);
   }
 
   /**
index 542336f..8df228f 100644 (file)
@@ -26,9 +26,9 @@ public class FileFormatsTest
     FileFormats formats = FileFormats.getInstance();
     for (FileFormatI ff : FileFormat.values())
     {
-      assertFalse(formats.isDynamic(ff));
+      assertFalse(formats.isIdentifiable(ff));
     }
-    assertTrue(formats.isDynamic(null));
+    assertTrue(formats.isIdentifiable(null));
 
     /*
      * remove and re-add a format: it is now considered 'dynamically added'
@@ -38,7 +38,7 @@ public class FileFormatsTest
     formats.registerFileFormat(FileFormat.Fasta);
     assertSame(FileFormat.Fasta,
             formats.forName(FileFormat.Fasta.getName()));
-    assertTrue(formats.isDynamic(FileFormat.Fasta));
+    assertTrue(formats.isIdentifiable(FileFormat.Fasta));
   }
 
   @Test(groups = "Functional")
@@ -104,7 +104,7 @@ public class FileFormatsTest
     FileFormats formats = FileFormats.getInstance();
     assertSame(FileFormat.MMCif,
             formats.forName(FileFormat.MMCif.getName()));
-    assertFalse(formats.isDynamic(FileFormat.MMCif));
+    assertFalse(formats.isIdentifiable(FileFormat.MMCif));
 
     /*
      * deregister mmCIF format
@@ -119,7 +119,7 @@ public class FileFormatsTest
     formats.registerFileFormat(FileFormat.MMCif);
     assertSame(FileFormat.MMCif,
             formats.forName(FileFormat.MMCif.getName()));
-    assertTrue(formats.isDynamic(FileFormat.MMCif));
+    assertTrue(formats.isIdentifiable(FileFormat.MMCif));
     // repeating does nothing
     formats.registerFileFormat(FileFormat.MMCif);
     assertSame(FileFormat.MMCif,