X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fdbsources%2FEmblXmlSource.java;h=61f2d8b4ba9ce316718923d1a91df6f9f16eea57;hb=506d60f0e188723ddc91c26824b41ac7034df3fe;hp=68a2424b3fb55b3b6d499ec3b0c7903e5067d776;hpb=60f2d6c034560415fd0139c8bc7df0c19cae1186;p=jalview.git diff --git a/src/jalview/ws/dbsources/EmblXmlSource.java b/src/jalview/ws/dbsources/EmblXmlSource.java index 68a2424..61f2d8b 100644 --- a/src/jalview/ws/dbsources/EmblXmlSource.java +++ b/src/jalview/ws/dbsources/EmblXmlSource.java @@ -1,3 +1,21 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) + * Copyright (C) 2008 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.ws.dbsources; import jalview.datamodel.Alignment; @@ -22,89 +40,124 @@ public abstract class EmblXmlSource extends EbiFileRetrievedProxy { super(); } + /** * retrieve and parse an emblxml file - * @param emprefx either EMBL or EMBLCDS strings are allowed - anything else will not retrieve emblxml + * + * @param emprefx + * either EMBL or EMBLCDS strings are allowed - anything else + * will not retrieve emblxml * @param query * @return * @throws Exception */ - public AlignmentI getEmblSequenceRecords(String emprefx, String query) throws Exception + public AlignmentI getEmblSequenceRecords(String emprefx, String query) + throws Exception { startQuery(); EBIFetchClient dbFetch = new EBIFetchClient(); - File reply; - try { - reply = dbFetch.fetchDataAsFile( - emprefx.toLowerCase() + ":" + query.trim(), - "emblxml",null); - } - catch (Exception e) + File reply; + try + { + reply = dbFetch.fetchDataAsFile(emprefx.toLowerCase() + ":" + + query.trim(), "emblxml", null); + } catch (Exception e) { stopQuery(); - throw new Exception("EBI EMBL XML retrieval failed on "+emprefx.toLowerCase()+":"+query.trim(),e); + throw new Exception("EBI EMBL XML retrieval failed on " + + emprefx.toLowerCase() + ":" + query.trim(), e); } return getEmblSequenceRecords(emprefx, query, reply); } + /** * parse an emblxml file stored locally - * @param emprefx either EMBL or EMBLCDS strings are allowed - anything else will not retrieve emblxml + * + * @param emprefx + * either EMBL or EMBLCDS strings are allowed - anything else + * will not retrieve emblxml * @param query - * @param file the EMBL XML file containing the results of a query + * @param file + * the EMBL XML file containing the results of a query * @return * @throws Exception */ - public AlignmentI getEmblSequenceRecords(String emprefx, String query, File reply) throws Exception + public AlignmentI getEmblSequenceRecords(String emprefx, String query, + File reply) throws Exception { SequenceI seqs[] = null; StringBuffer result = new StringBuffer(); if (reply != null && reply.exists()) + { + efile = null; + file = reply.getAbsolutePath(); + if (reply.length() > 25) { - efile=null; - file = reply.getAbsolutePath(); - if (reply.length()>25) - { - efile = jalview.datamodel.xdb.embl.EmblFile.getEmblFile(reply); - } else { - result.append("# No EMBL record retrieved for "+emprefx.toLowerCase()+":"+query.trim()); - } + efile = jalview.datamodel.xdb.embl.EmblFile.getEmblFile(reply); } - if (efile!=null) { - for (Iterator i=efile.getEntries().iterator(); i.hasNext(); ) { - EmblEntry entry = (EmblEntry) i.next(); - SequenceI[] seqparts = entry.getSequences(false, true, emprefx); // TODO: use !fetchNa,!fetchPeptide here instead - see todo in emblEntry - if (seqparts!=null) { - SequenceI[] newseqs = null; - int si=0; - if (seqs==null) { - newseqs = new SequenceI[seqparts.length]; - } else { - newseqs = new SequenceI[seqs.length+seqparts.length]; - - for (;si0) + } + else + { + result = null; + } + AlignmentI al = null; + if (seqs != null && seqs.length > 0) { al = new Alignment(seqs); - result.append("# Successfully parsed the "+emprefx+" queries into an Alignment"); + result.append("# Successfully parsed the " + emprefx + + " queries into an Alignment"); results = result; } stopQuery(); return al; } -} \ No newline at end of file +}