JAL-976 fix AACon name typo in source and GUI
[jalview.git] / src / jalview / ws / jws2 / dm / AAConSettings.java
1 package jalview.ws.jws2.dm;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import compbio.metadata.Argument;
7 import compbio.metadata.Option;
8 import compbio.metadata.Preset;
9
10 import jalview.ws.jws2.JabaParamStore;
11 import jalview.ws.jws2.JabaPreset;
12 import jalview.ws.jws2.ParameterUtils;
13 import jalview.ws.jws2.jabaws2.Jws2Instance;
14 import jalview.ws.params.ArgumentI;
15 import jalview.ws.params.ParamManager;
16 import jalview.ws.params.WsParamSetI;
17
18 /**
19  * preferences for running AACon service
20  * 
21  * @author jprocter TODO: refactor to a generic 'last job and service run'
22  *         container ?
23  */
24 public class AAConSettings extends jalview.ws.params.AutoCalcSetting 
25 {
26   Jws2Instance service;
27
28   public AAConSettings(boolean autoUpdate, Jws2Instance service,
29           WsParamSetI preset, List<ArgumentI> jobArgset)
30   {
31     super(preset, jobArgset, autoUpdate);
32     this.service = service;
33   }
34
35   public Jws2Instance getService()
36   {
37     return service;
38   }
39
40   public void setService(Jws2Instance service)
41   {
42     this.service = service;
43     if (preset != null)
44     {
45       // migrate preset to new service
46       for (String url : preset.getApplicableUrls())
47       {
48         if (url.equals(service.getUri()))
49         {
50           return;
51         }
52       }
53       WsParamSetI pr = service.getParamStore().getPreset(preset.getName());
54       if (pr instanceof JabaPreset && preset instanceof JabaPreset)
55       {
56         // easy - Presets are identical (we assume)
57         preset = pr;
58         return;
59       }
60       List<ArgumentI> oldargs = new ArrayList<ArgumentI>(), newargs = new ArrayList<ArgumentI>();
61       oldargs.addAll(preset.getArguments());
62       // need to compare parameters
63       for (ArgumentI newparg : pr.getArguments())
64       {
65         if (!oldargs.remove(newparg))
66         {
67           newargs.add(newparg);
68         }
69       }
70       if (oldargs.size() == 0 && newargs.size() == 0)
71       {
72         // exact match.
73         preset = pr;
74         return;
75       }
76       // Try even harder to migrate arguments.
77       throw new Error("Parameter migration not implemented yet");
78     }
79   }
80
81   public List<Argument> getJobArgset()
82   {
83     return jobArgset==null ? null : JabaParamStore.getJabafromJwsArgs(jobArgset);
84   }
85
86   public void setJobArgset(List<Argument> jobArgset)
87   {
88     // TODO: test if parameters valid for service
89     this.jobArgset = jobArgset==null ? null : JabaParamStore.getJwsArgsfromJaba(jobArgset);
90   }
91
92   public String getWsParamFile()
93   {
94     List<Option> opts=null;
95     if (jobArgset!=null)
96     {
97       opts = JabaParamStore.getJabafromJwsArgs(jobArgset);
98     } else {
99       if (preset!=null)
100       {
101         opts = JabaParamStore.getJabafromJwsArgs(preset.getArguments());
102       }
103     }
104     if (opts==null  || opts.size()==0)
105     {
106       return "";
107     }
108     StringBuffer pset=new StringBuffer();
109     for (String ps:ParameterUtils.writeParameterSet(opts, " "))
110     {
111       pset.append(ps); pset.append("\n");
112     }
113     return pset.toString();
114   }
115
116   @Override
117   public String getServiceURI()
118   {
119     return service.getServiceTypeURI();
120   }
121   @Override
122   public String[] getServiceURLs()
123   {
124     return new String[] { service.getUri() };
125   }
126 }