Formatting
[jalview.git] / src / jalview / io / AppletFormatAdapter.java
index 2e4ddc4..e4475ab 100755 (executable)
-    /*\r
-    * Jalview - A Sequence Alignment Editor and Viewer\r
-    * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
-    *\r
-    * This program is free software; you can redistribute it and/or\r
-    * modify it under the terms of the GNU General Public License\r
-    * as published by the Free Software Foundation; either version 2\r
-    * of the License, or (at your option) any later version.\r
-    *\r
-    * This program is distributed in the hope that it will be useful,\r
-    * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-    * GNU General Public License for more details.\r
-    *\r
-    * You should have received a copy of the GNU General Public License\r
-    * along with this program; if not, write to the Free Software\r
-    * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
-    */\r
-    package jalview.io;\r
-\r
-    import jalview.datamodel.*;\r
-\r
-    /**\r
-     * DOCUMENT ME!\r
-     *\r
-     * @author $author$\r
-     * @version $Revision$\r
-     */\r
-    public class AppletFormatAdapter\r
+/*\r
+ * Jalview - A Sequence Alignment Editor and Viewer\r
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ *\r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 2\r
+ * of the License, or (at your option) any later version.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program; if not, write to the Free Software\r
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
+ */\r
+package jalview.io;\r
+\r
+import jalview.datamodel.*;\r
+\r
+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public class AppletFormatAdapter\r
+{\r
+  /** DOCUMENT ME!! */\r
+  public static final String[] READABLE_FORMATS = new String[]\r
+      {\r
+      "BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB"\r
+  };\r
+\r
+  public static final String[] WRITEABLE_FORMATS = new String[]\r
+      {\r
+      "BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM" //, "AMSA"\r
+  };\r
+\r
+  public static String INVALID_CHARACTERS = "Contains invalid characters";\r
+\r
+  public static String SUPPORTED_FORMATS = "Formats currently supported are\n" +\r
+      "Fasta, MSF, Clustal, BLC, PIR, MSP, and PFAM";\r
+\r
+  public static String FILE = "File";\r
+  public static String URL = "URL";\r
+  public static String PASTE = "Paste";\r
+  public static String CLASSLOADER = "ClassLoader";\r
+\r
+  AlignFile afile = null;\r
+  String inFile;\r
+\r
+  public static final boolean isValidFormat(String format)\r
+  {\r
+    boolean valid = false;\r
+    for (int i = 0; i < READABLE_FORMATS.length; i++)\r
     {\r
-        /** DOCUMENT ME!! */\r
-        public static final String [] READABLE_FORMATS = new String[]\r
-        {\r
-            "BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB"\r
-        };\r
-\r
-        public static final String [] WRITEABLE_FORMATS = new String[]\r
-        {\r
-            "BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM"  //, "AMSA"\r
-        };\r
-\r
-\r
-        public static String INVALID_CHARACTERS = "Contains invalid characters";\r
-\r
-        public static String SUPPORTED_FORMATS = "Formats currently supported are\n" +\r
-                                                 "Fasta, MSF, Clustal, BLC, PIR, MSP, and PFAM";\r
-\r
-\r
-        public static String FILE = "File";\r
-        public static String URL = "URL";\r
-        public static String PASTE = "Paste";\r
-        public static String CLASSLOADER = "ClassLoader";\r
-\r
-\r
-        AlignFile afile = null;\r
-        String inFile;\r
+      if (READABLE_FORMATS[i].equalsIgnoreCase(format))\r
+      {\r
+        return true;\r
+      }\r
+    }\r
 \r
-        public static final boolean isValidFormat(String format)\r
+    return valid;\r
+  }\r
+\r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param inFile DOCUMENT ME!\r
+   * @param type DOCUMENT ME!\r
+   * @param format DOCUMENT ME!\r
+   *\r
+   * @return DOCUMENT ME!\r
+   */\r
+  public Alignment readFile(String inFile, String type, String format)\r
+      throws java.io.IOException\r
+  {\r
+    this.inFile = inFile;\r
+    try\r
+    {\r
+      if (format.equals("FASTA"))\r
+      {\r
+        afile = new FastaFile(inFile, type);\r
+      }\r
+      else if (format.equals("MSF"))\r
+      {\r
+        afile = new MSFfile(inFile, type);\r
+      }\r
+      else if (format.equals("PileUp"))\r
+      {\r
+        afile = new PileUpfile(inFile, type);\r
+      }\r
+      else if (format.equals("CLUSTAL"))\r
+      {\r
+        afile = new ClustalFile(inFile, type);\r
+      }\r
+      else if (format.equals("BLC"))\r
+      {\r
+        afile = new BLCFile(inFile, type);\r
+      }\r
+      else if (format.equals("PIR"))\r
+      {\r
+        afile = new PIRFile(inFile, type);\r
+      }\r
+      else if (format.equals("PFAM"))\r
+      {\r
+        afile = new PfamFile(inFile, type);\r
+      }\r
+      else if (format.equals("JnetFile"))\r
+      {\r
+        afile = new JPredFile(inFile, type);\r
+        ( (JPredFile) afile).removeNonSequences();\r
+      }\r
+      else if (format.equals("PDB"))\r
+      {\r
+        afile = new MCview.PDBfile(inFile, type);\r
+      }\r
+      else if (format.equals("STH"))\r
+      {\r
+        afile = new StockholmFile(inFile, type);\r
+      }\r
+\r
+      Alignment al = new Alignment(afile.getSeqsAsArray());\r
+\r
+      afile.addAnnotations(al);\r
+\r
+      return al;\r
+    }\r
+    catch (Exception e)\r
+    {\r
+      e.printStackTrace();\r
+      System.err.println("Failed to read alignment using the '" + format +\r
+                         "' reader.\n" + e);\r
+\r
+      if (e.getMessage() != null &&\r
+          e.getMessage().startsWith(INVALID_CHARACTERS))\r
+      {\r
+        throw new java.io.IOException(e.getMessage());\r
+      }\r
+\r
+      // Finally test if the user has pasted just the sequence, no id\r
+      if (type.equalsIgnoreCase("Paste"))\r
+      {\r
+        try\r
         {\r
-          boolean valid = false;\r
-          for(int i=0; i<READABLE_FORMATS.length; i++)\r
-            if(READABLE_FORMATS[i].equalsIgnoreCase(format))\r
-              return true;\r
+          // Possible sequence is just residues with no label\r
+          afile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");\r
+          Alignment al = new Alignment(afile.getSeqsAsArray());\r
+          afile.addAnnotations(al);\r
+          return al;\r
 \r
-          return valid;\r
         }\r
-\r
-        /**\r
-         * DOCUMENT ME!\r
-         *\r
-         * @param inFile DOCUMENT ME!\r
-         * @param type DOCUMENT ME!\r
-         * @param format DOCUMENT ME!\r
-         *\r
-         * @return DOCUMENT ME!\r
-         */\r
-        public Alignment readFile(String inFile, String type, String format)\r
-            throws java.io.IOException\r
+        catch (Exception ex)\r
         {\r
-            this.inFile = inFile;\r
-            try\r
-            {\r
-              if (format.equals("FASTA"))\r
-              {\r
-                afile = new FastaFile(inFile, type);\r
-              }\r
-              else if (format.equals("MSF"))\r
-              {\r
-                afile = new MSFfile(inFile, type);\r
-              }\r
-              else if (format.equals("PileUp"))\r
-              {\r
-                afile = new PileUpfile(inFile, type);\r
-              }\r
-              else if (format.equals("CLUSTAL"))\r
-              {\r
-                afile = new ClustalFile(inFile, type);\r
-              }\r
-              else if (format.equals("BLC"))\r
-              {\r
-                afile = new BLCFile(inFile, type);\r
-              }\r
-              else if (format.equals("PIR"))\r
-              {\r
-                afile = new PIRFile(inFile, type);\r
-              }\r
-              else if (format.equals("PFAM"))\r
-              {\r
-                afile = new PfamFile(inFile, type);\r
-              }\r
-              else if (format.equals("JnetFile"))\r
-              {\r
-                afile = new JPredFile(inFile, type);\r
-                ( (JPredFile) afile).removeNonSequences();\r
-              }\r
-              else if (format.equals("PDB"))\r
-              {\r
-                afile = new MCview.PDBfile(inFile, type);\r
-              }\r
-              else if (format.equals("STH"))\r
-              {\r
-                afile = new StockholmFile(inFile, type);\r
-              }\r
-\r
-              Alignment al = new Alignment(afile.getSeqsAsArray());\r
-\r
-              afile.addAnnotations(al);\r
-\r
-              return al;\r
-            }\r
-            catch (Exception e)\r
-            {\r
-              e.printStackTrace();\r
-              System.err.println("Failed to read alignment using the '" + format +\r
-                                 "' reader.\n"+e);\r
-\r
-              if(e.getMessage()!=null && e.getMessage().startsWith(INVALID_CHARACTERS))\r
-                throw new java.io.IOException(e.getMessage());\r
-\r
-              // Finally test if the user has pasted just the sequence, no id\r
-              if(type.equalsIgnoreCase("Paste"))\r
-              {\r
-                try{\r
-                  // Possible sequence is just residues with no label\r
-                  afile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");\r
-                  Alignment al = new Alignment(afile.getSeqsAsArray());\r
-                  afile.addAnnotations(al);\r
-                  return al;\r
-\r
-                }\r
-                catch(Exception ex)\r
-                {\r
-                  if(ex.toString().startsWith(INVALID_CHARACTERS))\r
-                    throw new java.io.IOException(e.getMessage());\r
-\r
-                  ex.printStackTrace();\r
-                }\r
-              }\r
-\r
-              // If we get to this stage, the format was not supported\r
-              throw new java.io.IOException(SUPPORTED_FORMATS);\r
-            }\r
-        }\r
-\r
+          if (ex.toString().startsWith(INVALID_CHARACTERS))\r
+          {\r
+            throw new java.io.IOException(e.getMessage());\r
+          }\r
 \r
-        /**\r
-         * DOCUMENT ME!\r
-         *\r
-         * @param format DOCUMENT ME!\r
-         * @param seqs DOCUMENT ME!\r
-         *\r
-         * @return DOCUMENT ME!\r
-         */\r
-        public String formatSequences(String format,\r
-                                      AlignmentI alignment,\r
-                                      boolean jvsuffix)\r
-        {\r
-            try\r
-            {\r
-                AlignFile afile = null;\r
-\r
-                if (format.equalsIgnoreCase("FASTA"))\r
-                {\r
-                    afile = new FastaFile();\r
-                }\r
-                else if (format.equalsIgnoreCase("MSF"))\r
-                {\r
-                    afile = new MSFfile();\r
-                }\r
-                else if (format.equalsIgnoreCase("PileUp"))\r
-                {\r
-                    afile = new PileUpfile();\r
-                }\r
-                else if (format.equalsIgnoreCase("CLUSTAL"))\r
-                {\r
-                    afile = new ClustalFile();\r
-                }\r
-                else if (format.equalsIgnoreCase("BLC"))\r
-                {\r
-                    afile = new BLCFile();\r
-                }\r
-                else if (format.equalsIgnoreCase("PIR"))\r
-                {\r
-                    afile = new PIRFile();\r
-                }\r
-                else if (format.equalsIgnoreCase("PFAM"))\r
-                {\r
-                    afile = new PfamFile();\r
-                }\r
-                else if (format.equalsIgnoreCase("STH"))\r
-                {\r
-                  afile = new StockholmFile();\r
-                }\r
-                else if (format.equals("AMSA"))\r
-                {\r
-                  afile = new AMSAFile(alignment);\r
-                }\r
-\r
-                afile.addJVSuffix(jvsuffix);\r
-\r
-                afile.setSeqs( alignment.getSequencesArray() );\r
-\r
-                return afile.print();\r
-            }\r
-            catch (Exception e)\r
-            {\r
-                System.err.println("Failed to write alignment as a '" + format +\r
-                    "' file\n");\r
-                e.printStackTrace();\r
-            }\r
-\r
-            return null;\r
+          ex.printStackTrace();\r
         }\r
+      }\r
+\r
+      // If we get to this stage, the format was not supported\r
+      throw new java.io.IOException(SUPPORTED_FORMATS);\r
+    }\r
+  }\r
+\r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param format DOCUMENT ME!\r
+   * @param seqs DOCUMENT ME!\r
+   *\r
+   * @return DOCUMENT ME!\r
+   */\r
+  public String formatSequences(String format,\r
+                                AlignmentI alignment,\r
+                                boolean jvsuffix)\r
+  {\r
+    try\r
+    {\r
+      AlignFile afile = null;\r
+\r
+      if (format.equalsIgnoreCase("FASTA"))\r
+      {\r
+        afile = new FastaFile();\r
+      }\r
+      else if (format.equalsIgnoreCase("MSF"))\r
+      {\r
+        afile = new MSFfile();\r
+      }\r
+      else if (format.equalsIgnoreCase("PileUp"))\r
+      {\r
+        afile = new PileUpfile();\r
+      }\r
+      else if (format.equalsIgnoreCase("CLUSTAL"))\r
+      {\r
+        afile = new ClustalFile();\r
+      }\r
+      else if (format.equalsIgnoreCase("BLC"))\r
+      {\r
+        afile = new BLCFile();\r
+      }\r
+      else if (format.equalsIgnoreCase("PIR"))\r
+      {\r
+        afile = new PIRFile();\r
+      }\r
+      else if (format.equalsIgnoreCase("PFAM"))\r
+      {\r
+        afile = new PfamFile();\r
+      }\r
+      else if (format.equalsIgnoreCase("STH"))\r
+      {\r
+        afile = new StockholmFile();\r
+      }\r
+      else if (format.equals("AMSA"))\r
+      {\r
+        afile = new AMSAFile(alignment);\r
+      }\r
+\r
+      afile.addJVSuffix(jvsuffix);\r
+\r
+      afile.setSeqs(alignment.getSequencesArray());\r
+\r
+      return afile.print();\r
     }\r
+    catch (Exception e)\r
+    {\r
+      System.err.println("Failed to write alignment as a '" + format +\r
+                         "' file\n");\r
+      e.printStackTrace();\r
+    }\r
+\r
+    return null;\r
+  }\r
+}\r