X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FWSClient.java;h=33aea909e67225d72871fece3875091ba7913984;hb=13f232d8ecdc2665be8239a4049022127ea8399e;hp=29a8b9244cc1240ca3adde2aa5851df1595a06b6;hpb=6652334084a8900307745466b3188c86616793fa;p=jalview.git diff --git a/src/jalview/ws/WSClient.java b/src/jalview/ws/WSClient.java index 29a8b92..33aea90 100755 --- a/src/jalview/ws/WSClient.java +++ b/src/jalview/ws/WSClient.java @@ -1,105 +1,199 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. - * - * This program 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 - * GNU General Public License for more details. - * + * + * Jalview 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 GNU General Public License for more details. + * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.ws; -import ext.vamsas.*; -import jalview.gui.*; +import jalview.gui.AlignFrame; +import jalview.gui.Desktop; +import jalview.gui.WebserviceInfo; +import jalview.gui.WsJobParameters; +import jalview.util.MessageManager; +import jalview.ws.api.ServiceWithParameters; +import jalview.ws.api.UIinfo; +import jalview.ws.params.ArgumentI; +import jalview.ws.params.ParamDatastoreI; +import jalview.ws.params.WsParamSetI; -public class WSClient +import java.util.List; + +public abstract class WSClient // implements WSMenuEntryProviderI { /** - * WSClient holds the basic attributes that are displayed to the user - * for all jalview web service clients + * WSClient holds the basic attributes that are displayed to the user for all + * jalview web service clients */ /** * displayed name for this web service */ protected String WebServiceName; + /** - * specific job title (e.g. 'ClustalW Alignment of Selection from Aligment from Cut and Paste input') + * specific job title (e.g. 'ClustalW Alignment of Selection from Aligment + * from Cut and Paste input') */ protected String WebServiceJobTitle; + /** - * String giving additional information such as method citations for this service + * String giving additional information such as method citations for this + * service */ protected String WebServiceReference; + /** * Service endpoint */ protected String WsURL; + /** * Web service information used to initialise the WSClient attributes */ protected WebserviceInfo wsInfo; + /** - * total number of jobs managed by this web service client instance. + * the root object for the service client + */ + protected UIinfo serviceHandle; + + /** + * total number of jobs managed by this web service client instance. */ int jobsRunning = 0; + /** * TODO: this is really service metadata, and should be moved elsewhere. * mappings between abstract interface names and menu entries */ protected java.util.Hashtable ServiceActions; + + /** + * alignFrame associated with this client + */ + protected AlignFrame alignFrame; { ServiceActions = new java.util.Hashtable(); ServiceActions.put("MsaWS", "Multiple Sequence Alignment"); ServiceActions.put("SecStrPred", "Secondary Structure Prediction"); }; + + /** + * The preset for the job executed by this client (may be null) + */ + protected WsParamSetI preset; + + /** + * The parameters for the job executed by this client (may be null) + */ + protected List paramset; + public WSClient() { } + /** - * initialise WSClient service information attributes from the service handle - * @param sh - * @return the service instance information GUI for this client and job. + * base constructor for a web service with parameters. Extending classes + * should implement this constructor with additional logic to verify that + * preset and arguments are compatible with the service being configured. + * + * @param _alignFrame + * @param preset + * @param arguments */ - protected WebserviceInfo setWebService(ServiceHandle sh) + public WSClient(AlignFrame _alignFrame, WsParamSetI preset, + List arguments) { - return setWebService(sh, false); + alignFrame = _alignFrame; + this.preset = preset; + this.paramset = arguments; } - /** - * initialise WSClient service information attributes from the service handle - * @param sh - * @param headless true implies no GUI objects will be created. - * @return the service instance information GUI for this client and job. - */ - protected WebserviceInfo setWebService(ServiceHandle sh, boolean headless) + + protected WebserviceInfo setWebService(UIinfo serv, boolean b) { - WebServiceName = sh.getName(); - if (ServiceActions.containsKey(sh.getAbstractName())) + WebServiceName = serv.getName(); + WebServiceJobTitle = serv.getActionText(); + WsURL = serv.getHostURL(); + if (!b) { - WebServiceJobTitle = sh.getName(); // TODO: control sh.Name specification properly - // add this for short names. +(String) ServiceActions.get(sh.getAbstractName()); + return new WebserviceInfo(WebServiceJobTitle, + WebServiceJobTitle + " using service hosted at " + + WsURL + "\n" + + (serv.getDescription() != null + ? serv.getDescription() + : ""), + false); } - else - { - WebServiceJobTitle = sh.getAbstractName() + " using " + sh.getName(); + return null; + } - } - WebServiceReference = sh.getDescription(); - WsURL = sh.getEndpointURL(); - WebserviceInfo wsInfo = null; - if (!headless) + /** + * called to open a parameter editing dialog for parameterised services + * + * @param sh + * @param editParams + * @return + */ + protected boolean processParams(ServiceWithParameters sh, + boolean editParams) + { + return processParams(sh, editParams, false); + } + + protected boolean processParams(ServiceWithParameters sh, + boolean editParams, + boolean adjustingExisting) + { + + if (editParams) { - wsInfo = new WebserviceInfo(WebServiceJobTitle, - WebServiceReference); + // always do this + sh.initParamStore(Desktop.getUserParameterStore()); + + WsJobParameters jobParams = (preset == null && paramset != null + && paramset.size() > 0) + ? new WsJobParameters((ParamDatastoreI) null, sh, + (WsParamSetI) null, paramset) + : new WsJobParameters((ParamDatastoreI) null, sh, + preset, (List) null); + if (adjustingExisting) + { + jobParams.setName(MessageManager + .getString("label.adjusting_parameters_for_calculation")); + } + if (!jobParams.showRunDialog()) + { + return false; // dialog cancelled + } + + WsParamSetI prset = jobParams.getPreset(); + if (prset == null) + { + paramset = jobParams.isServiceDefaults() ? null + : jobParams.getJobParams(); + this.preset = null; + } + else + { + this.preset = prset; // ((JabaPreset) prset).p; + paramset = null; // no user supplied parameters. + } } - return wsInfo; + return true; } + }