import jalview.schemes.*;
import jalview.util.Platform;
import jalview.util.jarInputStreamProvider;
+import jalview.ws.jws2.AAConsClient;
+import jalview.ws.jws2.Jws2Discoverer;
+import jalview.ws.jws2.dm.AAConsSettings;
+import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.ArgumentI;
+import jalview.ws.params.AutoCalcSetting;
+import jalview.ws.params.WsParamSetI;
/**
* Write out the current jalview desktop state as a Jalview XML stream.
}
JSeq jseq;
+ Set<String> calcIdSet=new HashSet<String>();
// SAVE SEQUENCES
String id = "";
}
}
}
-
// SAVE ANNOTATIONS
/**
* store forward refs from an annotationRow to any groups
if (aa[i].getCalcId()!=null)
{
+ calcIdSet.add(aa[i].getCalcId());
an.setCalcId(aa[i].getCalcId());
}
}
}
}
+ if (calcIdSet.size()>0)
+ {
+ for (String calcId:calcIdSet)
+ {
+ if (calcId.trim().length()>0) {
+ view.addCalcIdParam(createCalcIdParam(calcId, av));
+ }
+ }
+ }
jms.addViewport(view);
return object;
}
+ private CalcIdParam createCalcIdParam(String calcId, AlignViewport av)
+ {
+ AutoCalcSetting settings = av.getCalcIdSettingsFor(calcId);
+ if (settings != null)
+ {
+ CalcIdParam vCalcIdParam = new CalcIdParam();
+ vCalcIdParam.setCalcId(calcId);
+ vCalcIdParam.addServiceURL(settings.getServiceURI());
+ // generic URI allowing a third party to resolve another instance of the
+ // service used for this calculation
+ for (String urls:settings.getServiceURLs())
+ {
+ vCalcIdParam.addServiceURL(urls);
+ }
+ vCalcIdParam.setVersion("1.0");
+ if (settings.getPreset() != null)
+ {
+ WsParamSetI setting = settings.getPreset();
+ vCalcIdParam.setName(setting.getName());
+ vCalcIdParam.setDescription(setting.getDescription());
+ }
+ else
+ {
+ vCalcIdParam.setName("");
+ vCalcIdParam.setDescription("Last used parameters");
+ }
+ // need to be able to recover 1) settings 2) user-defined presets or
+ // recreate settings from preset 3) predefined settings provided by
+ // service - or settings that can be transferred (or discarded)
+ vCalcIdParam.setParameters(settings
+ .getWsParamFile());
+ vCalcIdParam.setAutoUpdate(settings.isAutoUpdate());
+ // todo - decide if updateImmediately is needed for any projects.
+
+ return vCalcIdParam;
+ }
+ return null;
+ }
+
+ private boolean recoverCalcIdParam(CalcIdParam calcIdParam,
+ AlignViewport av)
+ {
+ if (calcIdParam.getVersion().equals("1.0"))
+ {
+ Jws2Instance service=Jws2Discoverer.getDiscoverer().getPreferredServiceFor(calcIdParam.getServiceURL());
+ if (service!=null)
+ {
+ WsParamSetI parmSet=null;
+ try {
+ service.getParamStore().parseServiceParameterFile(calcIdParam.getName(), calcIdParam.getDescription(), calcIdParam.getServiceURL(), calcIdParam.getParameters());
+ } catch (IOException x)
+ {
+ warn("Couldn't parse parameter data for "+calcIdParam.getCalcId(), x);
+ return false;
+ }
+ List<ArgumentI> argList=null;
+ if (calcIdParam.getName().length()>0) {
+ parmSet = service.getParamStore().getPreset(calcIdParam.getName());
+ if (parmSet!=null)
+ {
+ // TODO : check we have a good match with settings in AACons - otherwise we'll need to create a new preset
+ }
+ }
+ else {
+ argList = parmSet.getArguments();
+ parmSet=null;
+ }
+ AAConsSettings settings = new AAConsSettings(calcIdParam.isAutoUpdate(), service, parmSet, argList);
+ av.setCalcIdSettingsFor(calcIdParam.getCalcId(), settings, calcIdParam.isNeedsUpdate());
+ } else {
+ warn("Cannot resolve a service for the parameters used in this project. Try configuring a JABAWS server.");
+ return false;
+ }
+ }
+ else
+ throw new Error("Unsupported Version for calcIdparam "
+ + calcIdParam.toString());
+ return false;
+ }
/**
* External mapping between jalview objects and objects yielding a valid and
* unique object ID string. This is null for normal Jalview project IO, but