/* Copyright (c) 2011 Peter Troshin * * 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 * * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache * License for more details. * * A copy of the license is in apache_license.txt. It is also available here: * @see: http://www.apache.org/licenses/LICENSE-2.0.txt * * Any republication or derived work distributed in source code form * must include this copyright and license notice. */ package compbio.ws.client; import java.net.URL; import java.util.Set; import javax.xml.namespace.QName; import javax.xml.ws.Service; import compbio.data.msa.JABAService; import compbio.data.msa.MsaWS; import compbio.data.msa.SequenceAnnotation; /** * 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) { servName = servName.trim().toLowerCase(); for (Services service : Services.values()) { if (service.toString().equalsIgnoreCase(servName)) { return service; } } return null; } Service getService(URL url, String sqname) { QName qname = new QName(sqname, this.toString()); return Service.create(url, qname); } 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 : 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 : return MsaWS.class; default : 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()); } }