JAL-2344 added FileFormatI.isStructureFile()
[jalview.git] / src / jalview / io / FileFormat.java
index 770f762..5f441d2 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();
     }
@@ -217,7 +218,7 @@ public enum FileFormat implements FileFormatI
     }
 
   },
-  Pileup("PileUp", "pileup", false, true)
+  Pileup("PileUp", "pileup", true, true)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -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,13 +323,13 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return null; // todo is this called?
     }
 
   },
-  Features("GFF or Jalview features", "gff2,gff3", false, false)
+  Features("GFF or Jalview features", "gff2,gff3", true, false)
   {
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
@@ -345,12 +346,12 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new FeaturesFile();
     }
   },
-  PDB("PDB", "", false, false)
+  PDB("PDB", "pdb,ent", true, false)
   {
 
     @Override
@@ -363,12 +364,7 @@ public enum FileFormat implements FileFormatI
               .getDefaultStructureFileFormat() != PDBEntry.Type.PDB;
       if (isParseWithJMOL)
       {
-        return new JmolParser(
-                StructureImportSettings.isVisibleChainAnnotation(),
-                StructureImportSettings.isProcessSecondaryStructure(),
-                StructureImportSettings.isExternalSecondaryStructure(),
-                inFile,
-                sourceType);
+        return new JmolParser(inFile, sourceType);
       }
       else
       {
@@ -390,11 +386,7 @@ public enum FileFormat implements FileFormatI
               .getDefaultStructureFileFormat() != PDBEntry.Type.PDB;
       if (isParseWithJMOL)
       {
-        return new JmolParser(
-                StructureImportSettings.isVisibleChainAnnotation(),
-                StructureImportSettings.isProcessSecondaryStructure(),
-                StructureImportSettings.isExternalSecondaryStructure(),
-                source);
+        return new JmolParser(source);
       }
       else
       {
@@ -408,43 +400,47 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JmolParser(); // todo or null?
     }
+
+    @Override
+    public boolean isStructureFile()
+    {
+      return true;
+    }
   },
-  MMCif("mmCIF", "cif", false, false)
+  MMCif("mmCIF", "cif", true, false)
   {
 
     @Override
     public AlignmentFileI getAlignmentFile(String inFile,
             DataSourceType sourceType) throws IOException
     {
-      return new JmolParser(
-              StructureImportSettings.isVisibleChainAnnotation(),
-              StructureImportSettings.isProcessSecondaryStructure(),
-              StructureImportSettings.isExternalSecondaryStructure(),
-              inFile, sourceType);
+      return new JmolParser(inFile, sourceType);
     }
 
     @Override
     public AlignmentFileI getAlignmentFile(FileParse source)
             throws IOException
     {
-      return new JmolParser(
-              StructureImportSettings.isVisibleChainAnnotation(),
-              StructureImportSettings.isProcessSecondaryStructure(),
-              StructureImportSettings.isExternalSecondaryStructure(),
-              source);
+      return new JmolParser(source);
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return new JmolParser(); // todo or null?
     }
+
+    @Override
+    public boolean isStructureFile()
+    {
+      return true;
+    }
   },
-  Jalview("Jalview", "jar,jvp", true, false)
+  Jalview("Jalview", "jar,jvp", true, true)
   {
 
     @Override
@@ -462,10 +458,16 @@ public enum FileFormat implements FileFormatI
     }
 
     @Override
-    public AlignmentFileI getAlignmentFile()
+    public AlignmentFileI getAlignmentFile(AlignmentI al)
     {
       return null;
     }
+
+    @Override
+    public boolean isTextFormat()
+    {
+      return false;
+    }
   };
 
   /**
@@ -495,12 +497,12 @@ public enum FileFormat implements FileFormatI
    * 
    * @return
    */
-  public static List<String> getWritableFormats()
+  public static List<String> getWritableFormats(boolean textOnly)
   {
     List<String> l = new ArrayList<String>();
     for (FileFormatI ff : values())
     {
-      if (ff.isWritable())
+      if (ff.isWritable() && (!textOnly || ff.isTextFormat()))
       {
         l.add(ff.toString());
       }
@@ -533,12 +535,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 +591,22 @@ public enum FileFormat implements FileFormatI
   {
     return name;
   }
+
+  @Override
+  public AlignmentFileI getAlignmentFile()
+  {
+    return getAlignmentFile((AlignmentI) null);
+  }
+
+  @Override
+  public boolean isTextFormat()
+  {
+    return true;
+  }
+
+  @Override
+  public boolean isStructureFile()
+  {
+    return false;
+  }
 }