0dfef6a12b30ee2cf4a087c3b3c11ced4c3aabc6
[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 \r
20 package jalview.io;\r
21 \r
22 import jalview.datamodel.*;\r
23 \r
24 import java.io.*;\r
25 import java.util.*;\r
26 \r
27 public abstract class AlignFile extends FileParse {\r
28   int noSeqs    = 0;\r
29   int maxLength = 0;\r
30 \r
31   Vector    seqs;\r
32   Vector    headers;\r
33 \r
34   long start;\r
35   long end;\r
36 \r
37   public AlignFile()\r
38   {}\r
39 \r
40   public AlignFile(String inStr) {\r
41     initData();\r
42 System.out.println("is this ever called??");\r
43     try{\r
44       parse();\r
45     }catch(Exception ex){}\r
46   }\r
47 \r
48 /**\r
49  * Constructor which parses the data from a file of some specified type.\r
50  * @param inFile Filename to read from.\r
51  * @param type   What type of file to read from (File, URL)\r
52  */\r
53   public AlignFile(String inFile, String type) throws IOException {\r
54     super(inFile,type);\r
55 \r
56     initData();\r
57 \r
58     parse();\r
59 \r
60   }\r
61 \r
62 /**\r
63  * Return the seqs Vector\r
64  */\r
65   public Vector getSeqs() {\r
66     return seqs;\r
67   }\r
68 \r
69 /**\r
70  * Return the Sequences in the seqs Vector as an array of Sequences\r
71  */\r
72   public SequenceI [] getSeqsAsArray() {\r
73     SequenceI [] s = new SequenceI[seqs.size()];\r
74     for (int i=0;i < seqs.size();i++) {\r
75       s[i] = (SequenceI)seqs.elementAt(i);\r
76     }\r
77     return s;\r
78   }\r
79 \r
80 \r
81 /**\r
82  * Initialise objects to store sequence data in.\r
83  */\r
84   protected void initData() {\r
85     seqs    = new Vector();\r
86     headers = new Vector();\r
87   }\r
88 \r
89   protected void setSeqs(SequenceI [] s) {\r
90     seqs = new Vector();\r
91     for (int i=0; i<s.length; i++) {\r
92       seqs.addElement(s[i]);\r
93     }\r
94   }\r
95 \r
96   // Checks whether sequence is valid aa characters\r
97   protected boolean isValidProteinSequence(String sequence)\r
98   {\r
99     for (int i = 0; i < sequence.length(); i++)\r
100       if (!jalview.schemes.ResidueProperties.aaHash.containsKey(String.valueOf(sequence.charAt(i))))\r
101         return false;\r
102 \r
103     return true;\r
104   }\r
105 \r
106 \r
107 /**\r
108  * This method must be implemented to parse the contents of the file.\r
109  */\r
110   public abstract void parse() throws IOException;\r
111 \r
112 \r
113 /**\r
114  * Print out in alignment file format the Sequences in the seqs Vector.\r
115  */\r
116   public abstract String print();\r
117 }\r