/* * Jalview - A Sequence Alignment Editor and Viewer * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.io; import java.io.*; import java.net.*; public class IdentifyFile { public static String Identify(String file, String protocol) { String reply = "PFAM"; try{ BufferedReader reader = null; if(protocol.equals("File")) reader = new BufferedReader(new FileReader(file)); else if (protocol.equals("URL")) { reply = "URL NOT FOUND"; URL url = new URL(file); reader = new BufferedReader(new InputStreamReader( url.openStream() ) ); reply = "error"; } else if( protocol.equals("Paste")) reader = new BufferedReader( new StringReader(file) ); String data; while( (data=reader.readLine())!=null) { data = data.toUpperCase(); if(data.indexOf("#")==0 || data.length()<1) continue; if(data.indexOf("PILEUP")>-1) { reply = "PileUp"; break; } if((data.indexOf("//")==0) || ((data.indexOf("!!")>-1) && (data.indexOf("!!")-1) { reply = "CLUSTAL"; break; } else if(data.indexOf(">P1;")>-1 || data.indexOf(">DL;")>-1) { reply = "PIR"; break; } else if(data.indexOf(">")>-1) { // could be BLC file, read next line to confirm data = reader.readLine(); if(data.indexOf(">")>-1) reply = "BLC"; else reply = "FASTA"; break; } } reader.close(); } catch(Exception ex){ System.err.println("File Identification failed!\n"+ex);} return reply; } }