/* * 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.*; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$ */ public class IdentifyFile { /** * DOCUMENT ME! * * @param file DOCUMENT ME! * @param protocol DOCUMENT ME! * * @return DOCUMENT ME! */ public String Identify(String file, String protocol) { String reply = "PFAM"; String error = "FILE NOT FOUND"; try { BufferedReader reader = null; if (protocol.equals(AppletFormatAdapter.FILE)) { reader = new BufferedReader(new FileReader(file)); } else if (protocol.equals(AppletFormatAdapter.URL)) { error = "URL NOT FOUND"; URL url = new URL(file); reader = new BufferedReader(new InputStreamReader( url.openStream())); } else if (protocol.equals(AppletFormatAdapter.PASTE)) { reader = new BufferedReader(new StringReader(file)); } else if (protocol.equals(AppletFormatAdapter.CLASSLOADER)) { java.io.InputStream is = getClass().getResourceAsStream("/" + file); reader = new BufferedReader(new java.io.InputStreamReader(is)); } 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("!!") < data.indexOf( "_MULTIPLE_ALIGNMENT ")))) { reply = "MSF"; break; } else if (data.indexOf("CLUSTAL") > -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 || data.indexOf("*") >-1 ) { reply = "BLC"; } else { reply = "FASTA"; } break; } else if (data.indexOf(":")