Jalview 2.8 Source Header
[jalview.git] / test / jalview / ws / gui / Jws2ParamView.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
3  * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
10  *  
11  * Jalview is distributed in the hope that it will be useful, but 
12  * WITHOUT ANY WARRANTY; without even the implied warranty 
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14  * PURPOSE.  See the GNU General Public License for more details.
15  * 
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 package jalview.ws.gui;
19
20 import static org.junit.Assert.assertTrue;
21 import jalview.gui.WsJobParameters;
22 import jalview.ws.jws2.JabaPreset;
23 import jalview.ws.jws2.Jws2Discoverer;
24 import jalview.ws.jws2.jabaws2.Jws2Instance;
25
26 import java.awt.BorderLayout;
27 import java.awt.event.WindowEvent;
28 import java.awt.event.WindowListener;
29 import java.util.ArrayList;
30 import java.util.Iterator;
31 import java.util.List;
32 import java.util.Vector;
33
34 import javax.swing.JFrame;
35 import javax.swing.JPanel;
36
37 import org.junit.Test;
38
39 import compbio.metadata.Option;
40 import compbio.metadata.Parameter;
41 import compbio.metadata.Preset;
42 import compbio.metadata.PresetManager;
43
44 public class Jws2ParamView
45 {
46   /**
47    * test servers
48    */
49   public static String[] serviceUrls = new String[]
50   { "http://localhost:8080/jabaws" };
51
52   /**
53    * which services to test
54    */
55   public static List<String> serviceTests = new ArrayList<String>();
56
57   /**
58    * which presets to test for services
59    */
60   public static List<String> presetTests = new ArrayList<String>();
61   static
62   {
63     serviceTests.add("AAConWS".toLowerCase());
64   }
65
66   @Test
67   public void testJws2Gui()
68   {
69     jalview.ws.jws2.Jws2Discoverer disc = jalview.ws.jws2.Jws2Discoverer
70             .getDiscoverer();
71     int p = 0;
72     String svcurls="";
73     Vector<String> services = new Vector<String>();
74     for (String url : serviceUrls)
75     {
76       svcurls+=url+"; ";
77       services.add(url);
78     }
79     ;
80     Jws2Discoverer.setServiceUrls(services);
81
82     try
83     {
84       disc.run();
85     } catch (Exception e)
86     {
87       System.err.println("Aborting. Problem discovering services. Tried "+svcurls);
88       e.printStackTrace();
89       return;
90     }
91     assertTrue("Failed to discover any services at ",
92             disc.getServices().size() > 0);
93     Jws2Instance lastserv = null;
94     Iterator<String> presetEnum = presetTests.iterator();
95     for (Jws2Instance service : disc.getServices())
96     {
97       lastserv = service;
98       if (serviceTests.size() == 0
99               || serviceTests.contains(service.serviceType.toLowerCase()))
100       {
101         if (lastserv != null)
102         {
103           List<Preset> prl = null;
104           Preset pr = null;
105           if (presetEnum.hasNext())
106           {
107             PresetManager prman = lastserv.getPresets();
108             if (prman != null)
109             {
110               pr = prman.getPresetByName(presetEnum.next());
111               if (pr == null)
112               {
113                 // just grab the last preset.
114                 prl = prman.getPresets();
115               }
116             }
117           }
118           else
119           {
120             PresetManager prman = lastserv.getPresets();
121             if (prman != null)
122             {
123               prl = prman.getPresets();
124             }
125           }
126           Iterator<Preset> en = (prl == null) ? null : prl.iterator();
127           while (en != null && en.hasNext())
128           {
129             if (en != null)
130             {
131               if (!en.hasNext())
132               {
133                 en = prl.iterator();
134               }
135               pr = en.next();
136             }
137             {
138               System.out.println("Testing opts dupes for "
139                       + lastserv.getUri() + " : "
140                       + lastserv.getActionText() + ":" + pr.getName());
141               List<Option> rg = lastserv.getRunnerConfig().getOptions();
142               for (Option o : rg)
143               {
144                 try
145                 {
146                   Option cpy = jalview.ws.jws2.ParameterUtils.copyOption(o);
147                 } catch (Exception e)
148                 {
149                   System.err.println("Failed to copy " + o.getName());
150                   e.printStackTrace();
151                 } catch (Error e)
152                 {
153                   System.err.println("Failed to copy " + o.getName());
154                   e.printStackTrace();
155                 }
156               }
157             }
158             {
159               System.out.println("Testing param dupes:");
160               List<Parameter> rg = lastserv.getRunnerConfig()
161                       .getParameters();
162               for (Parameter o : rg)
163               {
164                 try
165                 {
166                   Parameter cpy = jalview.ws.jws2.ParameterUtils
167                           .copyParameter(o);
168                 } catch (Exception e)
169                 {
170                   System.err.println("Failed to copy " + o.getName());
171                   e.printStackTrace();
172                 } catch (Error e)
173                 {
174                   System.err.println("Failed to copy " + o.getName());
175                   e.printStackTrace();
176                 }
177               }
178             }
179             {
180               System.out.println("Testing param write:");
181               List<String> writeparam = null, readparam = null;
182               try
183               {
184                 writeparam = jalview.ws.jws2.ParameterUtils
185                         .writeParameterSet(
186                                 pr.getArguments(lastserv.getRunnerConfig()),
187                                 " ");
188                 System.out.println("Testing param read :");
189                 List<Option> pset = jalview.ws.jws2.ParameterUtils
190                         .processParameters(writeparam,
191                                 lastserv.getRunnerConfig(), " ");
192                 readparam = jalview.ws.jws2.ParameterUtils
193                         .writeParameterSet(pset, " ");
194                 Iterator<String> o = pr.getOptions().iterator(), s = writeparam
195                         .iterator(), t = readparam.iterator();
196                 boolean failed = false;
197                 while (s.hasNext() && t.hasNext())
198                 {
199                   String on = o.next(), sn = s.next(), st = t.next();
200                   if (!sn.equals(st))
201                   {
202                     System.out.println("Original was " + on
203                             + " Phase 1 wrote " + sn + "\tPhase 2 wrote "
204                             + st);
205                     failed = true;
206                   }
207                 }
208                 if (failed)
209                 {
210                   System.out.println("Original parameters:\n"
211                           + pr.getOptions());
212                   System.out.println("Wrote parameters in first set:\n"
213                           + writeparam);
214                   System.out.println("Wrote parameters in second set:\n"
215                           + readparam);
216
217                 }
218               } catch (Exception e)
219               {
220                 e.printStackTrace();
221               }
222             }
223             WsJobParameters pgui = new WsJobParameters(lastserv,
224                     new JabaPreset(lastserv, pr));
225             JFrame jf = new JFrame("Parameters for "
226                     + lastserv.getActionText());
227             JPanel cont = new JPanel(new BorderLayout());
228             pgui.validate();
229             cont.setPreferredSize(pgui.getPreferredSize());
230             cont.add(pgui, BorderLayout.CENTER);
231             jf.setLayout(new BorderLayout());
232             jf.add(cont, BorderLayout.CENTER);
233             jf.validate();
234             final Thread thr = Thread.currentThread();
235             jf.addWindowListener(new WindowListener()
236             {
237
238               public void windowActivated(WindowEvent e)
239               {
240                 // TODO Auto-generated method stub
241
242               }
243
244               public void windowClosed(WindowEvent e)
245               {
246               }
247
248               public void windowClosing(WindowEvent e)
249               {
250                 thr.interrupt();
251
252               }
253
254               public void windowDeactivated(WindowEvent e)
255               {
256                 // TODO Auto-generated method stub
257
258               }
259
260               public void windowDeiconified(WindowEvent e)
261               {
262                 // TODO Auto-generated method stub
263
264               }
265
266               public void windowIconified(WindowEvent e)
267               {
268                 // TODO Auto-generated method stub
269
270               }
271
272               public void windowOpened(WindowEvent e)
273               {
274                 // TODO Auto-generated method stub
275
276               }
277
278             });
279             jf.setVisible(true);
280             boolean inter = false;
281             while (!inter)
282             {
283               try
284               {
285                 Thread.sleep(10000);
286               } catch (Exception e)
287               {
288                 inter = true;
289               }
290               ;
291             }
292             jf.dispose();
293           }
294         }
295       }
296     }
297   }
298 }