Further tweaks to get tests passing
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 24 Nov 2016 15:42:52 +0000 (15:42 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 24 Nov 2016 15:42:52 +0000 (15:42 +0000)
src/jalview/gui/AlignFrame.java
src/jalview/gui/CutAndPasteTransfer.java
src/jalview/gui/Preferences.java
src/jalview/io/AlignFile.java
src/jalview/io/AppletFormatAdapter.java
src/jalview/io/FileFormat.java
src/jalview/io/FileFormatI.java
src/jalview/io/FormatAdapter.java
src/jalview/io/IdentifyFile.java
src/jalview/io/JalviewFileChooser.java
test/jalview/io/IdentifyFileTest.java

index e585e28..453fd3a 100644 (file)
@@ -5281,7 +5281,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             viewport.setColumnSelection(cs);
             isAnnotation = true;
           }
-          else if (IdentifyFile.FeaturesFile.equals(format))
+          // else if (IdentifyFile.FeaturesFile.equals(format))
+          else if (format == FileFormat.Features)
           {
             if (parseFeaturesFile(file, sourceType))
             {
index 4e5ef40..8b21058 100644 (file)
@@ -260,7 +260,7 @@ public class CutAndPasteTransfer extends GCutAndPasteTransfer
     {
       String title = MessageManager.formatMessage(
               "label.input_cut_paste_params",
-              new String[] { format.getShortDescription() });
+              new String[] { format.toString() });
       FeatureSettingsModelI proxyColourScheme = source
               .getFeatureColourScheme();
 
index 1ac17e4..4f4dcd0 100755 (executable)
@@ -24,6 +24,7 @@ import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.bin.Cache;
 import jalview.gui.Help.HelpId;
 import jalview.gui.StructureViewer.ViewerType;
+import jalview.io.FileFormatI;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.jbgui.GPreferences;
@@ -699,9 +700,12 @@ public class Preferences extends GPreferences
 
     if (value == JalviewFileChooser.APPROVE_OPTION)
     {
-      Cache.applicationProperties.setProperty("DEFAULT_FILE_FORMAT",
-              chooser
-                      .getSelectedFormat().toString());
+      FileFormatI format = chooser.getSelectedFormat();
+      if (format != null)
+      {
+        Cache.applicationProperties.setProperty("DEFAULT_FILE_FORMAT",
+                format.toString());
+      }
       startupFileTextfield.setText(chooser.getSelectedFile()
               .getAbsolutePath());
     }
index d333c64..4de510a 100755 (executable)
@@ -65,7 +65,7 @@ public abstract class AlignFile extends FileParse implements AlignmentFileI
   /**
    * Properties to be added to generated alignment object
    */
-  protected Hashtable properties;
+  private Hashtable properties;
 
   long start;
 
index e0a607b..5f40713 100755 (executable)
@@ -435,7 +435,7 @@ public class AppletFormatAdapter
   {
     try
     {
-      AlignmentFileI afile = format.getAlignmentFile();
+      AlignmentFileI afile = format.getAlignmentFile(alignment);
 
       afile.setNewlineString(newline);
       afile.setExportSettings(exportSettings);
index 770f762..a43bc22 100644 (file)
@@ -1,5 +1,6 @@
 package jalview.io;
 
+import jalview.datamodel.AlignmentI;
 import jalview.datamodel.PDBEntry;
 import jalview.ext.jmol.JmolParser;
 import jalview.structure.StructureImportSettings;
@@ -29,7 +30,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new FastaFile();
     }
@@ -51,7 +52,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PfamFile();
     }
@@ -72,9 +73,9 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
-      return new StockholmFile();
+      return new StockholmFile(al);
     }
 
   },
@@ -95,7 +96,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PIRFile();
     }
@@ -115,7 +116,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new BLCFile();
     }
@@ -137,9 +138,9 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
-      return new BLCFile();
+      return new AMSAFile(al);
     }
   },
   Html("HTML", "html", true, false)
@@ -157,7 +158,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new HtmlFile();
     }
@@ -184,7 +185,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new RnamlFile();
     }
@@ -205,7 +206,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JSONFile();
     }
@@ -232,7 +233,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PileUpfile();
     }
@@ -253,7 +254,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new MSFfile();
     }
@@ -274,7 +275,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new ClustalFile();
     }
@@ -296,7 +297,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PhylipFile();
     }
@@ -322,7 +323,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return null; // todo is this called?
     }
@@ -345,7 +346,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new FeaturesFile();
     }
