identifies more varied blc files
[jalview.git] / src / jalview / io / IdentifyFile.java
1 /********************\r
2  * 2004 Jalview Reengineered\r
3  * Barton Group\r
4  * Dundee University\r
5  *\r
6  * AM Waterhouse\r
7  *******************/\r
8 \r
9 package jalview.io;\r
10 \r
11 import java.io.*;\r
12 import java.net.*;\r
13 \r
14 public class IdentifyFile\r
15 {\r
16   public static String Identify(String file, String protocol)\r
17   {\r
18     String reply = "PFAM";\r
19     try{\r
20 \r
21       BufferedReader reader = null;\r
22 \r
23       if(protocol.equals("File"))\r
24         reader = new BufferedReader(new FileReader(file));\r
25 \r
26       else if (protocol.equals("URL"))\r
27       {\r
28         reply = "URL NOT FOUND";\r
29         URL url = new URL(file);\r
30         reader = new BufferedReader(new InputStreamReader( url.openStream() ) );\r
31         reply = "error";\r
32       }\r
33       else if( protocol.equals("Paste"))\r
34         reader = new BufferedReader( new StringReader(file) );\r
35 \r
36 \r
37       String data;\r
38       while( (data=reader.readLine())!=null)\r
39       {\r
40         data = data.toUpperCase();\r
41         if(data.indexOf("#")==0 || data.length()<1)\r
42           continue;\r
43 \r
44         if(data.indexOf("PILEUP")>-1)\r
45         {\r
46           reply = "MSF";\r
47           break;\r
48         }\r
49         else if(data.indexOf("CLUSTAL")>-1)\r
50         {\r
51           reply = "CLUSTAL";\r
52           break;\r
53         }\r
54         else if(data.indexOf(">P1;")>-1 || data.indexOf(">DL;")>-1)\r
55         {\r
56           reply = "PIR";\r
57           break;\r
58         }\r
59         else if(data.indexOf(">")>-1)\r
60         {\r
61           // could be BLC file\r
62           data = reader.readLine();\r
63           if(data.indexOf(">")>-1)\r
64             reply = "BLC";\r
65           else\r
66             reply = "FASTA";\r
67 \r
68             break;\r
69         }\r
70       }\r
71       reader.close();\r
72     }\r
73     catch(Exception ex){ex.printStackTrace();}\r
74 \r
75     return reply;\r
76   }\r
77 \r
78 \r
79 }\r