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