@@ -408,7 +409,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JmolParser(); // todo or null?
     }
@@ -439,7 +440,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JmolParser(); // todo or null?
     }
@@ -462,7 +463,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return null;
     }
@@ -533,12 +534,6 @@ public enum FileFormat implements FileFormatI
     return false;
   }
 
-  @Override
-  public String getShortDescription()
-  {
-    return toString();
-  }
-
   /**
    * Returns the file format with the given name, or null if format is null or
    * invalid. Unlike valueOf(), this is not case-sensitive, to be kind to
@@ -595,4 +590,10 @@ public enum FileFormat implements FileFormatI
   {
     return name;
   }
+
+  @Override
+  public AlignmentFileI getAlignmentFile()
+  {
+    return getAlignmentFile((AlignmentI) null);
+  }
 }
index f594a36..082d9f1 100644 (file)
@@ -1,5 +1,7 @@
 package jalview.io;
 
+import jalview.datamodel.AlignmentI;
+
 import java.io.IOException;
 
 public interface FileFormatI
@@ -10,12 +12,12 @@ public interface FileFormatI
 
   AlignmentFileI getAlignmentFile(FileParse source) throws IOException;
 
+  AlignmentFileI getAlignmentFile(AlignmentI al);
+
   AlignmentFileI getAlignmentFile();
 
   boolean isComplexAlignFile();
 
-  String getShortDescription();
-
   /**
    * Returns a comma-separated list of file extensions associated with the
    * format
index 724170e..1dbfdef 100755 (executable)
@@ -158,7 +158,7 @@ public class FormatAdapter extends AppletFormatAdapter
     //
     // try
     // {
-      boolean withSuffix = getCacheSuffixDefault(format);
+    boolean withSuffix = getCacheSuffixDefault(format);
     return format.getAlignmentFile().print(seqs, withSuffix);
       // null;
       //
index bc91e09..f8d8415 100755 (executable)
@@ -30,8 +30,6 @@ import java.io.IOException;
  */
 public class IdentifyFile
 {
-  public static final String FeaturesFile = "GFF or Jalview features";
-
   /**
    * Identify a datasource's file content.
    *
index 7e1aaa1..e4317bd 100755 (executable)
@@ -76,7 +76,7 @@ public class JalviewFileChooser extends JFileChooser
       if (format.isReadable())
       {
         extensions.add(format.getExtensions());
-        descs.add(format.getShortDescription());
+        descs.add(format.toString());
       }
     }
     return new JalviewFileChooser(directory,
@@ -106,7 +106,7 @@ public class JalviewFileChooser extends JFileChooser
       if (format.isWritable())
       {
         extensions.add(format.getExtensions());
-        descs.add(format.getShortDescription());
+        descs.add(format.toString());
       }
     }
     return new JalviewFileChooser(directory,
@@ -233,6 +233,11 @@ public class JalviewFileChooser extends JFileChooser
     }
   }
 
+  /**
+   * Returns the selected file format, or null if none selected
+   * 
+   * @return
+   */
   public FileFormatI getSelectedFormat()
   {
     if (getFileFilter() == null)
@@ -240,9 +245,27 @@ public class JalviewFileChooser extends JFileChooser
       return null;
     }
 
+    /*
+     * logic here depends on option description being formatted as 
+     * formatName (extension, extension...)
+     * or the 'no option selected' value
+     * All Files
+     * @see JalviewFileFilter.getDescription
+     */
     String format = getFileFilter().getDescription();
-    format = format.substring(0, format.indexOf("(") - 1);
-    return FileFormat.valueOf(format);
+    int parenPos = format.indexOf("(");
+    if (parenPos > 0)
+    {
+      format = format.substring(0, parenPos).trim();
+      try
+      {
+        return FileFormat.valueOf(format);
+      } catch (IllegalArgumentException e)
+      {
+        System.err.println("Unexpected format: " + format);
+      }
+    }
+    return null;
   }
 
   @Override
index d693a6c..0a3ff94 100644 (file)
@@ -20,8 +20,8 @@
  */
 package jalview.io;
 
-import static org.testng.AssertJUnit.assertEquals;
 import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertSame;
 import static org.testng.AssertJUnit.assertTrue;
 
 import org.testng.Assert;
