removed Iterator usage.
[jalview.git] / src / jalview / io / AlignFile.java
index 04ddff3..f115361 100755 (executable)
 /*\r
-* Jalview - A Sequence Alignment Editor and Viewer\r
-* Copyright (C) 2005 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
+ * 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
 import java.io.*;\r
-\r
 import java.util.*;\r
 \r
+import jalview.datamodel.*;\r
 \r
-public abstract class AlignFile extends FileParse {\r
-    int noSeqs = 0;\r
-    int maxLength = 0;\r
-    Vector seqs;\r
-    Vector headers;\r
-    long start;\r
-    long end;\r
-\r
-    public AlignFile() {\r
-    }\r
-\r
-    public AlignFile(String inStr) {\r
-        initData();\r
-        System.out.println("is this ever called??");\r
-\r
-        try {\r
-            parse();\r
-        } catch (Exception ex) {\r
-        }\r
-    }\r
-\r
-    /**\r
-     * Constructor which parses the data from a file of some specified type.\r
-     * @param inFile Filename to read from.\r
-     * @param type   What type of file to read from (File, URL)\r
-     */\r
-    public AlignFile(String inFile, String type) throws IOException {\r
-        super(inFile, type);\r
-\r
-        initData();\r
-\r
-        parse();\r
-    }\r
-\r
-    /**\r
-     * Return the seqs Vector\r
-     */\r
-    public Vector getSeqs() {\r
-        return seqs;\r
+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public abstract class AlignFile\r
+    extends FileParse\r
+{\r
+  int noSeqs = 0;\r
+  int maxLength = 0;\r
+  Vector seqs;\r
+  Vector annotations;\r
+  long start;\r
+  long end;\r
+  boolean jvSuffix = true;\r
+\r
+  /**\r
+   * Creates a new AlignFile object.\r
+   */\r
+  public AlignFile()\r
+  {\r
+  }\r
+\r
+  /**\r
+   * Constructor which parses the data from a file of some specified type.\r
+   * @param inFile Filename to read from.\r
+   * @param type   What type of file to read from (File, URL)\r
+   */\r
+  public AlignFile(String inFile, String type)\r
+      throws IOException\r
+  {\r
+    super(inFile, type);\r
+\r
+    initData();\r
+\r
+    parse();\r
+  }\r
+\r
+  /**\r
+   * Return the seqs Vector\r
+   */\r
+  public Vector getSeqs()\r
+  {\r
+    return seqs;\r
+  }\r
+\r
+  /**\r
+   * Return the Sequences in the seqs Vector as an array of Sequences\r
+   */\r
+  public SequenceI[] getSeqsAsArray()\r
+  {\r
+    SequenceI[] s = new SequenceI[seqs.size()];\r
+\r
+    for (int i = 0; i < seqs.size(); i++)\r
+    {\r
+      s[i] = (SequenceI) seqs.elementAt(i);\r
     }\r
 \r
-    /**\r
-     * Return the Sequences in the seqs Vector as an array of Sequences\r
-     */\r
-    public SequenceI[] getSeqsAsArray() {\r
-        SequenceI[] s = new SequenceI[seqs.size()];\r
-\r
-        for (int i = 0; i < seqs.size(); i++) {\r
-            s[i] = (SequenceI) seqs.elementAt(i);\r
-        }\r
+    return s;\r
+  }\r
 \r
-        return s;\r
+  public void addAnnotations(Alignment al)\r
+  {\r
+    for (int i = 0; i < annotations.size(); i++)\r
+    {\r
+      al.addAnnotation(\r
+          (AlignmentAnnotation) annotations.elementAt(i)\r
+          );\r
     }\r
 \r
-    /**\r
-     * Initialise objects to store sequence data in.\r
-     */\r
-    protected void initData() {\r
-        seqs = new Vector();\r
-        headers = new Vector();\r
+  }\r
+\r
+  /**\r
+   * Initialise objects to store sequence data in.\r
+   */\r
+  protected void initData()\r
+  {\r
+    seqs = new Vector();\r
+    annotations = new Vector();\r
+  }\r
+\r
+  /**\r
+   * DOCUMENT ME!\r
+   *\r
+   * @param s DOCUMENT ME!\r
+   */\r
+  protected void setSeqs(SequenceI[] s)\r
+  {\r
+    seqs = new Vector();\r
+\r
+    for (int i = 0; i < s.length; i++)\r
+    {\r
+      seqs.addElement(s[i]);\r
     }\r
-\r
-    protected void setSeqs(SequenceI[] s) {\r
-        seqs = new Vector();\r
-\r
-        for (int i = 0; i < s.length; i++) {\r
-            seqs.addElement(s[i]);\r
-        }\r
+  }\r
+\r
+  /**\r
+   * This method must be implemented to parse the contents of the file.\r
+   */\r
+  public abstract void parse()\r
+      throws IOException;\r
+\r
+  /**\r
+   * Print out in alignment file format the Sequences in the seqs Vector.\r
+   */\r
+  public abstract String print();\r
+\r
+  public void addJVSuffix(boolean b)\r
+  {\r
+    jvSuffix = b;\r
+  }\r
+\r
+  /**\r
+   * A general parser for ids.\r
+   *\r
+   * @String id Id to be parsed\r
+   */\r
+  Sequence parseId(String id)\r
+  {\r
+    Sequence seq = null;\r
+    id = id.trim();\r
+    int space = id.indexOf(" ");\r
+    if (space > -1)\r
+    {\r
+      seq = new Sequence(id.substring(0, space), "");\r
+      seq.setDescription(id.substring(space + 1));\r
     }\r
-\r
-    // Checks whether sequence is valid aa characters\r
-    protected boolean isValidProteinSequence(String sequence) {\r
-        for (int i = 0; i < sequence.length(); i++)\r
-            if (!jalview.schemes.ResidueProperties.aaHash.containsKey(\r
-                        String.valueOf(sequence.charAt(i)))) {\r
-                return false;\r
-            }\r
-\r
-        return true;\r
+    else\r
+    {\r
+      seq = new Sequence(id, "");\r
     }\r
 \r
-    /**\r
-     * This method must be implemented to parse the contents of the file.\r
-     */\r
-    public abstract void parse() throws IOException;\r
+    return seq;\r
+  }\r
+\r
+  /**\r
+   * Creates the output id.\r
+   * Adds prefix Uniprot format source|id\r
+   * And suffix Jalview /start-end\r
+   *\r
+   * @String id Id to be parsed\r
+   */\r
+  String printId(SequenceI seq)\r
+  {\r
+    return seq.getDisplayId(jvSuffix);\r
+  }\r
 \r
-    /**\r
-     * Print out in alignment file format the Sequences in the seqs Vector.\r
-     */\r
-    public abstract String print();\r
 }\r