X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fio%2FIdentifyFile.java;h=024da61824bd52629872ae7e8e53c4ec78d63d0f;hb=beca055dbed389362bb692de3c15fa5487c1ebd3;hp=eebde9b745f2820c23f468742b1816da5f962b41;hpb=128c1c559ce7749ba5a39d30e6108f5ce8f4b99e;p=jalview.git diff --git a/src/jalview/io/IdentifyFile.java b/src/jalview/io/IdentifyFile.java index eebde9b..024da61 100755 --- a/src/jalview/io/IdentifyFile.java +++ b/src/jalview/io/IdentifyFile.java @@ -1,86 +1,166 @@ -/******************** - * 2004 Jalview Reengineered - * Barton Group - * Dundee University - * - * AM Waterhouse - *******************/ - +/* +* 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 { - 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("!!")>-1) - && (data.indexOf("!!")-1) - { - reply = "CLUSTAL"; - break; - } - else if(data.indexOf(">P1;")>-1 || data.indexOf(">DL;")>-1) + /** + * 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 { - reply = "PIR"; - break; + 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) + { + reply = "BLC"; + } + //Is this a single line BLC file? + data = reader.readLine(); + if(data!=null && data.length()==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(",")")>-1) + catch (Exception ex) { - // could be BLC file, read next line to confirm - data = reader.readLine(); - if(data.indexOf(">")>-1) - reply = "BLC"; - else - reply = "FASTA"; - - break; + System.err.println("File Identification failed!\n" + ex); + return error; } - } - reader.close(); - } - catch(Exception ex){ - System.err.println("File Identification failed!"); ex.printStackTrace();} - - return reply; - } - + return reply; + } }