X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2Fjws2%2FJws2ClientFactory.java;h=245652884175f7920f8e42d683b73383c637785a;hb=7b9f93ca2c7f5e5d9347f00be309522f76e3e778;hp=6a177dd566cd0e1cc4b5f6d216031bd72b001c8b;hpb=ddc73338c0a046369b53151e8b3ebfba4d385df7;p=jalview.git diff --git a/src/jalview/ws/jws2/Jws2ClientFactory.java b/src/jalview/ws/jws2/Jws2ClientFactory.java index 6a177dd..2456528 100644 --- a/src/jalview/ws/jws2/Jws2ClientFactory.java +++ b/src/jalview/ws/jws2/Jws2ClientFactory.java @@ -5,8 +5,10 @@ import jalview.bin.Cache; import jalview.gui.AlignFrame; import jalview.gui.JvSwingUtils; import jalview.util.MessageManager; +import jalview.ws.api.ServiceWithParameters; import jalview.ws.jws2.dm.AAConSettings; import jalview.ws.jws2.jabaws2.Jws2Instance; +import jalview.ws.params.AutoCalcSetting; import jalview.ws.uimodel.AlignAnalysisUIText; import java.awt.event.ActionEvent; @@ -22,7 +24,7 @@ import javax.swing.event.MenuListener; public class Jws2ClientFactory { static boolean registerAAConWSInstance(final JMenu wsmenu, - final Jws2Instance service, final AlignFrame alignFrame) + final ServiceWithParameters service, final AlignFrame alignFrame) { final AlignAnalysisUIText aaui = service.getAlignAnalysisUI(); // null // ; // @@ -50,7 +52,7 @@ public class Jws2ClientFactory { List aaconClient = alignFrame.getViewport() .getCalcManager() - .getRegisteredWorkersOfClass(aaui.getClient()); + .getWorkersOfClass(aaui.getClient()); if (aaconClient != null && aaconClient.size() > 0) { SeqAnnotationServiceCalcWorker worker = (SeqAnnotationServiceCalcWorker) aaconClient @@ -84,18 +86,23 @@ public class Jws2ClientFactory @Override public void actionPerformed(ActionEvent arg0) { + List aaconClient = alignFrame.getViewport() .getCalcManager() - .getRegisteredWorkersOfClass(aaui.getClient()); - if (aaconClient != null && aaconClient.size() > 0) - { - removeCurrentAAConWorkerFor(aaui, alignFrame); - } - else + .getWorkersOfClass(SeqAnnotationServiceCalcWorker.class); + if (aaconClient != null) { - buildCurrentAAConWorkerFor(aaui, alignFrame); - + for (AlignCalcWorkerI worker : aaconClient) + { + if (((SeqAnnotationServiceCalcWorker) worker).getService() + .getClass().equals(aaui.getClient())) + { + removeCurrentAAConWorkerFor(aaui, alignFrame); + return; + } + } } + buildCurrentAAConWorkerFor(aaui, alignFrame); } }); @@ -135,12 +142,13 @@ public class Jws2ClientFactory return; } List aaconClient = alignFrame.getViewport() - .getCalcManager().getRegisteredWorkersOfClass( - SeqAnnotationServiceCalcWorker.class); + .getCalcManager() + .getWorkersOfClass(SeqAnnotationServiceCalcWorker.class); boolean serviceEnabled = false; if (aaconClient != null) { + // NB code duplicatino again! for (AlignCalcWorkerI _worker : aaconClient) { SeqAnnotationServiceCalcWorker worker = (SeqAnnotationServiceCalcWorker) _worker; @@ -183,7 +191,7 @@ public class Jws2ClientFactory * AACon server to use What parameters to use */ // could actually do a class search for this too - AAConSettings fave = (AAConSettings) alignFrame.getViewport() + AutoCalcSetting fave = alignFrame.getViewport() .getCalcIdSettingsFor(aaui.getCalcId()); if (fave == null) { @@ -201,13 +209,13 @@ public class Jws2ClientFactory private static void buildCurrentAAConWorkerFor( final AlignAnalysisUIText aaui, AlignFrame alignFrame, - Jws2Instance service) + ServiceWithParameters service) { /* * preferred settings Whether AACon is automatically recalculated Which * AACon server to use What parameters to use */ - AAConSettings fave = (AAConSettings) alignFrame.getViewport() + AutoCalcSetting fave = alignFrame.getViewport() .getCalcIdSettingsFor(aaui.getCalcId()); if (fave == null) { @@ -226,30 +234,31 @@ public class Jws2ClientFactory new SequenceAnnotationWSClient(fave, alignFrame, false); } - private static AAConSettings createDefaultAAConSettings( + private static AutoCalcSetting createDefaultAAConSettings( AlignAnalysisUIText aaui) { return createDefaultAAConSettings(aaui, null); } - private static AAConSettings createDefaultAAConSettings( - AlignAnalysisUIText aaui, Jws2Instance service) + private static AutoCalcSetting createDefaultAAConSettings( + AlignAnalysisUIText aaui, ServiceWithParameters service) { if (service != null) { - if (!service.getServiceType() - .equals(compbio.ws.client.Services.AAConWS.toString())) - { - Cache.log.warn( - "Ignoring invalid preferred service for AACon calculations (service type was " - + service.getServiceType() + ")"); - service = null; - } - else + // if (!service.getServiceType() + // .equals(compbio.ws.client.Services.AAConWS.toString())) + // { + // Cache.log.warn( + // "Ignoring invalid preferred service for AACon calculations (service + // type was " + // + service.getServiceType() + ")"); + // service = null; + // } + // else { // check service is actually in the list of currently avaialable // services - if (!Jws2Discoverer.getDiscoverer().getServices().contains(service)) + if (!PreferredServiceRegistry.getRegistry().contains(service)) { // it isn't .. service = null; @@ -259,7 +268,7 @@ public class Jws2ClientFactory if (service == null) { // get the default service for AACon - service = Jws2Discoverer.getDiscoverer().getPreferredServiceFor(null, + service = PreferredServiceRegistry.getRegistry().getPreferredServiceFor(null, aaui.getServiceType()); } if (service == null) @@ -269,13 +278,15 @@ public class Jws2ClientFactory throw new Error( MessageManager.getString("error.no_aacon_service_found")); } - return new AAConSettings(true, service, null, null); + return service instanceof Jws2Instance + ? new AAConSettings(true, service, null, null) + : new AutoCalcSetting(service, null, null, true); } private static void removeCurrentAAConWorkerFor(AlignAnalysisUIText aaui, AlignFrame alignFrame) { alignFrame.getViewport().getCalcManager() - .removeRegisteredWorkersOfClass(aaui.getClient()); + .removeWorkersOfClass(aaui.getClient()); } } \ No newline at end of file