import javax.xml.namespace.QName;\r
\r
\r
-public class WSWUBlastClient {\r
+/**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @author $author$\r
+ * @version $Revision$\r
+ */\r
+public class WSWUBlastClient\r
+{\r
CutAndPasteTransfer output = new CutAndPasteTransfer();\r
int jobsRunning = 0;\r
\r
- public WSWUBlastClient(AlignmentI al, ArrayList ids) {\r
+ /**\r
+ * Creates a new WSWUBlastClient object.\r
+ *\r
+ * @param al DOCUMENT ME!\r
+ * @param ids DOCUMENT ME!\r
+ */\r
+ public WSWUBlastClient(AlignmentI al, ArrayList ids)\r
+ {\r
output.setText(\r
"To display sequence features an exact Uniprot id with 100% sequence identity match must be entered." +\r
"\nIn order to display these features, try changing the names of your sequences to the ids suggested below.");\r
Desktop.addInternalFrame(output,\r
"BLASTing for unidentified sequences ", 800, 300);\r
\r
- for (int i = 0; i < ids.size(); i++) {\r
+ for (int i = 0; i < ids.size(); i++)\r
+ {\r
SequenceI sequence = al.findName(ids.get(i).toString());\r
StringBuffer nonGapped = new StringBuffer();\r
\r
- for (int n = 0; n < sequence.getSequence().length(); n++) {\r
- if (!jalview.util.Comparison.isGap(sequence.getCharAt(n))) {\r
+ for (int n = 0; n < sequence.getSequence().length(); n++)\r
+ {\r
+ if (!jalview.util.Comparison.isGap(sequence.getCharAt(n)))\r
+ {\r
nonGapped.append(sequence.getCharAt(n));\r
}\r
}\r
thread.start();\r
}\r
\r
- void parseResult(String id1, String res) {\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param id1 DOCUMENT ME!\r
+ * @param res DOCUMENT ME!\r
+ */\r
+ void parseResult(String id1, String res)\r
+ {\r
StringTokenizer st = new StringTokenizer(res, "\n");\r
String data;\r
String id2;\r
int maxFound = 90;\r
StringBuffer buffer = new StringBuffer("\n\n" + id1 + " :");\r
\r
- while (st.hasMoreTokens()) {\r
+ while (st.hasMoreTokens())\r
+ {\r
data = st.nextToken();\r
\r
- if (data.indexOf("database=\"uniprot\" id=") > -1) {\r
+ if (data.indexOf("database=\"uniprot\" id=") > -1)\r
+ {\r
int index = data.indexOf("database=\"uniprot\" id=") + 23;\r
id2 = data.substring(index, data.indexOf("\"", index));\r
\r
- while (data.indexOf("</alignment>") == -1) {\r
+ while (data.indexOf("</alignment>") == -1)\r
+ {\r
data = st.nextToken();\r
\r
- if (data.indexOf("<identity>") > -1) {\r
+ if (data.indexOf("<identity>") > -1)\r
+ {\r
int value = Integer.parseInt(data.substring(data.indexOf(\r
"<identity>") + 10,\r
data.indexOf("</identity>")));\r
\r
- if (value >= maxFound) {\r
+ if (value >= maxFound)\r
+ {\r
maxFound = value;\r
buffer.append(" " + id2 + " " + value + "%; ");\r
}\r
output.setText(output.getText() + buffer.toString());\r
}\r
\r
- class ImageTwirler extends Thread {\r
+ class ImageTwirler extends Thread\r
+ {\r
ImageIcon[] imageIcon;\r
int imageIndex = 0;\r
\r
- public ImageTwirler() {\r
+ public ImageTwirler()\r
+ {\r
imageIcon = new ImageIcon[9];\r
\r
- for (int i = 0; i < 9; i++) {\r
+ for (int i = 0; i < 9; i++)\r
+ {\r
java.net.URL url = getClass().getResource("/images/dna" +\r
(i + 1) + ".gif");\r
\r
- if (url != null) {\r
+ if (url != null)\r
+ {\r
imageIcon[i] = new ImageIcon(url);\r
}\r
}\r
}\r
\r
- public void run() {\r
- while (jobsRunning > 0) {\r
- try {\r
+ public void run()\r
+ {\r
+ while (jobsRunning > 0)\r
+ {\r
+ try\r
+ {\r
Thread.sleep(100);\r
imageIndex++;\r
imageIndex %= 9;\r
output.setFrameIcon(imageIcon[imageIndex]);\r
output.setTitle("BLASTing for unidentified sequences - " +\r
jobsRunning + " jobs running.");\r
- } catch (Exception ex) {\r
+ }\r
+ catch (Exception ex)\r
+ {\r
}\r
}\r
}\r
}\r
\r
- class BlastThread extends Thread {\r
+ class BlastThread extends Thread\r
+ {\r
String sequence;\r
String seqid;\r
String jobid;\r
boolean jobComplete = false;\r
\r
- BlastThread(String id, String sequence) {\r
+ BlastThread(String id, String sequence)\r
+ {\r
this.sequence = sequence;\r
seqid = id;\r
}\r
\r
- public void run() {\r
+ public void run()\r
+ {\r
StartJob();\r
\r
- while (!jobComplete) {\r
- try {\r
+ while (!jobComplete)\r
+ {\r
+ try\r
+ {\r
Call call = (Call) new Service().createCall();\r
call.setTargetEndpointAddress(new java.net.URL(\r
"http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast"));\r
call.setOperationName(new QName("WSWUBlast", "polljob"));\r
\r
- String result = (String) call.invoke(new Object[] {\r
+ String result = (String) call.invoke(new Object[]\r
+ {\r
jobid, "xml"\r
});\r
\r
if ((result.indexOf("JOB PENDING") == -1) &&\r
- (result.indexOf("JOB RUNNING") == -1)) {\r
+ (result.indexOf("JOB RUNNING") == -1))\r
+ {\r
parseResult(seqid, result);\r
jobComplete = true;\r
jobsRunning--;\r
Thread.sleep(5000);\r
\r
// System.out.println("WSWuBlastClient: I'm alive "+seqid+" "+jobid); // log.debug\r
- } catch (Exception ex) {\r
+ }\r
+ catch (Exception ex)\r
+ {\r
}\r
}\r
}\r
\r
- void StartJob() {\r
+ void StartJob()\r
+ {\r
HashMap params = new HashMap();\r
params.put("database", "uniprot");\r
params.put("sensitivity", "low");\r
\r
byte[] seqbytes = sequence.getBytes();\r
\r
- try {\r
+ try\r
+ {\r
Call call = (Call) new Service().createCall();\r
call.setTargetEndpointAddress(new java.net.URL(\r
"http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast"));\r
call.setOperationName(new QName("WSWUBlast", "doWUBlast"));\r
\r
- String result = (String) call.invoke(new Object[] {\r
+ String result = (String) call.invoke(new Object[]\r
+ {\r
params, seqbytes\r
});\r
jobid = result;\r
System.out.println(\r
"http://www.ebi.ac.uk/cgi-bin/webservices/WSWUBlast JobId '" +\r
jobid + "'");\r
- } catch (Exception exp) {\r
+ }\r
+ catch (Exception exp)\r
+ {\r
System.err.println("WSWUBlastClient error:\n" + exp.toString());\r
exp.printStackTrace();\r
}\r