Merge branch 'Jalview-JS/develop' into merge_js_develop
[jalview.git] / src / jalview / ws / jws2 / JabaWsParamTest.java
1 package jalview.ws.jws2;
2
3 import jalview.gui.WsJobParameters;
4 import jalview.util.MessageManager;
5 import jalview.ws.api.ServiceWithParameters;
6 import jalview.ws.jws2.jabaws2.Jws2Instance;
7
8 import java.awt.BorderLayout;
9 import java.awt.event.WindowEvent;
10 import java.awt.event.WindowListener;
11 import java.util.Iterator;
12 import java.util.List;
13 import java.util.Vector;
14
15 import javax.swing.JFrame;
16 import javax.swing.JPanel;
17
18 import compbio.metadata.Option;
19 import compbio.metadata.Parameter;
20 import compbio.metadata.Preset;
21 import compbio.metadata.PresetManager;
22
23 public class JabaWsParamTest
24 {
25
26   /**
27    * testing method - grab a service and parameter set and show the window
28    * 
29    * @param args
30    */
31   public static void main(String[] args)
32   {
33     jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer
34             .getInstance();
35     int p = 0;
36     if (args.length > 0)
37     {
38       Vector<String> services = new Vector<>();
39       services.addElement(args[p++]);
40       Jws2Discoverer.getInstance().setServiceUrls(services);
41     }
42     try
43     {
44       disc.run();
45     } catch (Exception e)
46     {
47       System.err.println("Aborting. Problem discovering services.");
48       e.printStackTrace();
49       return;
50     }
51     Jws2Instance lastserv = null;
52     for (ServiceWithParameters service : disc.getServices())
53     {
54       // this will fail for non-JABAWS services !
55       lastserv = (Jws2Instance) service;
56       if (p >= args.length || service.getName().equalsIgnoreCase(args[p]))
57       {
58         if (lastserv != null)
59         {
60           List<Preset> prl = null;
61           Preset pr = null;
62           if (++p < args.length)
63           {
64             PresetManager prman = lastserv.getPresets();
65             if (prman != null)
66             {
67               pr = prman.getPresetByName(args[p]);
68               if (pr == null)
69               {
70                 // just grab the last preset.
71                 prl = prman.getPresets();
72               }
73             }
74           }
75           else
76           {
77             PresetManager prman = lastserv.getPresets();
78             if (prman != null)
79             {
80               prl = prman.getPresets();
81             }
82           }
83           Iterator<Preset> en = (prl == null) ? null : prl.iterator();
84           while (en != null && en.hasNext())
85           {
86             if (en != null)
87             {
88               if (!en.hasNext())
89               {
90                 en = prl.iterator();
91               }
92               pr = en.next();
93             }
94             {
95               System.out.println("Testing opts dupes for "
96                       + lastserv.getUri() + " : " + lastserv.getActionText()
97                       + ":" + pr.getName());
98               List<Option> rg = lastserv.getRunnerConfig().getOptions();
99               for (Option o : rg)
100               {
101                 try
102                 {
103                   Option cpy = jalview.ws.jws2.ParameterUtils.copyOption(o);
104                 } catch (Exception e)
105                 {
106                   System.err.println("Failed to copy " + o.getName());
107                   e.printStackTrace();
108                 } catch (Error e)
109                 {
110                   System.err.println("Failed to copy " + o.getName());
111                   e.printStackTrace();
112                 }
113               }
114             }
115             {
116               System.out.println("Testing param dupes:");
117               List<Parameter> rg = lastserv.getRunnerConfig()
118                       .getParameters();
119               for (Parameter o : rg)
120               {
121                 try
122                 {
123                   Parameter cpy = jalview.ws.jws2.ParameterUtils
124                           .copyParameter(o);
125                 } catch (Exception e)
126                 {
127                   System.err.println("Failed to copy " + o.getName());
128                   e.printStackTrace();
129                 } catch (Error e)
130                 {
131                   System.err.println("Failed to copy " + o.getName());
132                   e.printStackTrace();
133                 }
134               }
135             }
136             {
137               System.out.println("Testing param write:");
138               List<String> writeparam = null, readparam = null;
139               try
140               {
141                 writeparam = jalview.ws.jws2.ParameterUtils
142                         .writeParameterSet(
143                                 pr.getArguments(lastserv.getRunnerConfig()),
144                                 " ");
145                 System.out.println("Testing param read :");
146                 List<Option> pset = jalview.ws.jws2.ParameterUtils
147                         .processParameters(writeparam,
148                                 lastserv.getRunnerConfig(), " ");
149                 readparam = jalview.ws.jws2.ParameterUtils
150                         .writeParameterSet(pset, " ");
151                 Iterator<String> o = pr.getOptions().iterator(),
152                         s = writeparam.iterator(), t = readparam.iterator();
153                 boolean failed = false;
154                 while (s.hasNext() && t.hasNext())
155                 {
156                   String on = o.next(), sn = s.next(), st = t.next();
157                   if (!sn.equals(st))
158                   {
159                     System.out.println(
160                             "Original was " + on + " Phase 1 wrote " + sn
161                                     + "\tPhase 2 wrote " + st);
162                     failed = true;
163                   }
164                 }
165                 if (failed)
166                 {
167                   System.out.println(
168                           "Original parameters:\n" + pr.getOptions());
169                   System.out.println(
170                           "Wrote parameters in first set:\n" + writeparam);
171                   System.out.println(
172                           "Wrote parameters in second set:\n" + readparam);
173
174                 }
175               } catch (Exception e)
176               {
177                 e.printStackTrace();
178               }
179             }
180             WsJobParameters pgui = new WsJobParameters(null, lastserv,
181                     new JabaPreset(lastserv, pr), null);
182             JFrame jf = new JFrame(MessageManager
183                     .formatMessage("label.ws_parameters_for", new String[]
184                     { lastserv.getActionText() }));
185             JPanel cont = new JPanel(new BorderLayout());
186             pgui.validate();
187             cont.setPreferredSize(pgui.getPreferredSize());
188             cont.add(pgui, BorderLayout.CENTER);
189             jf.setLayout(new BorderLayout());
190             jf.add(cont, BorderLayout.CENTER);
191             jf.validate();
192             final Thread thr = Thread.currentThread();
193             jf.addWindowListener(new WindowListener()
194             {
195
196               @Override
197               public void windowActivated(WindowEvent e)
198               {
199                 // TODO Auto-generated method stub
200
201               }
202
203               @Override
204               public void windowClosed(WindowEvent e)
205               {
206               }
207
208               @Override
209               public void windowClosing(WindowEvent e)
210               {
211                 thr.interrupt();
212
213               }
214
215               @Override
216               public void windowDeactivated(WindowEvent e)
217               {
218                 // TODO Auto-generated method stub
219
220               }
221
222               @Override
223               public void windowDeiconified(WindowEvent e)
224               {
225                 // TODO Auto-generated method stub
226
227               }
228
229               @Override
230               public void windowIconified(WindowEvent e)
231               {
232                 // TODO Auto-generated method stub
233
234               }
235
236               @Override
237               public void windowOpened(WindowEvent e)
238               {
239                 // TODO Auto-generated method stub
240
241               }
242
243             });
244             jf.setVisible(true);
245             boolean inter = false;
246             while (!inter)
247             {
248               try
249               {
250                 Thread.sleep(10000);
251               } catch (Exception e)
252               {
253                 inter = true;
254               }
255               ;
256             }
257             jf.dispose();
258           }
259         }
260       }
261     }
262   }
263
264 }