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