X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Frest%2FRestClient.java;h=0394fea26e1448a9924be065d8726c1a3809e94c;hb=d043ce47fc710d3eb2629ba926a8a7417bd67d8c;hp=255ab587b2f1252d0cd2c9cfaf5086ca84613fe5;hpb=04c8f7bff663aa469127e9eed4164e02933782f1;p=jalview.git diff --git a/src/jalview/ws/rest/RestClient.java b/src/jalview/ws/rest/RestClient.java index 255ab58..0394fea 100644 --- a/src/jalview/ws/rest/RestClient.java +++ b/src/jalview/ws/rest/RestClient.java @@ -20,6 +20,8 @@ */ package jalview.ws.rest; +import jalview.bin.ApplicationSingletonProvider; +import jalview.bin.ApplicationSingletonProvider.ApplicationSingletonI; import jalview.bin.Cache; import jalview.datamodel.AlignmentView; import jalview.gui.AlignFrame; @@ -28,15 +30,14 @@ import jalview.gui.AlignmentPanel; import jalview.gui.Desktop; import jalview.gui.JvOptionPane; import jalview.gui.WebserviceInfo; -import jalview.io.packed.DataProvider.JvDataType; import jalview.util.MessageManager; import jalview.ws.WSClient; import jalview.ws.WSClientI; import jalview.ws.WSMenuEntryProviderI; +import jalview.ws.rest.clientdefs.ShmrRestClient; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.util.Hashtable; import java.util.Vector; import javax.swing.JMenu; @@ -49,8 +50,24 @@ import javax.swing.event.MenuListener; * */ public class RestClient extends WSClient - implements WSClientI, WSMenuEntryProviderI +implements WSClientI, WSMenuEntryProviderI, ApplicationSingletonI { + @SuppressWarnings("unused") + private RestClient() + { + // accessed by ApplicationSingletonProvider + } + + +private static RestClient getInstance() +{ +return (RestClient) ApplicationSingletonProvider.getInstance(RestClient.class); +} + +public static final String RSBS_SERVICES = "RSBS_SERVICES"; + + + protected Vector services = null; RestServiceDescription service; public RestClient(RestServiceDescription rsd) @@ -99,17 +116,17 @@ public class RestClient extends WSClient { WebServiceJobTitle = MessageManager .formatMessage("label.webservice_job_title", new String[] - { service.details.Action, service.details.Name }); - WebServiceName = service.details.Name; + { service.details.getAction(), service.details.getName() }); + WebServiceName = service.details.getName(); WebServiceReference = "No reference - go to url for more info"; - if (service.details.description != null) + if (service.details.getDescription() != null) { - WebServiceReference = service.details.description; + WebServiceReference = service.details.getDescription(); } if (!headless) { wsInfo = new WebserviceInfo(WebServiceJobTitle, - WebServiceName + "\n" + WebServiceReference, true); + WebServiceName + "\n" + WebServiceReference, Desktop.FRAME_MAKE_VISIBLE); wsInfo.setRenderAsHtml(true); } @@ -141,10 +158,10 @@ public class RestClient extends WSClient public void attachWSMenuEntry(final JMenu wsmenu, final AlignFrame alignFrame) { - JMenuItem submit = new JMenuItem(service.details.Name); + JMenuItem submit = new JMenuItem(service.details.getName()); submit.setToolTipText(MessageManager .formatMessage("label.rest_client_submit", new String[] - { service.details.Action, service.details.Name })); + { service.details.getAction(), service.details.getName() })); submit.addActionListener(new ActionListener() { @@ -329,7 +346,7 @@ public class RestClient extends WSClient else { // TODO: try to tell the user why the job couldn't be started. - JvOptionPane.showMessageDialog(Desktop.desktop, + JvOptionPane.showMessageDialog(Desktop.getDesktopPane(), (jobsthread.hasWarnings() ? jobsthread.getWarnings() : MessageManager.getString( "label.job_couldnt_be_started_check_input")), @@ -339,45 +356,6 @@ public class RestClient extends WSClient } } - public static RestClient makeShmmrRestClient() - { - String action = "Analysis", - description = "Sequence Harmony and Multi-Relief (Brandt et al. 2010)", - name = MessageManager.getString("label.multiharmony"); - Hashtable iparams = new Hashtable(); - jalview.ws.rest.params.JobConstant toolp; - // toolp = new jalview.ws.rest.JobConstant("tool","jalview"); - // iparams.put(toolp.token, toolp); - // toolp = new jalview.ws.rest.params.JobConstant("mbjob[method]","shmr"); - // iparams.put(toolp.token, toolp); - // toolp = new - // jalview.ws.rest.params.JobConstant("mbjob[description]","step 1"); - // iparams.put(toolp.token, toolp); - // toolp = new jalview.ws.rest.params.JobConstant("start_search","1"); - // iparams.put(toolp.token, toolp); - // toolp = new jalview.ws.rest.params.JobConstant("blast","0"); - // iparams.put(toolp.token, toolp); - - jalview.ws.rest.params.Alignment aliinput = new jalview.ws.rest.params.Alignment(); - // SHMR server has a 65K limit for content pasted into the 'ali' parameter, - // so we always upload our files. - aliinput.token = "ali_file"; - aliinput.writeAsFile = true; - iparams.put(aliinput.token, aliinput); - jalview.ws.rest.params.SeqGroupIndexVector sgroups = new jalview.ws.rest.params.SeqGroupIndexVector(); - sgroups.setMinsize(2); - sgroups.min = 2;// need at least two group defined to make a partition - iparams.put("groups", sgroups); - sgroups.token = "groups"; - sgroups.sep = " "; - RestServiceDescription shmrService = new RestServiceDescription(action, - description, name, - "http://zeus.few.vu.nl/programs/shmrwww/index.php?tool=jalview", // ?tool=jalview&mbjob[method]=shmr&mbjob[description]=step1", - "?tool=jalview", iparams, true, false, '-'); - // a priori knowledge of the data returned from the service - shmrService.addResultDatatype(JvDataType.ANNOTATION); - return new RestClient(shmrService); - } public AlignmentPanel recoverAlignPanelForView() { @@ -399,20 +377,23 @@ public class RestClient extends WSClient return true; } - protected static Vector services = null; - - public static final String RSBS_SERVICES = "RSBS_SERVICES"; public static RestClient[] getRestClients() { + return getInstance().getClients(); + } + + private RestClient[] getClients() + { if (services == null) { - services = new Vector(); + services = new Vector<>(); try { for (RestServiceDescription descr : RestServiceDescription - .parseDescriptions(Cache.getDefault(RSBS_SERVICES, - makeShmmrRestClient().service.toString()))) + .parseDescriptions(Cache.getDefault( + RSBS_SERVICES, + ShmrRestClient.makeShmmrRestClient().service.toString()))) { services.add(descr.toString()); } @@ -435,7 +416,7 @@ public class RestClient extends WSClient public String getAction() { - return service.details.Action; + return service.details.getAction(); } public RestServiceDescription getRestDescription() @@ -445,7 +426,7 @@ public class RestClient extends WSClient public static Vector getRsbsDescriptions() { - Vector rsbsDescrs = new Vector(); + Vector rsbsDescrs = new Vector<>(); for (RestClient rsbs : getRestClients()) { rsbsDescrs.add(rsbs.getRestDescription().toString()); @@ -457,10 +438,11 @@ public class RestClient extends WSClient { if (rsbsUrls != null) { + // TODO: consider validating services ? - services = new Vector(rsbsUrls); + getInstance().services = new Vector(rsbsUrls); StringBuffer sprop = new StringBuffer(); - for (String s : services) + for (String s : getInstance().services) { sprop.append(s); }