Further tweaks to get tests passing
[jalview.git] / src / jalview / io / FileFormat.java
index a7113f6..a43bc22 100644 (file)
@@ -1,16 +1,19 @@
 package jalview.io;
 
+import jalview.datamodel.AlignmentI;
 import jalview.datamodel.PDBEntry;
 import jalview.ext.jmol.JmolParser;
 import jalview.structure.StructureImportSettings;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 public enum FileFormat implements FileFormatI
 {
-  Fasta("FASTA", "fa, fasta, mfa, fastq", true, true)
+  Fasta("Fasta", "fa, fasta, mfa, fastq", true, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -27,7 +30,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new FastaFile();
     }
@@ -49,12 +52,12 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PfamFile();
     }
   },
-  Stockholm("STH", "sto,stk", true, true)
+  Stockholm("Stockholm", "sto,stk", true, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -70,9 +73,9 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
-      return new StockholmFile();
+      return new StockholmFile(al);
     }
 
   },
@@ -93,7 +96,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PIRFile();
     }
@@ -113,11 +116,33 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new BLCFile();
     }
   },
+  AMSA("AMSA", "amsa", true, true)
+  {
+    @Override
+    public AlignmentFileI getAlignmentFile(String inFile,
+            DataSourceType sourceType) throws IOException
+    {
+      return new AMSAFile(inFile, sourceType);
+    }
+
+    @Override
+    public AlignmentFileI getAlignmentFile(FileParse source)
+            throws IOException
+    {
+      return new AMSAFile(source);
+    }
+
+    @Override
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
+    {
+      return new AMSAFile(al);
+    }
+  },
   Html("HTML", "html", true, false)
   {
     @Override
@@ -133,7 +158,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new HtmlFile();
     }
@@ -160,7 +185,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new RnamlFile();
     }
@@ -181,7 +206,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JSONFile();
     }
@@ -193,7 +218,7 @@ public enum FileFormat implements FileFormatI
     }
 
   },
-  Pileup("PileUp", "?", false, false)
+  Pileup("PileUp", "pileup", false, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -208,7 +233,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PileUpfile();
     }
@@ -229,13 +254,13 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new MSFfile();
     }
 
   },
-  Clustal("CLUSTAL", "aln", true, true)
+  Clustal("Clustal", "aln", true, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -250,7 +275,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new ClustalFile();
     }
@@ -272,7 +297,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new PhylipFile();
     }
@@ -298,7 +323,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return null; // todo is this called?
     }
@@ -321,7 +346,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new FeaturesFile();
     }
@@ -384,7 +409,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JmolParser(); // todo or null?
     }
@@ -415,7 +440,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JmolParser(); // todo or null?
     }
@@ -438,7 +463,7 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return null;
     }
@@ -465,16 +490,48 @@ public enum FileFormat implements FileFormatI
 
   private String name;
 
-  @Override
-  public boolean isComplexAlignFile()
+  /**
+   * Answers a list of writeable file formats (as string, corresponding to the
+   * toString() and forName() methods)
+   * 
+   * @return
+   */
+  public static List<String> getWritableFormats()
   {
-    return false;
+    List<String> l = new ArrayList<String>();
+    for (FileFormatI ff : values())
+    {
+      if (ff.isWritable())
+      {
+        l.add(ff.toString());
+      }
+    }
+    return l;
+  }
+
+  /**
+   * Answers a list of readable file formats (as string, corresponding to the
+   * toString() and forName() methods)
+   * 
+   * @return
+   */
+  public static List<String> getReadableFormats()
+  {
+    List<String> l = new ArrayList<String>();
+    for (FileFormatI ff : values())
+    {
+      if (ff.isReadable())
+      {
+        l.add(ff.toString());
+      }
+    }
+    return l;
   }
 
   @Override
-  public String getShortDescription()
+  public boolean isComplexAlignFile()
   {
-    return toString();
+    return false;
   }
 
   /**
@@ -527,4 +584,16 @@ public enum FileFormat implements FileFormatI
   {
     return extensions;
   }
+
+  @Override
+  public String toString()
+  {
+    return name;
+  }
+
+  @Override
+  public AlignmentFileI getAlignmentFile()
+  {
+    return getAlignmentFile((AlignmentI) null);
+  }
 }