X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fio%2FWSWUBlastClient.java;h=33d6d9289db1cef413e2448e581d2e50cf594768;hb=62737d15c0edb48128eb9ac6fe7fa419ab984125;hp=fd82c9e7112139a496fb757e4f5b5eebe2afae2e;hpb=99c58ee0ae2a848f982552e53feaf6d5cb9925e5;p=jalview.git diff --git a/src/jalview/io/WSWUBlastClient.java b/src/jalview/io/WSWUBlastClient.java index fd82c9e..33d6d92 100755 --- a/src/jalview/io/WSWUBlastClient.java +++ b/src/jalview/io/WSWUBlastClient.java @@ -16,192 +16,242 @@ * 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 org.apache.axis.client.*; -import javax.xml.namespace.QName; -import java.util.*; import jalview.datamodel.*; + import jalview.gui.*; -import javax.swing.*; -import java.util.*; + +import org.apache.axis.client.*; + import java.awt.*; +import java.util.*; + +import javax.swing.*; + +import javax.xml.namespace.QName; + + +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ public class WSWUBlastClient { - CutAndPasteTransfer output = new CutAndPasteTransfer(); - int jobsRunning = 0; - - public WSWUBlastClient(AlignmentI al, ArrayList ids) - { - output.setText("To display sequence features an exact Uniprot id with 100% sequence identity match must be entered." - +"\nIn order to display these features, try changing the names of your sequences to the ids suggested below."); - Desktop.addInternalFrame(output, "BLASTing for unidentified sequences ", 800,300); + CutAndPasteTransfer output = new CutAndPasteTransfer(); + int jobsRunning = 0; - for(int i=0; i0) - { - try{ - Thread.sleep(100); - imageIndex++; - imageIndex %=9; - output.setFrameIcon( imageIcon[imageIndex]); - output.setTitle("BLASTing for unidentified sequences - "+jobsRunning+" jobs running."); - - }catch(Exception ex){} - - } - } - } + StringTokenizer st = new StringTokenizer(res, "\n"); + String data; + String id2; + int maxFound = 90; + StringBuffer buffer = new StringBuffer("\n\n" + id1 + " :"); + + while (st.hasMoreTokens()) + { + data = st.nextToken(); + if (data.indexOf("database=\"uniprot\" id=") > -1) + { + int index = data.indexOf("database=\"uniprot\" id=") + 23; + id2 = data.substring(index, data.indexOf("\"", index)); + while (data.indexOf("") == -1) + { + data = st.nextToken(); + if (data.indexOf("") > -1) + { + int value = Integer.parseInt(data.substring(data.indexOf( + "") + 10, + data.indexOf(""))); - class BlastThread extends Thread - { - String sequence; - String seqid; - String jobid; - boolean jobComplete = false; + if (value >= maxFound) + { + maxFound = value; + buffer.append(" " + id2 + " " + value + "%; "); + } + } + } + } + } - BlastThread(String id, String sequence) - { - this.sequence = sequence; - seqid = id; + output.setText(output.getText() + buffer.toString()); } - public void run() + class ImageTwirler extends Thread { - StartJob(); + ImageIcon[] imageIcon; + int imageIndex = 0; - while (!jobComplete) - { - try + public ImageTwirler() { - Call call = (Call)new Service().createCall(); - call.setTargetEndpointAddress(new java.net.URL( - "http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast")); - call.setOperationName(new QName("WSWUBlast", "polljob")); - String result = (String) call.invoke(new Object[] - {jobid, "xml"}); - if(result.indexOf("JOB PENDING")==-1 && result.indexOf("JOB RUNNING")==-1) - { - parseResult(seqid, result); - jobComplete = true; - jobsRunning --; - } - Thread.sleep(5000); - // System.out.println("WSWuBlastClient: I'm alive "+seqid+" "+jobid); // log.debug + imageIcon = new ImageIcon[9]; + + for (int i = 0; i < 9; i++) + { + java.net.URL url = getClass().getResource("/images/dna" + + (i + 1) + ".gif"); + + if (url != null) + { + imageIcon[i] = new ImageIcon(url); + } + } } - catch (Exception ex) - {} - } - } - void StartJob() - { - HashMap params = new HashMap(); - params.put("database", "uniprot"); - params.put("sensitivity", "low"); - params.put("sort", "totalscore"); - params.put("matrix", "pam10"); - params.put("program", "blastp"); - params.put("alignments", "5"); - params.put("outformat", "xml"); - params.put("searchtype", "1"); - byte[] seqbytes = sequence.getBytes(); - - try - { - Call call = (Call)new Service().createCall(); - call.setTargetEndpointAddress(new java.net.URL( - "http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast")); - call.setOperationName(new QName("WSWUBlast", "doWUBlast")); - String result = (String) call.invoke(new Object[] - {params, seqbytes}); - jobid = result; - System.out.println("http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast JobId '"+jobid+"'"); - - } - catch (Exception exp) - { - System.err.println("WSWUBlastClient error:\n" + exp.toString()); - exp.printStackTrace(); - } + public void run() + { + while (jobsRunning > 0) + { + try + { + Thread.sleep(100); + imageIndex++; + imageIndex %= 9; + output.setFrameIcon(imageIcon[imageIndex]); + output.setTitle("BLASTing for unidentified sequences - " + + jobsRunning + " jobs running."); + } + catch (Exception ex) + { + } + } + } } - } - void parseResult(String id1, String res) + class BlastThread extends Thread { - StringTokenizer st = new StringTokenizer(res, "\n"); - String data; - String id2; - int maxFound = 90; - StringBuffer buffer = new StringBuffer("\n\n"+id1+" :"); + String sequence; + String seqid; + String jobid; + boolean jobComplete = false; - while( st.hasMoreTokens() ) - { - data = st.nextToken(); + BlastThread(String id, String sequence) + { + this.sequence = sequence; + seqid = id; + } - if(data.indexOf("database=\"uniprot\" id=")>-1) + public void run() { - int index = data.indexOf("database=\"uniprot\" id=")+ 23; - id2 = data.substring( index, data.indexOf("\"", index) ); - while( data.indexOf("")==-1) - { - data = st.nextToken(); - if(data.indexOf("")>-1) + StartJob(); + + while (!jobComplete) { - int value = Integer.parseInt( data.substring(data.indexOf("")+10, data.indexOf(""))); - if(value>=maxFound) - { - maxFound = value; - buffer.append(" "+ id2 + " " + value+"%; "); - } - } - } + try + { + Call call = (Call) new Service().createCall(); + call.setTargetEndpointAddress(new java.net.URL( + "http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast")); + call.setOperationName(new QName("WSWUBlast", "polljob")); + String result = (String) call.invoke(new Object[] + { + jobid, "xml" + }); + + if ((result.indexOf("JOB PENDING") == -1) && + (result.indexOf("JOB RUNNING") == -1)) + { + parseResult(seqid, result); + jobComplete = true; + jobsRunning--; + } + + Thread.sleep(5000); + + // System.out.println("WSWuBlastClient: I'm alive "+seqid+" "+jobid); // log.debug + } + catch (Exception ex) + { + } + } } + void StartJob() + { + HashMap params = new HashMap(); + params.put("database", "uniprot"); + params.put("sensitivity", "low"); + params.put("sort", "totalscore"); + params.put("matrix", "pam10"); + params.put("program", "blastp"); + params.put("alignments", "5"); + params.put("outformat", "xml"); + params.put("searchtype", "1"); - } + byte[] seqbytes = sequence.getBytes(); - output.setText(output.getText()+buffer.toString()); - } + try + { + Call call = (Call) new Service().createCall(); + call.setTargetEndpointAddress(new java.net.URL( + "http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast")); + call.setOperationName(new QName("WSWUBlast", "doWUBlast")); + String result = (String) call.invoke(new Object[] + { + params, seqbytes + }); + jobid = result; + System.out.println( + "http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast JobId '" + + jobid + "'"); + } + catch (Exception exp) + { + System.err.println("WSWUBlastClient error:\n" + exp.toString()); + exp.printStackTrace(); + } + } + } }