Formatted source
[jalview.git] / src / jalview / io / IdentifyFile.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 java.io.*;\r
22 \r
23 import java.net.*;\r
24 \r
25 \r
26 public class IdentifyFile {\r
27     public static String Identify(String file, String protocol) {\r
28         String reply = "PFAM";\r
29 \r
30         try {\r
31             BufferedReader reader = null;\r
32 \r
33             if (protocol.equals("File")) {\r
34                 reader = new BufferedReader(new FileReader(file));\r
35             }\r
36             else if (protocol.equals("URL")) {\r
37                 reply = "URL NOT FOUND";\r
38 \r
39                 URL url = new URL(file);\r
40                 reader = new BufferedReader(new InputStreamReader(\r
41                             url.openStream()));\r
42                 reply = "error";\r
43             } else if (protocol.equals("Paste")) {\r
44                 reader = new BufferedReader(new StringReader(file));\r
45             }\r
46 \r
47             String data;\r
48 \r
49             while ((data = reader.readLine()) != null) {\r
50                 data = data.toUpperCase();\r
51 \r
52                 if ((data.indexOf("#") == 0) || (data.length() < 1)) {\r
53                     continue;\r
54                 }\r
55 \r
56                 if (data.indexOf("PILEUP") > -1) {\r
57                     reply = "PileUp";\r
58 \r
59                     break;\r
60                 }\r
61 \r
62                 if ((data.indexOf("//") == 0) ||\r
63                         ((data.indexOf("!!") > -1) &&\r
64                         (data.indexOf("!!") < data.indexOf(\r
65                             "_MULTIPLE_ALIGNMENT ")))) {\r
66                     reply = "MSF";\r
67 \r
68                     break;\r
69                 } else if (data.indexOf("CLUSTAL") > -1) {\r
70                     reply = "CLUSTAL";\r
71 \r
72                     break;\r
73                 } else if ((data.indexOf(">P1;") > -1) ||\r
74                         (data.indexOf(">DL;") > -1)) {\r
75                     reply = "PIR";\r
76 \r
77                     break;\r
78                 } else if (data.indexOf(">") > -1) {\r
79                     // could be BLC file, read next line to confirm\r
80                     data = reader.readLine();\r
81 \r
82                     if (data.indexOf(">") > -1) {\r
83                         reply = "BLC";\r
84                     } else {\r
85                         reply = "FASTA";\r
86                     }\r
87 \r
88                     break;\r
89                 }\r
90             }\r
91 \r
92             reader.close();\r
93         } catch (Exception ex) {\r
94             System.err.println("File Identification failed!\n" + ex);\r
95         }\r
96 \r
97         return reply;\r
98     }\r
99 }\r