Refactoring: rename duplicated Util classes
[jabaws.git] / webservices / compbio / ws / client / Services.java
index 2ffafb6..42d282e 100644 (file)
@@ -39,7 +39,7 @@ public enum Services {
         * Make sure this class has NO references to runners or engines as it is a\r
         * part of minimal client package. Such things should go into ServicesUtil\r
         */\r
-       MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS;\r
+       MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS, JpredWS, RNAalifoldWS;\r
 \r
        public static Services getService(String servName) {\r
                servName = servName.trim().toLowerCase();\r
@@ -58,136 +58,274 @@ public enum Services {
 \r
        public static String toString(Set<Services> services) {\r
                if (services == null || services.isEmpty()) {\r
-                       return "";\r
+                       return "No known services...\n";\r
                }\r
                String value = "";\r
-               String delim = ", ";\r
                for (Services serv : services) {\r
-                       value += serv.toString() + delim;\r
+                       if (null != serv) {\r
+                               value += serv + "\n";\r
+                       } else {\r
+                               value += "Unknown Service\n";\r
+                       }\r
                }\r
-               value = value.substring(0, value.length() - delim.length());\r
                return value;\r
        }\r
 \r
        Class<? extends JABAService> getServiceType() {\r
                switch (this) {\r
-                       // deliberate leaking\r
                        case AAConWS :\r
                        case JronnWS :\r
                        case DisemblWS :\r
                        case GlobPlotWS :\r
                        case IUPredWS :\r
+                       case RNAalifoldWS :\r
                                return SequenceAnnotation.class;\r
-\r
-                               // deliberate leaking\r
+                       case JpredWS :\r
                        case ClustalWS :\r
                        case ClustalOWS :\r
                        case MafftWS :\r
                        case MuscleWS :\r
                        case ProbconsWS :\r
                        case TcoffeeWS :\r
-\r
                                return MsaWS.class;\r
+\r
                        default :\r
-                               throw new RuntimeException("Unrecognised Web Service Type "\r
-                                               + this + " - Should never happened!");\r
+                               throw new RuntimeException("Unrecognised Web Service Type " + this + " - Should never happen!");\r
                }\r
        }\r
 \r
+       \r
+       String getServiceNamespace() {\r
+               switch (this) {\r
+                       case RNAalifoldWS :\r
+                       case AAConWS :\r
+                       case JronnWS :\r
+                       case DisemblWS :\r
+                       case GlobPlotWS :\r
+                       case IUPredWS :\r
+                               return JABAService.V2_SERVICE_NAMESPACE;\r
+                       case ClustalOWS :\r
+                       case JpredWS :\r
+                       case ClustalWS :\r
+                       case MafftWS :\r
+                       case MuscleWS :\r
+                       case ProbconsWS :\r
+                       case TcoffeeWS :\r
+                               return JABAService.SERVICE_NAMESPACE;\r
+                       default :\r
+                               throw new RuntimeException("Unrecognised JABAWS Namespace for service " + this +"!");\r
+               }\r
+       }\r
+       \r
        JABAService getInterface(Service service) {\r
                assert service != null;\r
 \r
-               QName portName = new QName(service.getServiceName().getNamespaceURI(),\r
-                               this.toString() + "Port");\r
+               QName portName = new QName(service.getServiceName().getNamespaceURI(), this.toString() + "Port");\r
                return service.getPort(portName, this.getServiceType());\r
        }\r
 \r
        public String getServiceInfo() {\r
                switch (this) {\r
                        case AAConWS :\r
-                               return AACON_INFO;\r
+                               return AACON_INFO.toString();\r
+                       case JpredWS :\r
+                               return JPRED_INFO.toString();\r
                        case ClustalOWS :\r
-                               return CLUSTAL_OMEGA_INFO;\r
+                               return CLUSTAL_OMEGA_INFO.toString();\r
                        case ClustalWS :\r
-                               return CLUSTAL_INFO;\r
+                               return CLUSTAL_INFO.toString();\r
                        case DisemblWS :\r
-                               return DISEMBL_INFO;\r
+                               return DISEMBL_INFO.toString();\r
                        case GlobPlotWS :\r
-                               return GLOBPLOT_INFO;\r
+                               return GLOBPLOT_INFO.toString();\r
                        case IUPredWS :\r
-                               return IUPRED_INFO;\r
+                               return IUPRED_INFO.toString();\r
                        case JronnWS :\r
-                               return JRONN_INFO;\r
+                               return JRONN_INFO.toString();\r
                        case MafftWS :\r
-                               return MAFFT_INFO;\r
+                               return MAFFT_INFO.toString();\r
                        case MuscleWS :\r
-                               return MUSCLE_INFO;\r
+                               return MUSCLE_INFO.toString();\r
                        case ProbconsWS :\r
-                               return PROBCONS_INFO;\r
+                               return PROBCONS_INFO.toString();\r
                        case TcoffeeWS :\r
-                               return TCOFFEE_INFO;\r
+                               return TCOFFEE_INFO.toString();\r
+                       case RNAalifoldWS :\r
+                               return RNAALIFOLD_INFO.toString();\r
                        default :\r
-                               throw new RuntimeException("Unrecognised Web Service Type "\r
-                                               + this + " - Should never happened!");\r
+                               throw new RuntimeException("Unrecognised Web Service Type " + this + " - Should never happen!");\r
                }\r
        }\r
 \r
-       public static final String AACON_INFO = new ServiceInfo(AAConWS,\r
-                       "in preparation", "1.0", "http://www.compbio.dundee.ac.uk/aacon")\r
-                       .toString();\r
-       public static final String CLUSTAL_INFO = new ServiceInfo(\r
-                       ClustalWS,\r
-                       "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"\r
-                                       + "(2007). Clustal W and Clustal X version 2.0. Bioinformatics, 23, 2947-2948. ",\r
-                       "2.0.12", "http://www.clustal.org/clustal2/").toString();\r
-       public static final String CLUSTAL_OMEGA_INFO = new ServiceInfo(\r
-                       ClustalOWS,\r
+       public String getServiceReference() {\r
+               switch (this) {\r
+                       case AAConWS :\r
+                               return AACON_INFO.getReference();\r
+                       case JpredWS :\r
+                               return JPRED_INFO.getReference();\r
+                       case ClustalOWS :\r
+                               return CLUSTAL_OMEGA_INFO.getReference();\r
+                       case ClustalWS :\r
+                               return CLUSTAL_INFO.getReference();\r
+                       case DisemblWS :\r
+                               return DISEMBL_INFO.getReference();\r
+                       case GlobPlotWS :\r
+                               return GLOBPLOT_INFO.getReference();\r
+                       case IUPredWS :\r
+                               return IUPRED_INFO.getReference();\r
+                       case JronnWS :\r
+                               return JRONN_INFO.getReference();\r
+                       case MafftWS :\r
+                               return MAFFT_INFO.getReference();\r
+                       case MuscleWS :\r
+                               return MUSCLE_INFO.getReference();\r
+                       case ProbconsWS :\r
+                               return PROBCONS_INFO.getReference();\r
+                       case TcoffeeWS :\r
+                               return TCOFFEE_INFO.getReference();\r
+                       case RNAalifoldWS :\r
+                               return RNAALIFOLD_INFO.getReference();\r
+                       default :\r
+                               throw new RuntimeException("Unrecognised Web Service Type " + this + " - Should never happen!");\r
+               }\r
+       }\r
+\r
+       public String getServiceVersion() {\r
+               switch (this) {\r
+                       case AAConWS :\r
+                               return AACON_INFO.getVersion();\r
+                       case JpredWS :\r
+                               return JPRED_INFO.getVersion();\r
+                       case ClustalOWS :\r
+                               return CLUSTAL_OMEGA_INFO.getVersion();\r
+                       case ClustalWS :\r
+                               return CLUSTAL_INFO.getVersion();\r
+                       case DisemblWS :\r
+                               return DISEMBL_INFO.getVersion();\r
+                       case GlobPlotWS :\r
+                               return GLOBPLOT_INFO.getVersion();\r
+                       case IUPredWS :\r
+                               return IUPRED_INFO.getVersion();\r
+                       case JronnWS :\r
+                               return JRONN_INFO.getVersion();\r
+                       case MafftWS :\r
+                               return MAFFT_INFO.getVersion();\r
+                       case MuscleWS :\r
+                               return MUSCLE_INFO.getVersion();\r
+                       case ProbconsWS :\r
+                               return PROBCONS_INFO.getVersion();\r
+                       case TcoffeeWS :\r
+                               return TCOFFEE_INFO.getVersion();\r
+                       case RNAalifoldWS :\r
+                               return RNAALIFOLD_INFO.getVersion();\r
+                       default :\r
+                               throw new RuntimeException("Unrecognised Web Service Type " + this + " - Should never happen!");\r
+               }\r
+       }\r
+\r
+       public String getServiceGroup() {\r
+               switch (this) {\r
+                       case AAConWS :\r
+                               return "annotation";\r
+                       case JpredWS :\r
+                               return "annotation";\r
+                       case ClustalOWS :\r
+                               return "alignment";\r
+                       case ClustalWS :\r
+                               return "alignment";\r
+                       case DisemblWS :\r
+                               return "disorder";\r
+                       case GlobPlotWS :\r
+                               return "disorder";\r
+                       case IUPredWS :\r
+                               return "disorder";\r
+                       case JronnWS :\r
+                               return "disorder";\r
+                       case MafftWS :\r
+                               return "alignment";\r
+                       case MuscleWS :\r
+                               return "alignment";\r
+                       case ProbconsWS :\r
+                               return "alignment";\r
+                       case TcoffeeWS :\r
+                               return "alignment";\r
+                       case RNAalifoldWS :\r
+                               return "annotation";\r
+                       default :\r
+                               throw new RuntimeException("Unrecognised Web Service Type " + this + " - Should never happen!");\r
+               }\r
+       }\r
+       \r
+       static ServiceInfo AACON_INFO = new ServiceInfo(AAConWS,\r
+                       "in preparation", "1.0", "http://www.compbio.dundee.ac.uk/aacon");\r
+\r
+       static ServiceInfo JPRED_INFO = new ServiceInfo(JpredWS,\r
+                       "Cole C, Barber JD, Barton GJ.reparation" + \r
+                       "The Jpred 3 secondary structure prediction server\n" +\r
+                       "Nucl. Acids Res. (2008) 36 (suppl 2): W197-W201., doi: 10.1093/nar/gkn238", \r
+                       "3.0.3", "http://www.compbio.dundee.ac.uk/www-jpred");\r
+       \r
+       static ServiceInfo CLUSTAL_INFO = new ServiceInfo(ClustalWS,\r
+                       "Larkin MA, Blackshields G, Brown NP, Chenna R, McGettigan PA, McWilliam H, Valentin F, " + \r
+                       "Wallace IM, Wilm A, Lopez R, Thompson JD, Gibson TJ, Higgins DG.\n" +\r
+                       "(2007). Clustal W and Clustal X version 2.0. Bioinformatics, 23, 2947-2948.",\r
+                       "2.0.12", "http://www.clustal.org/clustal2/");\r
+\r
+       static ServiceInfo CLUSTAL_OMEGA_INFO = new ServiceInfo(ClustalOWS,\r
                        "Fast, scalable generation of high quality protein multiple sequence alignments using Clustal Omega\r\n"\r
-                                       + "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",\r
-                       "1.0.2", "http://www.clustal.org/omega").toString();\r
-       public static final String DISEMBL_INFO = new ServiceInfo(\r
-                       DisemblWS,\r
+                       + "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",\r
+                       "1.0.2", "http://www.clustal.org/omega");\r
+\r
+       static ServiceInfo DISEMBL_INFO = new ServiceInfo(DisemblWS,\r
                        "R. Linding, L.J. Jensen, F. Diella, P. Bork, T.J. Gibson and R.B. Russell\r\n"\r
-                                       + "Protein disorder prediction: implications for structural proteomics\r\n"\r
-                                       + "Structure Vol 11, Issue 11, 4 November 2003", "1.5",\r
-                       "http://dis.embl.de/").toString();\r
-       public static final String GLOBPLOT_INFO = new ServiceInfo(\r
-                       GlobPlotWS,\r
-                       "Rune Linding, Robert B. Russell, Victor Neduva and Toby J. Gibson "\r
-                                       + "'GlobPlot: exploring protein sequences for globularity and disorder.' Nucl. Acids Res. (2003) 31 (13): 3701-3708. doi: 10.1093/nar/gkg519\r\n",\r
-                       "2.3", "http://globplot.embl.de/").toString();\r
-       public static final String IUPRED_INFO = new ServiceInfo(\r
-                       IUPredWS,\r
+                       + "Protein disorder prediction: implications for structural proteomics\r\n"\r
+                       + "Structure Vol 11, Issue 11, 4 November 2003", "1.5",\r
+                       "http://dis.embl.de/");\r
+\r
+       static ServiceInfo GLOBPLOT_INFO = new ServiceInfo(GlobPlotWS,\r
+                       "Rune Linding, Robert B. Russell, Victor Neduva and Toby J. Gibson " +\r
+                       "'GlobPlot: exploring protein sequences for globularity and disorder.' " + \r
+                       "Nucl. Acids Res. (2003) 31 (13): 3701-3708. doi: 10.1093/nar/gkg519\r\n",\r
+                       "2.3", "http://globplot.embl.de/");\r
+\r
+       static ServiceInfo IUPRED_INFO = new ServiceInfo(IUPredWS,\r
                        "The Pairwise Energy Content Estimated from Amino Acid Composition Discriminates between Folded and Intrinsically Unstructured Proteins\r\n"\r
-                                       + "Zsuzsanna Dosztányi, Veronika Csizmók, Péter Tompa and István Simon\r\n"\r
-                                       + "J. Mol. Biol. (2005) 347, 827-839.", "1.0",\r
-                       "http://iupred.enzim.hu/").toString();\r
-       public static final String TCOFFEE_INFO = new ServiceInfo(TcoffeeWS,\r
+                       + "Zsuzsanna Dosztányi, Veronika Csizmók, Péter Tompa and István Simon\r\n"\r
+                       + "J. Mol. Biol. (2005) 347, 827-839.", "1.0",\r
+                       "http://iupred.enzim.hu/");\r
+\r
+       static ServiceInfo TCOFFEE_INFO = new ServiceInfo(TcoffeeWS,\r
                        "T-Coffee: A novel method for multiple sequence alignments  "\r
-                                       + "Notredame, Higgins, Heringa, JMB, 302 (205-217) 2000",\r
-                       "8.99", "http://tcoffee.crg.cat/apps/tcoffee/index.html")\r
-                       .toString();\r
-       public static final String MUSCLE_INFO = new ServiceInfo(\r
-                       MuscleWS,\r
+                       + "Notredame, Higgins, Heringa, JMB, 302 (205-217) 2000",\r
+                       "8.99", "http://tcoffee.crg.cat/apps/tcoffee/index.html");\r
+\r
+       static ServiceInfo MUSCLE_INFO = new ServiceInfo(MuscleWS,\r
                        "Edgar, R.C. (2004) MUSCLE: multiple sequence alignment with high accuracy and high throughput.Nucleic Acids Res. 32(5):1792-1797.\r\n"\r
-                                       + "doi:10.1093/nar/gkh340", "3.8.31",\r
-                       "http://www.drive5.com/muscle/").toString();\r
-       public static final String PROBCONS_INFO = new ServiceInfo(\r
-                       ProbconsWS,\r
+                       + "doi:10.1093/nar/gkh340", "3.8.31",\r
+                       "http://www.drive5.com/muscle/");\r
+\r
+       static ServiceInfo PROBCONS_INFO = new ServiceInfo(ProbconsWS,\r
                        "Do, C.B., Mahabhashyam, M.S.P., Brudno, M., and Batzoglou, S. 2005. PROBCONS: "\r
-                                       + "Probabilistic Consistency-based Multiple Sequence Alignment. Genome Research 15: 330-340. ",\r
-                       "1.12", "http://probcons.stanford.edu/").toString();;\r
-       public static final String JRONN_INFO = new ServiceInfo(\r
-                       JronnWS,\r
+                       + "Probabilistic Consistency-based Multiple Sequence Alignment. Genome Research 15: 330-340. ",\r
+                       "1.12", "http://probcons.stanford.edu/");\r
+\r
+       static ServiceInfo JRONN_INFO = new ServiceInfo(JronnWS,\r
                        "unpublished, original algorithm Yang,Z.R., Thomson,R., McMeil,P. and Esnouf,R.M. (2005) "\r
                                        + "RONN: the bio-basis function neural network technique applied to the "\r
                                        + "dectection of natively disordered regions in proteins Bioinformatics 21: 3369-3376\r\n",\r
-                       "1.0", "http://www.compbio.dundee.ac.uk/jabaws/").toString();;\r
-       public static final String MAFFT_INFO = new ServiceInfo(\r
-                       MafftWS,\r
+                       "1.0", "http://www.compbio.dundee.ac.uk/jabaws/");\r
+\r
+       static ServiceInfo MAFFT_INFO = new ServiceInfo(MafftWS,\r
                        "Katoh, Toh 2010 (Bioinformatics 26:1899-1900)\r\n"\r
                                        + "Parallelization of the MAFFT multiple sequence alignment program. ",\r
-                       "6.8.57", "http://mafft.cbrc.jp/alignment/software/").toString();;\r
+                       "6.8.57", "http://mafft.cbrc.jp/alignment/software/");\r
+\r
+       static ServiceInfo RNAALIFOLD_INFO = new ServiceInfo(RNAalifoldWS,\r
+                       "Ivo L. Hofacker, Martin Fekete, and Peter F. Stadler 'Secondary Structure Prediction"\r
+                       + " for Aligned RNA Sequences'. J.Mol.Biol. 319: 1059-1066, 2002. Stephan H. Bernhart,"\r
+                       + " Ivo L. Hofacker, Sebastian Will, Andreas R. Gruber, and Peter F. Stadler. "\r
+                       + "'RNAalifold: Improved consensus structure prediction for RNA alignments'. BMC Bioinformatics, 9:474, 2008.\r\n",\r
+                       "2.1.2", "http://www.tbi.univie.ac.at/RNA/");\r
 \r
        @XmlAccessorType(XmlAccessType.FIELD)\r
        static class ServiceInfo {\r
@@ -195,7 +333,7 @@ public enum Services {
                String reference;\r
                String version;\r
                String moreinfo;\r
-               final static String jabaws_version = "2.0";\r
+               final static String jabaws_version = "2.5";\r
                final static String line_delimiter = "\n";\r
 \r
                private ServiceInfo() {\r
@@ -211,16 +349,23 @@ public enum Services {
 \r
                @Override\r
                public String toString() {\r
-                       String value = "SERVICE: " + service + " version " + version\r
-                                       + line_delimiter;\r
+                       String value = "SERVICE: " + service + " version " + version + line_delimiter + "\n";\r
                        value += "JABAWS v. " + jabaws_version + line_delimiter;\r
-                       value += "REFERENCES: " + reference + line_delimiter;\r
+                       value += "REFERENCE: " + reference + line_delimiter + "\n";\r
                        value += "MORE INFORMATION: " + moreinfo + line_delimiter;\r
                        return value;\r
                }\r
+\r
+               public String getReference() {\r
+                       return "REFERENCE: " + reference + line_delimiter + "<br>MORE INFORMATION: " + moreinfo + line_delimiter;\r
+               }\r
+\r
+               public String getVersion() {\r
+                       return version;\r
+               }\r
        }\r
 \r
        public static void main(String[] args) {\r
                System.out.println(MUSCLE_INFO);\r
        }\r
-}
\ No newline at end of file
+}\r