From 72cbe293bdfc802039f5be51d53351e97b89d28a Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 21 Mar 2016 14:46:40 +0000 Subject: [PATCH] JAL-1855 dbfetch from /ena_sequence/, /ena_coding/ --- src/jalview/ws/ebi/EBIFetchClient.java | 45 ++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/jalview/ws/ebi/EBIFetchClient.java b/src/jalview/ws/ebi/EBIFetchClient.java index c33871d..b09cbaa 100644 --- a/src/jalview/ws/ebi/EBIFetchClient.java +++ b/src/jalview/ws/ebi/EBIFetchClient.java @@ -20,6 +20,7 @@ */ package jalview.ws.ebi; +import jalview.datamodel.DBRefSource; import jalview.util.MessageManager; import java.io.BufferedInputStream; @@ -90,14 +91,14 @@ public class EBIFetchClient * * @param ids * the query formatted as db:query1;query2;query3 - * @param f + * @param format * the format wanted * @param s * - unused parameter * @return the file holding the response * @throws OutOfMemoryError */ - public File fetchDataAsFile(String ids, String f, String s) + public File fetchDataAsFile(String ids, String format, String s) throws OutOfMemoryError { File outFile = null; @@ -105,7 +106,7 @@ public class EBIFetchClient { outFile = File.createTempFile("jalview", ".xml"); outFile.deleteOnExit(); - fetchData(ids, f, s, outFile); + fetchData(ids, format, s, outFile); if (outFile.length() == 0) { outFile.delete(); @@ -122,20 +123,20 @@ public class EBIFetchClient * * @param ids * db:query1;query2;query3 - * @param f + * @param format * raw/xml * @param s * not used - remove? * * @return Raw string array result of query set */ - public String[] fetchData(String ids, String f, String s) + public String[] fetchData(String ids, String format, String s) throws OutOfMemoryError { - return fetchData(ids, f, s, null); + return fetchData(ids, format, s, null); } - public String[] fetchData(String ids, String f, String s, File outFile) + String[] fetchData(String ids, String f, String s, File outFile) throws OutOfMemoryError { // Need to split @@ -183,16 +184,27 @@ public class EBIFetchClient return (rslts.length == 0 ? null : rslts); } - public String[] fetchBatch(String ids, String db, String f, String s, + public String[] fetchBatch(String ids, String dbPath, String format, String s, File outFile) throws OutOfMemoryError { - long time = System.currentTimeMillis(); - // max 200 ids can be added at one time + // long time = System.currentTimeMillis(); + /* + * JAL-1855 dbfetch from ena_sequence, ena_coding + */ + if (dbPath.equalsIgnoreCase(DBRefSource.EMBL)) + { + dbPath = "ena_sequence"; + } + else if (dbPath.equalsIgnoreCase(DBRefSource.EMBLCDS)) + { + dbPath = "ena_coding"; + } + try { URL rcall = new URL("http://www.ebi.ac.uk/Tools/dbfetch/dbfetch/" - + db.toLowerCase() + "/" + ids.toLowerCase() - + (f != null ? "/" + f : "")); + + dbPath.toLowerCase() + "/" + ids.toLowerCase() + + (format != null ? "/" + format : "")); InputStream is = new BufferedInputStream(rcall.openStream()); if (outFile != null) @@ -221,7 +233,7 @@ public class EBIFetchClient } catch (OutOfMemoryError er) { - System.out.println("OUT OF MEMORY DOWNLOADING QUERY FROM " + db + System.out.println("OUT OF MEMORY DOWNLOADING QUERY FROM " + dbPath + ":\n" + ids); throw er; } catch (Exception ex) @@ -231,14 +243,15 @@ public class EBIFetchClient { return null; } - System.err.println("Unexpected exception when retrieving from " + db + System.err.println("Unexpected exception when retrieving from " + + dbPath + "\nQuery was : '" + ids + "'"); ex.printStackTrace(System.err); return null; } finally { - // System.err.println("Took " + (System.currentTimeMillis() - time) - // / 1000 + " secs for one call."); + // System.err.println("EBIFetch took " + (System.currentTimeMillis() - + // time) + " ms"); } return null; } -- 1.7.10.2