Formatting changes
[jalview.git] / src / jalview / io / AlignFile.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 package jalview.io;\r
20 \r
21 import jalview.datamodel.*;\r
22 \r
23 import java.io.*;\r
24 \r
25 import java.util.*;\r
26 \r
27 \r
28 /**\r
29  * DOCUMENT ME!\r
30  *\r
31  * @author $author$\r
32  * @version $Revision$\r
33  */\r
34 public abstract class AlignFile extends FileParse\r
35 {\r
36     int noSeqs = 0;\r
37     int maxLength = 0;\r
38     Vector seqs;\r
39     Vector headers;\r
40     long start;\r
41     long end;\r
42 \r
43     /**\r
44      * Creates a new AlignFile object.\r
45      */\r
46     public AlignFile()\r
47     {\r
48     }\r
49 \r
50     /**\r
51      * Creates a new AlignFile object.\r
52      *\r
53      * @param inStr DOCUMENT ME!\r
54      */\r
55     public AlignFile(String inStr)\r
56     {\r
57         initData();\r
58         System.out.println("is this ever called??");\r
59 \r
60         try\r
61         {\r
62             parse();\r
63         }\r
64         catch (Exception ex)\r
65         {\r
66         }\r
67     }\r
68 \r
69     /**\r
70      * Constructor which parses the data from a file of some specified type.\r
71      * @param inFile Filename to read from.\r
72      * @param type   What type of file to read from (File, URL)\r
73      */\r
74     public AlignFile(String inFile, String type) throws IOException\r
75     {\r
76         super(inFile, type);\r
77 \r
78         initData();\r
79 \r
80         parse();\r
81     }\r
82 \r
83     /**\r
84      * Return the seqs Vector\r
85      */\r
86     public Vector getSeqs()\r
87     {\r
88         return seqs;\r
89     }\r
90 \r
91     /**\r
92      * Return the Sequences in the seqs Vector as an array of Sequences\r
93      */\r
94     public SequenceI[] getSeqsAsArray()\r
95     {\r
96         SequenceI[] s = new SequenceI[seqs.size()];\r
97 \r
98         for (int i = 0; i < seqs.size(); i++)\r
99         {\r
100             s[i] = (SequenceI) seqs.elementAt(i);\r
101         }\r
102 \r
103         return s;\r
104     }\r
105 \r
106     /**\r
107      * Initialise objects to store sequence data in.\r
108      */\r
109     protected void initData()\r
110     {\r
111         seqs = new Vector();\r
112         headers = new Vector();\r
113     }\r
114 \r
115     /**\r
116      * DOCUMENT ME!\r
117      *\r
118      * @param s DOCUMENT ME!\r
119      */\r
120     protected void setSeqs(SequenceI[] s)\r
121     {\r
122         seqs = new Vector();\r
123 \r
124         for (int i = 0; i < s.length; i++)\r
125         {\r
126             seqs.addElement(s[i]);\r
127         }\r
128     }\r
129 \r
130     // Checks whether sequence is valid aa characters\r
131     protected boolean isValidProteinSequence(String sequence)\r
132     {\r
133         for (int i = 0; i < sequence.length(); i++)\r
134             if (!jalview.schemes.ResidueProperties.aaHash.containsKey(\r
135                         String.valueOf(sequence.charAt(i))))\r
136             {\r
137                 return false;\r
138             }\r
139 \r
140         return true;\r
141     }\r
142 \r
143     /**\r
144      * This method must be implemented to parse the contents of the file.\r
145      */\r
146     public abstract void parse() throws IOException;\r
147 \r
148     /**\r
149      * Print out in alignment file format the Sequences in the seqs Vector.\r
150      */\r
151     public abstract String print();\r
152 }\r