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