X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=webservices%2Fcompbio%2Fws%2Fclient%2FServices.java;h=6626a5c0fe9622ef6b8194e1539b5831346595d9;hb=1e1c3681ba25ee1797a46f871b8c80f259afe2ca;hp=95a0a891678c6c22e332f2461d092a5fc18158c0;hpb=6e1c873d0879f462b1fb1a1efa444cf993a9e76a;p=jabaws.git diff --git a/webservices/compbio/ws/client/Services.java b/webservices/compbio/ws/client/Services.java index 95a0a89..6626a5c 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,41 +18,118 @@ package compbio.ws.client; +import java.io.File; import java.net.URL; +import java.util.Set; import javax.xml.namespace.QName; import javax.xml.ws.Service; -import compbio.data.msa.Annotation; 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 { - MafftWS, MuscleWS, ClustalWS, TcoffeeWS, ProbconsWS, AAConWS; + MafftWS, MuscleWS, ClustalWS, ClustalOWS, TcoffeeWS, ProbconsWS, AAConWS, JronnWS, DisemblWS, GlobPlotWS, IUPredWS; public static Services getService(String servName) { servName = servName.trim().toLowerCase(); - if (servName.equalsIgnoreCase(MafftWS.toString())) { - return MafftWS; + for (Services service : Services.values()) { + if (service.toString().equalsIgnoreCase(servName)) { + return service; + } } - if (servName.equalsIgnoreCase(ClustalWS.toString())) { - return ClustalWS; - } - if (servName.equalsIgnoreCase(TcoffeeWS.toString())) { - return TcoffeeWS; + 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; + } } - if (servName.equalsIgnoreCase(MuscleWS.toString())) { - return MuscleWS; + 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); } - if (servName.equalsIgnoreCase(ProbconsWS.toString())) { - return ProbconsWS; + } + + 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); } - if (servName.equalsIgnoreCase(AAConWS.toString())) { - return AAConWS; + 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; } @@ -62,30 +139,49 @@ public enum Services { return Service.create(url, qname); } - JABAService getInterface(Service service) { - assert service != null; - - QName portName = new QName(service.getServiceName().getNamespaceURI(), - this.toString() + "Port"); + public static String toString(Set services) { + if (services == null || services.isEmpty()) { + return ""; + } + String value = ""; + String delim = ", "; + for (Services serv : services) { + value += serv.toString() + delim; + } + value = value.substring(0, value.length() - delim.length()); + return value; + } + Class getServiceType() { switch (this) { + // deliberate leaking case AAConWS : - - return service.getPort(portName, Annotation.class); + case JronnWS : + case DisemblWS : + case GlobPlotWS : + case IUPredWS : + return SequenceAnnotation.class; // deliberate leaking case ClustalWS : + case ClustalOWS : case MafftWS : case MuscleWS : case ProbconsWS : case TcoffeeWS : - // TODO remove - System.out.println("Qname from serv: " + portName); - - return service.getPort(portName, MsaWS.class); + return MsaWS.class; default : - throw new RuntimeException("Should never happened!"); + throw new RuntimeException("Unrecognised Web Service Type " + + this + " - Should never happened!"); } } + + JABAService getInterface(Service service) { + assert service != null; + + QName portName = new QName(service.getServiceName().getNamespaceURI(), + this.toString() + "Port"); + return service.getPort(portName, this.getServiceType()); + } } \ No newline at end of file