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