0354f35746962b824e7239c8e4be8e10b9a799a6
[jalview.git] / src / jalview / io / AppletFormatAdapter.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.util.Vector;\r
24 \r
25 \r
26     /**\r
27      * DOCUMENT ME!\r
28      *\r
29      * @author $author$\r
30      * @version $Revision$\r
31      */\r
32     public class AppletFormatAdapter\r
33     {\r
34         /** DOCUMENT ME!! */\r
35         public static final Vector formats = new Vector();\r
36 \r
37         static\r
38         {\r
39             formats.addElement("BLC");\r
40             formats.addElement("CLUSTAL");\r
41             formats.addElement("FASTA");\r
42             formats.addElement("MSF");\r
43             formats.addElement("PileUp");\r
44             formats.addElement("PIR");\r
45             formats.addElement("PFAM");\r
46         }\r
47 \r
48         AlignFile afile = null;\r
49 \r
50         /**\r
51          * DOCUMENT ME!\r
52          *\r
53          * @param inFile DOCUMENT ME!\r
54          * @param type DOCUMENT ME!\r
55          * @param format DOCUMENT ME!\r
56          *\r
57          * @return DOCUMENT ME!\r
58          */\r
59         public SequenceI[] readFile(String inFile, String type, String format)\r
60         {\r
61             try\r
62             {\r
63                 if (format.equals("FASTA"))\r
64                 {\r
65                     afile = new FastaFile(inFile, type);\r
66                 }\r
67                 else if (format.equals("MSF"))\r
68                 {\r
69                     afile = new MSFfile(inFile, type);\r
70                 }\r
71                 else if (format.equals("PileUp"))\r
72                 {\r
73                     afile = new PileUpfile(inFile, type);\r
74                 }\r
75                 else if (format.equals("CLUSTAL"))\r
76                 {\r
77                     afile = new ClustalFile(inFile, type);\r
78                 }\r
79                 else if (format.equals("BLC"))\r
80                 {\r
81                     afile = new BLCFile(inFile, type);\r
82                 }\r
83                 else if (format.equals("PIR"))\r
84                 {\r
85                     afile = new PIRFile(inFile, type);\r
86                 }\r
87                 else if (format.equals("PFAM"))\r
88                 {\r
89                     afile = new PfamFile(inFile, type);\r
90                 }\r
91 \r
92                 return afile.getSeqsAsArray();\r
93             }\r
94             catch (Exception e)\r
95             {\r
96               System.err.println("Failed to read alignment using the '" + format +\r
97                                  "' reader.\n"+e);\r
98 \r
99               // Finally test if the user has pasted just the sequence, no id\r
100               if(type.equalsIgnoreCase("Paste"))\r
101               {\r
102                 try{\r
103                   // Possible sequence is just residues with no label\r
104                   afile = new FastaFile(">UNKNOWN\n" + inFile, "Paste");\r
105                   return afile.getSeqsAsArray();\r
106                 }catch(Exception ex)\r
107                 {\r
108                   System.err.println("Failed to read alignment using the 'FASTA' reader.\n"+e);\r
109                   ex.printStackTrace();\r
110                 }\r
111 \r
112               }\r
113             }\r
114 \r
115             return null;\r
116         }\r
117 \r
118 \r
119         /**\r
120          * DOCUMENT ME!\r
121          *\r
122          * @param format DOCUMENT ME!\r
123          * @param seqs DOCUMENT ME!\r
124          *\r
125          * @return DOCUMENT ME!\r
126          */\r
127         public String formatSequences(String format,\r
128                                       Vector seqs,\r
129                                       boolean dbref,\r
130                                       boolean jvsuffix)\r
131         {\r
132             SequenceI[] s = new SequenceI[seqs.size()];\r
133 \r
134             for (int i = 0; i < seqs.size(); i++)\r
135                 s[i] = (SequenceI) seqs.elementAt(i);\r
136 \r
137             try\r
138             {\r
139                 AlignFile afile = null;\r
140 \r
141                 if (format.equalsIgnoreCase("FASTA"))\r
142                 {\r
143                     afile = new FastaFile();\r
144                 }\r
145                 else if (format.equalsIgnoreCase("MSF"))\r
146                 {\r
147                     afile = new MSFfile();\r
148                 }\r
149                 else if (format.equalsIgnoreCase("PileUp"))\r
150                 {\r
151                     afile = new PileUpfile();\r
152                 }\r
153                 else if (format.equalsIgnoreCase("CLUSTAL"))\r
154                 {\r
155                     afile = new ClustalFile();\r
156                 }\r
157                 else if (format.equalsIgnoreCase("BLC"))\r
158                 {\r
159                     afile = new BLCFile();\r
160                 }\r
161                 else if (format.equalsIgnoreCase("PIR"))\r
162                 {\r
163                     afile = new PIRFile();\r
164                 }\r
165                 else if (format.equalsIgnoreCase("PFAM"))\r
166                 {\r
167                     afile = new PfamFile();\r
168                 }\r
169 \r
170                 afile.addDBPrefix(dbref);\r
171                 afile.addJVSuffix(jvsuffix);\r
172 \r
173                 afile.setSeqs(s);\r
174 \r
175                 return afile.print();\r
176             }\r
177             catch (Exception e)\r
178             {\r
179                 System.err.println("Failed to write alignment as a '" + format +\r
180                     "' file\n");\r
181                 e.printStackTrace();\r
182             }\r
183 \r
184             return null;\r
185         }\r
186     }\r