formatting
[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
84             .getJabafromJwsArgs(jobArgset);
85   }
86
87   public void setJobArgset(List<Argument> jobArgset)
88   {
89     // TODO: test if parameters valid for service
90     this.jobArgset = jobArgset == null ? null : JabaParamStore
91             .getJwsArgsfromJaba(jobArgset);
92   }
93
94   public String getWsParamFile()
95   {
96     List<Option> opts = null;
97     if (jobArgset != null)
98     {
99       opts = JabaParamStore.getJabafromJwsArgs(jobArgset);
100     }
101     else
102     {
103       if (preset != null)
104       {
105         opts = JabaParamStore.getJabafromJwsArgs(preset.getArguments());
106       }
107     }
108     if (opts == null || opts.size() == 0)
109     {
110       return "";
111     }
112     StringBuffer pset = new StringBuffer();
113     for (String ps : ParameterUtils.writeParameterSet(opts, " "))
114     {
115       pset.append(ps);
116       pset.append("\n");
117     }
118     return pset.toString();
119   }
120
121   @Override
122   public String getServiceURI()
123   {
124     return service.getServiceTypeURI();
125   }
126
127   @Override
128   public String[] getServiceURLs()
129   {
130     return new String[]
131     { service.getUri() };
132   }
133 }