FileFormatI further tweaks, clean compile
[jalview.git] / src / jalview / io / FileFormat.java
index bca365f..770f762 100644 (file)
@@ -1,15 +1,18 @@
 package jalview.io;
 
+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,
@@ -53,7 +56,7 @@ public enum FileFormat implements FileFormatI
       return new PfamFile();
     }
   },
-  Stockholm("STH", "sto,stk", true, true)
+  Stockholm("Stockholm", "sto,stk", true, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -117,6 +120,28 @@ public enum FileFormat implements FileFormatI
       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()
+    {
+      return new BLCFile();
+    }
+  },
   Html("HTML", "html", true, false)
   {
     @Override
@@ -192,7 +217,7 @@ public enum FileFormat implements FileFormatI
     }
 
   },
-  Pileup("PileUp", "?", false, false)
+  Pileup("PileUp", "pileup", false, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -234,7 +259,7 @@ public enum FileFormat implements FileFormatI
     }
 
   },
-  Clustal("CLUSTAL", "aln", true, true)
+  Clustal("Clustal", "aln", true, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -334,13 +359,13 @@ public enum FileFormat implements FileFormatI
     {
       // TODO obtain config value from preference settings.
       // Set value to 'true' to test PDB processing with Jmol: JAL-1213
-      boolean isParseWithJMOL = !StructureImportSettings
-              .getCurrentDefaultFormat().equalsIgnoreCase("PDB");
+      boolean isParseWithJMOL = StructureImportSettings
+              .getDefaultStructureFileFormat() != PDBEntry.Type.PDB;
       if (isParseWithJMOL)
       {
         return new JmolParser(
                 StructureImportSettings.isVisibleChainAnnotation(),
-                StructureImportSettings.isPredictSecondaryStructure(),
+                StructureImportSettings.isProcessSecondaryStructure(),
                 StructureImportSettings.isExternalSecondaryStructure(),
                 inFile,
                 sourceType);
@@ -350,7 +375,7 @@ public enum FileFormat implements FileFormatI
         StructureImportSettings.setShowSeqFeatures(true);
         return new MCview.PDBfile(
                 StructureImportSettings.isVisibleChainAnnotation(),
-                StructureImportSettings.isPredictSecondaryStructure(),
+                StructureImportSettings.isProcessSecondaryStructure(),
                 StructureImportSettings.isExternalSecondaryStructure(),
                 inFile,
                 sourceType);
@@ -361,13 +386,13 @@ public enum FileFormat implements FileFormatI
     public AlignmentFileI getAlignmentFile(FileParse source)
             throws IOException
     {
-      boolean isParseWithJMOL = !StructureImportSettings
-              .getCurrentDefaultFormat().equalsIgnoreCase("PDB");
+      boolean isParseWithJMOL = StructureImportSettings
+              .getDefaultStructureFileFormat() != PDBEntry.Type.PDB;
       if (isParseWithJMOL)
       {
         return new JmolParser(
                 StructureImportSettings.isVisibleChainAnnotation(),
-                StructureImportSettings.isPredictSecondaryStructure(),
+                StructureImportSettings.isProcessSecondaryStructure(),
                 StructureImportSettings.isExternalSecondaryStructure(),
                 source);
       }
@@ -376,7 +401,7 @@ public enum FileFormat implements FileFormatI
         StructureImportSettings.setShowSeqFeatures(true);
         return new MCview.PDBfile(
                 StructureImportSettings.isVisibleChainAnnotation(),
-                StructureImportSettings.isPredictSecondaryStructure(),
+                StructureImportSettings.isProcessSecondaryStructure(),
                 StructureImportSettings.isExternalSecondaryStructure(),
                 source);
       }
@@ -397,7 +422,7 @@ public enum FileFormat implements FileFormatI
     {
       return new JmolParser(
               StructureImportSettings.isVisibleChainAnnotation(),
-              StructureImportSettings.isPredictSecondaryStructure(),
+              StructureImportSettings.isProcessSecondaryStructure(),
               StructureImportSettings.isExternalSecondaryStructure(),
               inFile, sourceType);
     }
@@ -408,7 +433,7 @@ public enum FileFormat implements FileFormatI
     {
       return new JmolParser(
               StructureImportSettings.isVisibleChainAnnotation(),
-              StructureImportSettings.isPredictSecondaryStructure(),
+              StructureImportSettings.isProcessSecondaryStructure(),
               StructureImportSettings.isExternalSecondaryStructure(),
               source);
     }
@@ -464,6 +489,44 @@ public enum FileFormat implements FileFormatI
 
   private String name;
 
+  /**
+   * Answers a list of writeable file formats (as string, corresponding to the
+   * toString() and forName() methods)
+   * 
+   * @return
+   */
+  public static List<String> getWritableFormats()
+  {
+    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 boolean isComplexAlignFile()
   {
@@ -526,4 +589,10 @@ public enum FileFormat implements FileFormatI
   {
     return extensions;
   }
+
+  @Override
+  public String toString()
+  {
+    return name;
+  }
 }