@@ -32,13 +32,13 @@ public class IdentifyFileTest
 {
 
   @Test(groups = { "Functional" }, dataProvider = "identifyFiles")
-  public void testIdentify(String data, String expectedFileType)
+  public void testIdentify(String data, FileFormatI expectedFileType)
           throws FileFormatException
   {
     DataSourceType protocol = DataSourceType.FILE;
     IdentifyFile ider = new IdentifyFile();
-    String actualFiletype = ider.identify(data, protocol).toString();
-    Assert.assertEquals(actualFiletype, expectedFileType,
+    FileFormatI actualFiletype = ider.identify(data, protocol);
+    Assert.assertSame(actualFiletype, expectedFileType,
             "File identification Failed!");
   }
 
@@ -57,7 +57,7 @@ public class IdentifyFileTest
      */
     String data = "Iron-sulfur (2Fe-2S)\tFER_CAPAA\t-1\t39\t39\tMETAL\n"
             + "Iron-phosphorus (2Fe-P)\tID_NOT_SPECIFIED\t2\t86\t87\tMETALLIC\n";
-    assertEquals(IdentifyFile.FeaturesFile,
+    assertSame(FileFormat.Features,
             ider.identify(data, DataSourceType.PASTE));
 
     /*
@@ -65,14 +65,14 @@ public class IdentifyFileTest
      */
     data = "METAL\tcc9900\n" + "GFF\n"
             + "FER_CAPAA\tuniprot\tMETAL\t44\t45\t4.0\t.\t.\n";
-    assertEquals(IdentifyFile.FeaturesFile,
+    assertSame(FileFormat.Features,
             ider.identify(data, DataSourceType.PASTE));
 
     /*
      * Feature with '<' in the name (JAL-2098)
      */
     data = "kD < 3\tred\n" + "Low kD\tFER_CAPAA\t-1\t39\t39\tkD < 3\n";
-    assertEquals(IdentifyFile.FeaturesFile,
+    assertSame(FileFormat.Features,
             ider.identify(data, DataSourceType.PASTE));
   }
 
@@ -80,26 +80,26 @@ public class IdentifyFileTest
   public Object[][] IdentifyFileDP()
   {
     return new Object[][] {
-        { "examples/example.json", "JSON" },
-        { "examples/plantfdx.fa", "FASTA" },
-        { "examples/dna_interleaved.phy", "PHYLIP" },
-        { "examples/2GIS.pdb", "PDB" },
-        { "examples/rf00031_folded.stk", "STH" },
-        { "examples/testdata/test.rnaml", "RNAML" },
-        { "examples/testdata/test.aln", "CLUSTAL" },
-        { "examples/testdata/test.pfam", "PFAM" },
-        { "examples/testdata/test.msf", "MSF" },
-        { "examples/testdata/test.pir", "PIR" },
-        { "examples/testdata/test.html", "HTML" },
-        { "examples/testdata/test.pileup", "PileUp" },
-        { "examples/testdata/test.blc", "BLC" },
-        { "examples/exampleFeatures.txt", IdentifyFile.FeaturesFile },
-        { "examples/testdata/simpleGff3.gff", IdentifyFile.FeaturesFile },
-        { "examples/testdata/test.jvp", "Jalview" },
-        { "examples/testdata/test.cif", "mmCIF" },
+        { "examples/example.json", FileFormat.Json },
+        { "examples/plantfdx.fa", FileFormat.Fasta },
+        { "examples/dna_interleaved.phy", FileFormat.Phylip },
+        { "examples/2GIS.pdb", FileFormat.PDB },
+        { "examples/rf00031_folded.stk", FileFormat.Stockholm },
+        { "examples/testdata/test.rnaml", FileFormat.Rnaml },
+        { "examples/testdata/test.aln", FileFormat.Clustal },
+        { "examples/testdata/test.pfam", FileFormat.Pfam },
+        { "examples/testdata/test.msf", FileFormat.MSF },
+        { "examples/testdata/test.pir", FileFormat.PIR },
+        { "examples/testdata/test.html", FileFormat.Html },
+        { "examples/testdata/test.pileup", FileFormat.Pileup },
+        { "examples/testdata/test.blc", FileFormat.BLC },
+        { "examples/exampleFeatures.txt", FileFormat.Features },
+        { "examples/testdata/simpleGff3.gff", FileFormat.Features },
+        { "examples/testdata/test.jvp", FileFormat.Jalview },
+        { "examples/testdata/test.cif", FileFormat.MMCif },
         {
             "examples/testdata/cullpdb_pc25_res3.0_R0.3_d150729_chains9361.fasta.15316",
-            "FASTA" },
+            FileFormat.Fasta },
 
     // { "examples/testdata/test.amsa", "AMSA" },
     // { "examples/test.jnet", "JnetFile" },