X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FIdentifyFile.java;h=ff105475ed083780c39a6e7ee48edac3c53c40d3;hb=e894eb87d40be6e8452d19032ddffe80dad5f804;hp=729a86040aab30234553b705008803d08c1d5da9;hpb=25db325e1dbc879140d059522af353a199045646;p=jalview.git diff --git a/src/jalview/io/IdentifyFile.java b/src/jalview/io/IdentifyFile.java index 729a860..ff10547 100755 --- a/src/jalview/io/IdentifyFile.java +++ b/src/jalview/io/IdentifyFile.java @@ -1,135 +1,160 @@ -/* -* 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 static String Identify(String file, String protocol) - { - String reply = "PFAM"; - String error = "FILE NOT FOUND"; - - try - { - BufferedReader reader = null; - - if (protocol.equalsIgnoreCase("File")) - { - reader = new BufferedReader(new FileReader(file)); - } - else if (protocol.equalsIgnoreCase("URL")) - { - error = "URL NOT FOUND"; - URL url = new URL(file); - reader = new BufferedReader(new InputStreamReader( - url.openStream())); - - } - else if (protocol.equalsIgnoreCase("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("!!") < 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) - { - reply = "BLC"; - } - else - { - reply = "FASTA"; - } - - break; - } - } - - reader.close(); - } - catch (Exception ex) - { - System.err.println("File Identification failed!\n" + ex); - return error; - } - return reply; - } -} +/* +* Jalview - A Sequence Alignment Editor and Viewer +* Copyright (C) 2006 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("# STOCKHOLM") > -1)) + { + reply = "STH"; + + break; + } + + 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("HEADER") > -1 || + data.indexOf("ATOM") > -1) + { + reply = "PDB"; + break; + } + else if (data.indexOf(":") < data.indexOf(",")) // && data.indexOf(",")