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