X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=webservices%2Fcompbio%2Fws%2Fclient%2FServices.java;h=3616e1b5a97a95a775ac5297c3c478e057ca1831;hb=140e024c6b00451dd933a9c25feac2d170d5f9f6;hp=0ddb1a841b638c849f8f045d9b7be653aabd2c33;hpb=88d252a4d6e1b4bdfc03f617c5a97d2d7bb9d050;p=jabaws.git diff --git a/webservices/compbio/ws/client/Services.java b/webservices/compbio/ws/client/Services.java index 0ddb1a8..3616e1b 100644 --- a/webservices/compbio/ws/client/Services.java +++ b/webservices/compbio/ws/client/Services.java @@ -1,6 +1,6 @@ -/* Copyright (c) 2009 Peter Troshin +/* Copyright (c) 2011 Peter Troshin * - * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0 + * JAva Bioinformatics Analysis Web Services (JABAWS) @version: 2.0 * * This library is free software; you can redistribute it and/or modify it under the terms of the * Apache License version 2 as published by the Apache Software Foundation @@ -18,7 +18,6 @@ package compbio.ws.client; -import java.io.File; import java.net.URL; import java.util.Set; @@ -28,25 +27,16 @@ import javax.xml.ws.Service; import compbio.data.msa.JABAService; import compbio.data.msa.MsaWS; import compbio.data.msa.SequenceAnnotation; -import compbio.engine.client.ConfExecutable; -import compbio.engine.client.Executable; -import compbio.runner.conservation.AACon; -import compbio.runner.disorder.Disembl; -import compbio.runner.disorder.GlobPlot; -import compbio.runner.disorder.IUPred; -import compbio.runner.disorder.Jronn; -import compbio.runner.msa.ClustalO; -import compbio.runner.msa.ClustalW; -import compbio.runner.msa.Mafft; -import compbio.runner.msa.Muscle; -import compbio.runner.msa.Probcons; -import compbio.runner.msa.Tcoffee; /** * List of web services currently supported by JABAWS version 2 * */ public enum Services { + /* + * Make sure this class has NO references to runners or engines as it is a + * part of minimal client package. Such things should go into ServicesUtil + */ MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS; public static Services getService(String servName) { @@ -59,81 +49,6 @@ public enum Services { return null; } - public static Services getServiceByRunner( - Class> runnerClassName) { - assert runnerClassName != null; - String sname = runnerClassName.getSimpleName().toLowerCase(); - for (Services service : Services.values()) { - if (service.toString().toLowerCase().contains(sname)) { - return service; - } - } - return null; - } - - public Class> getServiceImpl() { - switch (this) { - case AAConWS : - return AACon.class; - case ClustalOWS : - return ClustalO.class; - case ClustalWS : - return ClustalW.class; - case MafftWS : - return Mafft.class; - case MuscleWS : - return Muscle.class; - case TcoffeeWS : - return Tcoffee.class; - case ProbconsWS : - return Probcons.class; - case DisemblWS : - return Disembl.class; - case GlobPlotWS : - return GlobPlot.class; - case JronnWS : - return Jronn.class; - case IUPredWS : - return IUPred.class; - default : - throw new RuntimeException( - "Unknown web service implementation class for service: " - + this); - } - } - - public static Class> getRunnerByJobDirectory( - File jobdir) { - Services service = getServiceByRunnerName(getRunnerNameByJobDirectory(jobdir)); - return service.getServiceImpl(); - } - - private static String getRunnerNameByJobDirectory(File jobdir) { - String name = jobdir.getName().split("#")[0]; - - if (name.startsWith(ConfExecutable.CLUSTER_TASK_ID_PREFIX)) { - assert ConfExecutable.CLUSTER_TASK_ID_PREFIX.length() == 1; - name = name.substring(1); - } - return name; - } - - public static Services getServiceByJobDirectory(File jobdir) { - return getServiceByRunnerName(getRunnerNameByJobDirectory(jobdir)); - } - - private static Services getServiceByRunnerName(String name) { - for (Services service : Services.values()) { - String runnerName = service.getServiceImpl().getSimpleName() - .toLowerCase(); - name = name.trim().toLowerCase(); - if (name.startsWith(runnerName)) { - return service; - } - } - return null; - } - Service getService(URL url, String sqname) { QName qname = new QName(sqname, this.toString()); return Service.create(url, qname); @@ -184,4 +99,122 @@ public enum Services { this.toString() + "Port"); return service.getPort(portName, this.getServiceType()); } + + public String getServiceInfo() { + switch (this) { + case AAConWS : + return AACON_INFO; + case ClustalOWS : + return CLUSTAL_OMEGA_INFO; + case ClustalWS : + return CLUSTAL_INFO; + case DisemblWS : + return DISEMBL_INFO; + case GlobPlotWS : + return GLOBPLOT_INFO; + case IUPredWS : + return IUPRED_INFO; + case JronnWS : + return JRONN_INFO; + case MafftWS : + return MAFFT_INFO; + case MuscleWS : + return MUSCLE_INFO; + case ProbconsWS : + return PROBCONS_INFO; + case TcoffeeWS : + return TCOFFEE_INFO; + default : + throw new RuntimeException("Unrecognised Web Service Type " + + this + " - Should never happened!"); + } + } + + public static final String AACON_INFO = new ServiceInfo(AAConWS, + "in preparation", "1.0", "http://www.compbio.dundee.ac.uk/aacon") + .toString(); + public static final String CLUSTAL_INFO = new ServiceInfo( + ClustalWS, + "Larkin MA, Blackshields G, Brown NP, Chenna R, McGettigan PA, McWilliam H, Valentin F, Wallace IM, Wilm A, Lopez R, Thompson JD, Gibson TJ, Higgins DG.\r\n" + + "(2007). Clustal W and Clustal X version 2.0. Bioinformatics, 23, 2947-2948. ", + "2.0.12", "http://www.clustal.org/clustal2/").toString(); + public static final String CLUSTAL_OMEGA_INFO = new ServiceInfo( + ClustalOWS, + "Fast, scalable generation of high quality protein multiple sequence alignments using Clustal Omega\r\n" + + "Fabian Sievers, Andreas Wilm, David Dineen, Toby J. Gibson, Kevin Karplus, Weizhong Li, Rodrigo Lopez, Hamish McWilliam, Michael Remmert, Johannes Söding, Julie D. Thompson, Desmond G. Higgins", + "1.0.2", "http://www.clustal.org/omega").toString(); + public static final String DISEMBL_INFO = new ServiceInfo( + DisemblWS, + "R. Linding, L.J. Jensen, F. Diella, P. Bork, T.J. Gibson and R.B. Russell\r\n" + + "Protein disorder prediction: implications for structural proteomics\r\n" + + "Structure Vol 11, Issue 11, 4 November 2003", "1.5", + "http://dis.embl.de/").toString(); + public static final String GLOBPLOT_INFO = new ServiceInfo( + GlobPlotWS, + "Rune Linding, Robert B. Russell, Victor Neduva and Toby J. Gibson " + + "'GlobPlot: exploring protein sequences for globularity and disorder.' Nucl. Acids Res. (2003) 31 (13): 3701-3708. doi: 10.1093/nar/gkg519\r\n", + "2.3", "http://globplot.embl.de/").toString(); + public static final String IUPRED_INFO = new ServiceInfo( + IUPredWS, + "The Pairwise Energy Content Estimated from Amino Acid Composition Discriminates between Folded and Intrinsically Unstructured Proteins\r\n" + + "Zsuzsanna Dosztányi, Veronika Csizmók, Péter Tompa and István Simon\r\n" + + "J. Mol. Biol. (2005) 347, 827-839.", "1.0", + "http://iupred.enzim.hu/").toString(); + public static final String TCOFFEE_INFO = new ServiceInfo(TcoffeeWS, + "T-Coffee: A novel method for multiple sequence alignments " + + "Notredame, Higgins, Heringa, JMB, 302 (205-217) 2000", + "8.99", "http://tcoffee.crg.cat/apps/tcoffee/index.html") + .toString(); + public static final String MUSCLE_INFO = new ServiceInfo( + MuscleWS, + "Edgar, R.C. (2004) MUSCLE: multiple sequence alignment with high accuracy and high throughput.Nucleic Acids Res. 32(5):1792-1797.\r\n" + + "doi:10.1093/nar/gkh340", "3.8.31", + "http://www.drive5.com/muscle/").toString(); + public static final String PROBCONS_INFO = new ServiceInfo( + ProbconsWS, + "Do, C.B., Mahabhashyam, M.S.P., Brudno, M., and Batzoglou, S. 2005. PROBCONS: " + + "Probabilistic Consistency-based Multiple Sequence Alignment. Genome Research 15: 330-340. ", + "1.12", "http://probcons.stanford.edu/").toString();; + public static final String JRONN_INFO = new ServiceInfo( + JronnWS, + "unpublished, original algorithm Yang,Z.R., Thomson,R., McMeil,P. and Esnouf,R.M. (2005) " + + "RONN: the bio-basis function neural network technique applied to the " + + "dectection of natively disordered regions in proteins Bioinformatics 21: 3369-3376\r\n", + "1.0", "http://www.compbio.dundee.ac.uk/jabaws/").toString();; + public static final String MAFFT_INFO = new ServiceInfo( + MafftWS, + "Katoh, Toh 2010 (Bioinformatics 26:1899-1900)\r\n" + + "Parallelization of the MAFFT multiple sequence alignment program. ", + "6.8.57", "http://mafft.cbrc.jp/alignment/software/").toString();; + + static class ServiceInfo { + Services service; + String reference; + String version; + String moreinfo; + final static String jabaws_version = "2.0"; + final static String line_delimiter = "\n"; + + private ServiceInfo(Services service, String reference, String version, + String moreinfo) { + this.service = service; + this.reference = reference; + this.version = version; + this.moreinfo = moreinfo; + } + + @Override + public String toString() { + String value = "SERVICE: " + service + " version " + version + + line_delimiter; + value += "JABAWS v. " + jabaws_version + line_delimiter; + value += "REFERENCES: " + reference + line_delimiter; + value += "MORE INFORMATION: " + moreinfo + line_delimiter; + return value; + } + } + + public static void main(String[] args) { + System.out.println(MUSCLE_INFO); + } } \ No newline at end of file