2d40dd4a22483bbc1fbb171ffe5c5c8dd1270168
[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.*;
21 import jalview.gui.WsJobParameters;
22 import jalview.ws.jabaws.JalviewJabawsTestUtils;
23 import jalview.ws.jws2.JabaPreset;
24 import jalview.ws.jws2.Jws2Discoverer;
25 import jalview.ws.jws2.jabaws2.Jws2Instance;
26
27 import java.awt.BorderLayout;
28 import java.awt.event.WindowEvent;
29 import java.awt.event.WindowListener;
30 import java.util.ArrayList;
31 import java.util.Iterator;
32 import java.util.List;
33
34 import javax.swing.JFrame;
35 import javax.swing.JPanel;
36
37 import org.junit.BeforeClass;
38 import org.junit.Test;
39
40 import compbio.metadata.Option;
41 import compbio.metadata.Parameter;
42 import compbio.metadata.Preset;
43 import compbio.metadata.PresetManager;
44
45 public class Jws2ParamView
46 {
47   /**
48    * which services to test
49    */
50   public static List<String> serviceTests = new ArrayList<String>();
51
52   /**
53    * which presets to test for services
54    */
55   public static List<String> presetTests = new ArrayList<String>();
56   static
57   {
58     serviceTests.add("AAConWS".toLowerCase());
59   }
60
61   public static Jws2Discoverer disc=null;
62   @BeforeClass
63   public static void setUpBeforeClass() throws Exception
64   {
65     disc = JalviewJabawsTestUtils.getJabawsDiscoverer();
66     
67   }
68   @Test
69   public void testJws2Gui()
70   {
71     Jws2Instance lastserv = null;
72     Iterator<String> presetEnum = presetTests.iterator();
73     for (Jws2Instance service : disc.getServices())
74     {
75       lastserv = service;
76       if (serviceTests.size() == 0
77               || serviceTests.contains(service.serviceType.toLowerCase()))
78       {
79         if (lastserv != null)
80         {
81           List<Preset> prl = null;
82           Preset pr = null;
83           if (presetEnum.hasNext())
84           {
85             PresetManager prman = lastserv.getPresets();
86             if (prman != null)
87             {
88               pr = prman.getPresetByName(presetEnum.next());
89               if (pr == null)
90               {
91                 // just grab the last preset.
92                 prl = prman.getPresets();
93               }
94             }
95           }
96           else
97           {
98             PresetManager prman = lastserv.getPresets();
99             if (prman != null)
100             {
101               prl = prman.getPresets();
102             }
103           }
104           Iterator<Preset> en = (prl == null) ? null : prl.iterator();
105           while (en != null && en.hasNext())
106           {
107             if (en != null)
108             {
109               if (!en.hasNext())
110               {
111                 en = prl.iterator();
112               }
113               pr = en.next();
114             }
115             {
116               System.out.println("Testing opts dupes for "
117                       + lastserv.getUri() + " : "
118                       + lastserv.getActionText() + ":" + pr.getName());
119               List<Option> rg = lastserv.getRunnerConfig().getOptions();
120               for (Option o : rg)
121               {
122                 try
123                 {
124                   Option cpy = jalview.ws.jws2.ParameterUtils.copyOption(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 dupes:");
138               List<Parameter> rg = lastserv.getRunnerConfig()
139                       .getParameters();
140               for (Parameter o : rg)
141               {
142                 try
143                 {
144                   Parameter cpy = jalview.ws.jws2.ParameterUtils
145                           .copyParameter(o);
146                 } catch (Exception e)
147                 {
148                   System.err.println("Failed to copy " + o.getName());
149                   e.printStackTrace();
150                 } catch (Error e)
151                 {
152                   System.err.println("Failed to copy " + o.getName());
153                   e.printStackTrace();
154                 }
155               }
156             }
157             {
158               System.out.println("Testing param write:");
159               List<String> writeparam = null, readparam = null;
160               try
161               {
162                 writeparam = jalview.ws.jws2.ParameterUtils
163                         .writeParameterSet(
164                                 pr.getArguments(lastserv.getRunnerConfig()),
165                                 " ");
166                 System.out.println("Testing param read :");
167                 List<Option> pset = jalview.ws.jws2.ParameterUtils
168                         .processParameters(writeparam,
169                                 lastserv.getRunnerConfig(), " ");
170                 readparam = jalview.ws.jws2.ParameterUtils
171                         .writeParameterSet(pset, " ");
172                 Iterator<String> o = pr.getOptions().iterator(), s = writeparam
173                         .iterator(), t = readparam.iterator();
174                 boolean failed = false;
175                 while (s.hasNext() && t.hasNext())
176                 {
177                   String on = o.next(), sn = s.next(), st = t.next();
178                   if (!sn.equals(st))
179                   {
180                     System.out.println("Original was " + on
181                             + " Phase 1 wrote " + sn + "\tPhase 2 wrote "
182                             + st);
183                     failed = true;
184                   }
185                 }
186                 if (failed)
187                 {
188                   System.out.println("Original parameters:\n"
189                           + pr.getOptions());
190                   System.out.println("Wrote parameters in first set:\n"
191                           + writeparam);
192                   System.out.println("Wrote parameters in second set:\n"
193                           + readparam);
194
195                 }
196               } catch (Exception e)
197               {
198                 e.printStackTrace();
199               }
200             }
201             WsJobParameters pgui = new WsJobParameters(lastserv,
202                     new JabaPreset(lastserv, pr));
203             JFrame jf = new JFrame("Parameters for "
204                     + lastserv.getActionText());
205             JPanel cont = new JPanel(new BorderLayout());
206             pgui.validate();
207             cont.setPreferredSize(pgui.getPreferredSize());
208             cont.add(pgui, BorderLayout.CENTER);
209             jf.setLayout(new BorderLayout());
210             jf.add(cont, BorderLayout.CENTER);
211             jf.validate();
212             final Thread thr = Thread.currentThread();
213             jf.addWindowListener(new WindowListener()
214             {
215
216               public void windowActivated(WindowEvent e)
217               {
218                 // TODO Auto-generated method stub
219
220               }
221
222               public void windowClosed(WindowEvent e)
223               {
224               }
225
226               public void windowClosing(WindowEvent e)
227               {
228                 thr.interrupt();
229
230               }
231
232               public void windowDeactivated(WindowEvent e)
233               {
234                 // TODO Auto-generated method stub
235
236               }
237
238               public void windowDeiconified(WindowEvent e)
239               {
240                 // TODO Auto-generated method stub
241
242               }
243
244               public void windowIconified(WindowEvent e)
245               {
246                 // TODO Auto-generated method stub
247
248               }
249
250               public void windowOpened(WindowEvent e)
251               {
252                 // TODO Auto-generated method stub
253
254               }
255
256             });
257             jf.setVisible(true);
258             boolean inter = false;
259             while (!inter)
260             {
261               try
262               {
263                 Thread.sleep(10000);
264               } catch (Exception e)
265               {
266                 inter = true;
267               }
268               ;
269             }
270             jf.dispose();
271           }
272         }
273       }
274     }
275   }
276 }