001    /**
002     * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
003     *
004     * The contents of this file are subject to the terms of the Liferay Enterprise
005     * Subscription License ("License"). You may not use this file except in
006     * compliance with the License. You can obtain a copy of the License by
007     * contacting Liferay, Inc. See the License for the specific language governing
008     * permissions and limitations under the License, including but not limited to
009     * distribution rights of the Software.
010     *
011     *
012     *
013     */
014    
015    package com.liferay.portal.tools;
016    
017    import com.liferay.portal.kernel.util.CharPool;
018    import com.liferay.portal.kernel.util.FileUtil;
019    import com.liferay.portal.kernel.util.SetUtil;
020    import com.liferay.portal.kernel.util.StringBundler;
021    import com.liferay.portal.kernel.util.StringPool;
022    import com.liferay.portal.kernel.util.StringUtil;
023    import com.liferay.portal.kernel.util.UnicodeFormatter;
024    import com.liferay.portal.tools.servicebuilder.ServiceBuilder;
025    import com.liferay.portal.util.InitUtil;
026    
027    import java.io.File;
028    
029    import java.util.HashMap;
030    import java.util.Map;
031    import java.util.Set;
032    
033    import org.apache.tools.ant.DirectoryScanner;
034    
035    /**
036     * @author Brian Wing Shun Chan
037     */
038    public class SeleneseToJavaBuilder {
039    
040            public static void main(String[] args) throws Exception {
041                    InitUtil.initWithSpring();
042    
043                    if (args.length == 1) {
044                            new SeleneseToJavaBuilder(args[0]);
045                    }
046                    else {
047                            throw new IllegalArgumentException();
048                    }
049            }
050    
051            public SeleneseToJavaBuilder(String basedir) throws Exception {
052                    DirectoryScanner ds = new DirectoryScanner();
053    
054                    ds.setBasedir(basedir);
055                    ds.setExcludes(
056                            new String[] {
057                                    "**\\IterateThemeTest.java", "**\\StopSeleniumTest.java"
058                            });
059                    ds.setIncludes(new String[] {"**\\*Test.html", "**\\*Test.java"});
060    
061                    ds.scan();
062    
063                    Set<String> fileNames = SetUtil.fromArray(ds.getIncludedFiles());
064    
065                    for (String fileName : fileNames) {
066    
067                            // I would have preferred to use XlateHtmlSeleneseToJava, but it
068                            // is horribly out of sync with Selenium IDE and generates incorrect
069                            // code.
070    
071                            /*String input = StringUtil.replace(
072                                    basedir + "/" + fileName, "\\", "/");
073    
074                            XlateHtmlSeleneseToJava.main(
075                                    new String[] {
076                                            "test", "-silent", input
077                                    }
078                            );*/
079    
080                            if (fileName.endsWith("Test.html")) {
081                                    translate(basedir, fileName);
082                            }
083                            else if (fileName.endsWith("Test.java")) {
084                                    if (!fileNames.contains(
085                                                    fileName.substring(0, fileName.length() - 5) +
086                                                            ".html")) {
087    
088                                            System.out.println("unused: " + fileName);
089                                    }
090                            }
091                    }
092            }
093    
094            protected String fixParam(String param) {
095                    StringBuilder sb = new StringBuilder();
096    
097                    char[] array = param.toCharArray();
098    
099                    for (int i = 0; i < array.length; ++i) {
100                            char c = array[i];
101    
102                            if (c == CharPool.BACK_SLASH) {
103                                    sb.append("\\\\");
104                            }
105                            else if (c == CharPool.QUOTE) {
106                                    sb.append("\\\"");
107                            }
108                            else if (Character.isWhitespace(c)) {
109                                    sb.append(c);
110                            }
111                            else if ((c < 0x0020) || (c > 0x007e)) {
112                                    sb.append("\\u");
113                                    sb.append(UnicodeFormatter.charToHex(c));
114                            }
115                            else {
116                                    sb.append(c);
117                            }
118                    }
119    
120                    return StringUtil.replace(
121                            sb.toString(), _FIX_PARAM_OLD_SUBS, _FIX_PARAM_NEW_SUBS);
122            }
123    
124            protected String[] getParams(String step) throws Exception {
125                    String[] params = new String[3];
126    
127                    int x = 0;
128                    int y = 0;
129    
130                    for (int i = 0; i < 3; i++) {
131                            x = step.indexOf("<td>", x) + 4;
132                            y = step.indexOf("\n", x);
133                            y = step.lastIndexOf("</td>", y);
134    
135                            params[i] =     step.substring(x, y);
136                    }
137    
138                    return params;
139            }
140    
141            protected void translate(String basedir, String fileName) throws Exception {
142                    fileName = StringUtil.replace(
143                            fileName, StringPool.BACK_SLASH, StringPool.SLASH);
144    
145                    int x = fileName.lastIndexOf(StringPool.SLASH);
146                    int y = fileName.indexOf(CharPool.PERIOD);
147    
148                    String testPackagePath = StringUtil.replace(
149                            fileName.substring(0, x), StringPool.SLASH, StringPool.PERIOD);
150                    String testName = fileName.substring(x + 1, y);
151                    String testMethodName =
152                            "test" + testName.substring(0, testName.length() - 4);
153                    String testFileName =
154                            basedir + "/" + fileName.substring(0, y) + ".java";
155    
156                    StringBundler sb = new StringBundler();
157    
158                    sb.append("package ");
159                    sb.append(testPackagePath);
160                    sb.append(";\n\n");
161    
162                    sb.append("import com.liferay.portal.kernel.util.FileUtil;\n");
163                    sb.append("import com.liferay.portal.kernel.util.StringPool;\n");
164                    sb.append("import com.liferay.portalweb.portal.BaseTestCase;\n\n");
165                    sb.append(
166                            "import com.liferay.portalweb.portal.util.RuntimeVariables;\n\n");
167    
168                    sb.append("public class ");
169                    sb.append(testName);
170                    sb.append(" extends BaseTestCase {");
171    
172                    sb.append("public void ");
173                    sb.append(testMethodName);
174                    sb.append("() throws Exception {");
175    
176                    String xml = FileUtil.read(basedir + "/" + fileName);
177    
178                    if ((xml.indexOf("<title>" + testName + "</title>") == -1) ||
179                            (xml.indexOf("colspan=\"3\">" + testName + "</td>") == -1)) {
180    
181                            System.out.println(testName + " has an invalid test name");
182                    }
183    
184                    if (xml.indexOf("&gt;") != -1) {
185                            xml = StringUtil.replace(xml, "&gt;", ">");
186    
187                            FileUtil.write(basedir + "/" + fileName, xml);
188                    }
189    
190                    if (xml.indexOf("&lt;") != -1) {
191                            xml = StringUtil.replace(xml, "&lt;", "<");
192    
193                            FileUtil.write(basedir + "/" + fileName, xml);
194                    }
195    
196                    if (xml.indexOf("&quot;") != -1) {
197                            xml = StringUtil.replace(xml, "&quot;", "\"");
198    
199                            FileUtil.write(basedir + "/" + fileName, xml);
200                    }
201    
202                    x = xml.indexOf("<tbody>");
203                    y = xml.indexOf("</tbody>");
204    
205                    xml = xml.substring(x, y + 8);
206    
207                    Map<String, String> labels = new HashMap<String, String>();
208    
209                    int labelCount = 1;
210    
211                    x = 0;
212                    y = 0;
213    
214                    while (true) {
215                            x = xml.indexOf("<tr>", x);
216                            y = xml.indexOf("\n</tr>", x);
217    
218                            if ((x == -1) || (y == -1)) {
219                                    break;
220                            }
221    
222                            x += 6;
223                            y++;
224    
225                            String step = xml.substring(x, y);
226    
227                            String[] params = getParams(step);
228    
229                            String param1 = params[0];
230                            String param2 = fixParam(params[1]);
231    
232                            if (param1.equals("label")) {
233                                    String label = labels.get(param2);
234    
235                                    if (label == null) {
236                                            labelCount++;
237    
238                                            label = labels.put(param2, String.valueOf(labelCount));
239                                    }
240                            }
241                    }
242    
243                    if (labels.size() > 0) {
244                            sb.append("int label = 1;");
245    
246                            sb.append("while (label >= 1) {");
247                            sb.append("switch (label) {");
248                            sb.append("case 1:");
249                    }
250    
251                    x = 0;
252                    y = 0;
253    
254                    while (true) {
255                            x = xml.indexOf("<tr>", x);
256                            y = xml.indexOf("\n</tr>", x);
257    
258                            if ((x == -1) || (y == -1)) {
259                                    break;
260                            }
261    
262                            x += 6;
263                            y++;
264    
265                            String step = xml.substring(x, y);
266    
267                            String[] params = getParams(step);
268    
269                            String param1 = params[0];
270                            String param2 = fixParam(params[1]);
271                            String param3 = fixParam(params[2]);
272    
273                            if (param1.equals("addSelection") || param1.equals("clickAt") ||
274                                    param1.equals("keyPress") || param1.equals("openWindow") ||
275                                    param1.equals("select") || param1.equals("type") ||
276                                    param1.equals("typeKeys") || param1.equals("waitForPopUp")) {
277    
278                                    sb.append("selenium.");
279                                    sb.append(param1);
280                                    sb.append("(");
281    
282                                    if (param2.startsWith("${")) {
283                                            sb.append("RuntimeVariables.getValue(\"");
284    
285                                            String text = param2.substring(2, param2.length() - 1);
286    
287                                            sb.append(text);
288                                            sb.append("\")");
289                                    }
290                                    else {
291                                            sb.append("\"");
292                                            sb.append(param2);
293                                            sb.append("\"");
294                                    }
295    
296                                    sb.append(", RuntimeVariables.replace(");
297    
298                                    if (param3.startsWith("${")) {
299                                            sb.append("RuntimeVariables.getValue(\"");
300    
301                                            String text = param3.substring(2, param3.length() - 1);
302    
303                                            sb.append(text);
304                                            sb.append("\")");
305                                    }
306                                    else {
307                                            sb.append("\"");
308                                            sb.append(param3);
309                                            sb.append("\"");
310                                    }
311    
312                                    sb.append("));");
313                            }
314                            else if (param1.equals("assertAlert") ||
315                                             param1.equals("assertNotAlert")) {
316    
317                                    if (param1.equals("assertAlert")) {
318                                            sb.append("assertEquals");
319                                    }
320                                    else if (param1.equals("assertNotAlert")) {
321                                            sb.append("assertNotEquals");
322                                    }
323    
324                                    sb.append("(\"");
325                                    sb.append(param2);
326                                    sb.append("\", selenium.getAlert());");
327                            }
328                            else if (param1.equals("assertChecked") ||
329                                             param1.equals("assertNotChecked")) {
330    
331                                    if (param1.equals("assertChecked")) {
332                                            sb.append("assertTrue");
333                                    }
334                                    else if (param1.equals("assertNotChecked")) {
335                                            sb.append("assertFalse");
336                                    }
337    
338                                    sb.append("(selenium.isChecked(\"");
339                                    sb.append(param2);
340                                    sb.append("\"));");
341                            }
342                            else if (param1.equals("assertConfirmation")) {
343                                    param2 = StringUtil.replace(param2, "?", "[\\\\s\\\\S]");
344    
345                                    sb.append("assertTrue(selenium.getConfirmation().matches(\"^");
346                                    sb.append(param2);
347                                    sb.append("$\"));");
348                            }
349                            else if (param1.equals("assertLocation") ||
350                                             param1.equals("assertNotLocation")) {
351    
352                                    if (param1.equals("assertLocation")) {
353                                            sb.append("assertEquals");
354                                    }
355                                    else if (param1.equals("assertNotLocation")) {
356                                            sb.append("assertNotEquals");
357                                    }
358    
359                                    sb.append("(\"");
360                                    sb.append(param2);
361                                    sb.append("\", selenium.getLocation());");
362                            }
363                            else if (param1.equals("assertElementNotPresent") ||
364                                             param1.equals("assertElementPresent")) {
365    
366                                    if (param1.equals("assertElementNotPresent")) {
367                                            sb.append("assertFalse");
368                                    }
369                                    else if (param1.equals("assertElementPresent")) {
370                                            sb.append("assertTrue");
371                                    }
372    
373                                    sb.append("(selenium.isElementPresent(\"");
374                                    sb.append(param2);
375                                    sb.append("\"));");
376                            }
377                            else if (param1.equals("assertNotPartialText") ||
378                                             param1.equals("assertPartialText")) {
379    
380                                    if (param1.equals("assertNotPartialText")) {
381                                            sb.append("assertFalse");
382                                    }
383                                    else if (param1.equals("assertPartialText")) {
384                                            sb.append("assertTrue");
385                                    }
386    
387                                    sb.append("(selenium.isPartialText(\"");
388                                    sb.append(param2);
389                                    sb.append("\", ");
390    
391                                    if (param3.startsWith("${")) {
392                                            sb.append("RuntimeVariables.getValue(\"");
393    
394                                            String text = param3.substring(2, param3.length() - 1);
395    
396                                            sb.append(text);
397                                            sb.append("\")");
398                                    }
399                                    else {
400                                            sb.append("\"");
401                                            sb.append(param3);
402                                            sb.append("\"");
403                                    }
404    
405                                    sb.append("));");
406                            }
407                            else if (param1.equals("assertNotSelectedLabel") ||
408                                             param1.equals("assertSelectedLabel")) {
409    
410                                    if (param1.equals("assertNotSelectedLabel")) {
411                                            sb.append("assertNotEquals");
412                                    }
413                                    else if (param1.equals("assertSelectedLabel")) {
414                                            sb.append("assertEquals");
415                                    }
416    
417                                    sb.append("(");
418    
419                                    if (param3.startsWith("${")) {
420                                            sb.append("RuntimeVariables.getValue(\"");
421    
422                                            String text = param3.substring(2, param3.length() - 1);
423    
424                                            sb.append(text);
425                                            sb.append("\")");
426                                    }
427                                    else {
428                                            sb.append("\"");
429                                            sb.append(param3);
430                                            sb.append("\"");
431                                    }
432    
433                                    sb.append(", selenium.getSelectedLabel(\"");
434                                    sb.append(param2);
435                                    sb.append("\"));");
436                            }
437                            else if (param1.equals("assertNotSelectedLabels") ||
438                                             param1.equals("assertSelectedLabels")) {
439    
440                                    if (param1.equals("assertNotSelectedLabels")) {
441                                            sb.append("assertNotEquals");
442                                    }
443                                    else if (param1.equals("assertSelectedLabels")) {
444                                            sb.append("assertEquals");
445                                    }
446    
447                                    sb.append("(\"");
448                                    sb.append(param3);
449                                    sb.append("\", join(selenium.getSelectedLabels(\"");
450                                    sb.append(param2);
451                                    sb.append("\"), \',\'));");
452                            }
453                            else if (param1.equals("assertNotText") ||
454                                             param1.equals("assertText")) {
455    
456                                    if (param1.equals("assertNotText")) {
457                                            sb.append("assertNotEquals");
458                                    }
459                                    else if (param1.equals("assertText")) {
460                                            sb.append("assertEquals");
461                                    }
462    
463                                    sb.append("(RuntimeVariables.replace(\"");
464                                    sb.append(param3);
465                                    sb.append("\"), selenium.getText(\"");
466                                    sb.append(param2);
467                                    sb.append("\"));");
468                            }
469                            else if (param1.equals("assertNotValue") ||
470                                             param1.equals("assertValue")) {
471    
472                                    if (param1.equals("assertNotValue")) {
473                                            sb.append("assertNotEquals");
474                                    }
475                                    else if (param1.equals("assertValue")) {
476                                            sb.append("assertEquals");
477                                    }
478    
479                                    sb.append("(\"");
480                                    sb.append(param3);
481                                    sb.append("\", selenium.getValue(\"");
482                                    sb.append(param2);
483                                    sb.append("\"));");
484                            }
485                            else if (param1.equals("assertNotVisible") ||
486                                             param1.equals("assertVisible")) {
487    
488                                    if (param1.equals("assertNotVisible")) {
489                                            sb.append("assertFalse");
490                                    }
491                                    else if (param1.equals("assertVisible")) {
492                                            sb.append("assertTrue");
493                                    }
494    
495                                    sb.append("(");
496                                    sb.append("selenium.isVisible(\"");
497                                    sb.append(param2);
498                                    sb.append("\"));");
499                            }
500                            else if (param1.equals("assertSelectOptions")) {
501                                    String[] expectedArray = StringUtil.split(param3);
502    
503                                    sb.append("String[] actualArray = ");
504                                    sb.append("selenium.getSelectOptions(\"");
505                                    sb.append(param2);
506                                    sb.append("\");");
507    
508                                    sb.append("assertEquals(");
509                                    sb.append(expectedArray.length);
510                                    sb.append(", actualArray.length);");
511    
512                                    for (int i = 0; i < expectedArray.length; i++) {
513                                            sb.append("assertEquals(\"");
514                                            sb.append(expectedArray[i]);
515                                            sb.append("\", actualArray[");
516                                            sb.append(i);
517                                            sb.append("]);");
518                                    }
519                            }
520                            else if (param1.equals("assertTextNotPresent") ||
521                                             param1.equals("assertTextPresent")) {
522    
523                                    if (param1.equals("assertTextNotPresent")) {
524                                            sb.append("assertFalse");
525                                    }
526                                    else if (param1.equals("assertTextPresent")) {
527                                            sb.append("assertTrue");
528                                    }
529    
530                                    sb.append("(selenium.isTextPresent(\"");
531                                    sb.append(param2);
532                                    sb.append("\"));");
533                            }
534                            else if (param1.equals("captureEntirePageScreenshot")) {
535                                    int pos = param2.lastIndexOf("\\");
536    
537                                    String dirName = param2.substring(0, pos + 1);
538    
539                                    sb.append("FileUtil.mkdirs(RuntimeVariables.replace(\"");
540                                    sb.append(dirName);
541                                    sb.append("\"));");
542                                    sb.append("selenium.captureEntirePageScreenshot(");
543                                    sb.append("RuntimeVariables.replace(\"");
544                                    sb.append(param2);
545                                    sb.append("\"), \"\");");
546                            }
547                            else if (param1.equals("check") || param1.equals("click") ||
548                                             param1.equals("doubleClick") ||
549                                             param1.equals("mouseDown") || param1.equals("mouseOver") ||
550                                             param1.equals("mouseUp") || param1.equals("open") ||
551                                             param1.equals("selectFrame") ||
552                                             param1.equals("selectPopUp") ||
553                                             param1.equals("selectWindow") ||
554                                             param1.equals("setTimeout") || param1.equals("uncheck")) {
555    
556                                    sb.append("selenium.");
557                                    sb.append(param1);
558                                    sb.append("(\"");
559                                    sb.append(param2);
560                                    sb.append("\");");
561                            }
562                            else if (param1.equals("clickAndWait")) {
563                                    sb.append("selenium.click(RuntimeVariables.replace(\"");
564                                    sb.append(param2);
565                                    sb.append("\"));");
566                                    sb.append("selenium.waitForPageToLoad(\"30000\");");
567                            }
568                            else if (param1.equals("clickAtAndWait") ||
569                                             param1.equals("keyPressAndWait") ||
570                                             param1.equals("selectAndWait")) {
571    
572                                    sb.append("selenium.");
573    
574                                    String text = param1.substring(0, param1.length() - 7);
575    
576                                    sb.append(text);
577                                    sb.append("(\"");
578                                    sb.append(param2);
579                                    sb.append("\", RuntimeVariables.replace(\"");
580                                    sb.append(param3);
581                                    sb.append("\"));");
582                                    sb.append("selenium.waitForPageToLoad(\"30000\");");
583                            }
584                            else if (param1.equals("close") || param1.equals("refresh")) {
585                                    sb.append("selenium.");
586                                    sb.append(param1);
587                                    sb.append("();");
588                            }
589                            else if (param1.equals("dragAndDropToObject")) {
590                                    sb.append("selenium.");
591                                    sb.append("dragAndDropToObject(\"");
592                                    sb.append(param2);
593                                    sb.append("\", \"");
594                                    sb.append(param3);
595                                    sb.append("\");");
596                            }
597                            else if (param1.equals("echo")) {
598                                    sb.append("System.out.println(\"");
599                                    sb.append(param2);
600                                    sb.append("\");");
601                            }
602                            else if (param1.equals("gotoIf")) {
603                                    String conditional = StringUtil.replace(
604                                            param2, new String[] {"${", "}"}, new String[] {"", ""});
605    
606                                    sb.append("if (");
607                                    sb.append(conditional);
608                                    sb.append(") {");
609                                    sb.append("label =");
610                                    sb.append(labels.get(param3));
611                                    sb.append(";");
612                                    sb.append("continue;");
613                                    sb.append("}");
614                            }
615                            else if (param1.equals("label")) {
616                                    String label = labels.get(param2);
617    
618                                    sb.append("case ");
619                                    sb.append(label);
620                                    sb.append(":");
621                            }
622                            else if (param1.equals("pause")) {
623                                    sb.append("Thread.sleep(");
624                                    sb.append(param2);
625                                    sb.append(");");
626                            }
627                            else if (param1.equals("refreshAndWait")) {
628                                    sb.append("selenium.refresh();");
629                                    sb.append("selenium.waitForPageToLoad(\"30000\");");
630                            }
631                            else if (param1.equals("store")) {
632                                    sb.append("boolean ");
633                                    sb.append(param3);
634                                    sb.append(" = ");
635    
636                                    if (param2.startsWith("eval(")) {
637                                            String eval = param2.substring(5, param2.length() - 1);
638    
639                                            eval = StringUtil.replace(eval, "'", "\"");
640    
641                                            sb.append(eval);
642                                    }
643    
644                                    sb.append(";");
645                            }
646                            else if (param1.equals("storeCurrentDay")) {
647                                    sb.append("String ");
648                                    sb.append(param2);
649                                    sb.append(" = selenium.getCurrentDay();");
650    
651                                    sb.append("RuntimeVariables.setValue(\"");
652                                    sb.append(param2);
653                                    sb.append("\", ");
654                                    sb.append(param2);
655                                    sb.append(");");
656                            }
657                            else if (param1.equals("storeCurrentMonth")) {
658                                    sb.append("String ");
659                                    sb.append(param2);
660                                    sb.append(" = selenium.getCurrentMonth();");
661    
662                                    sb.append("RuntimeVariables.setValue(\"");
663                                    sb.append(param2);
664                                    sb.append("\", ");
665                                    sb.append(param2);
666                                    sb.append(");");
667                            }
668                            else if (param1.equals("storeCurrentYear")) {
669                                    sb.append("String ");
670                                    sb.append(param2);
671                                    sb.append(" = selenium.getCurrentYear();");
672    
673                                    sb.append("RuntimeVariables.setValue(\"");
674                                    sb.append(param2);
675                                    sb.append("\", ");
676                                    sb.append(param2);
677                                    sb.append(");");
678                            }
679                            else if (param1.equals("storeIncrementedText")) {
680                                    sb.append("String ");
681                                    sb.append(param3);
682                                    sb.append(" = selenium.getIncrementedText(\"");
683                                    sb.append(param2);
684                                    sb.append("\");");
685    
686                                    sb.append("RuntimeVariables.setValue(\"");
687                                    sb.append(param3);
688                                    sb.append("\", ");
689                                    sb.append(param3);
690                                    sb.append(");");
691                            }
692                            else if (param1.equals("storeLocation")) {
693                                    sb.append("String ");
694                                    sb.append(param2);
695                                    sb.append(" = selenium.getLocation();");
696    
697                                    sb.append("RuntimeVariables.setValue(\"");
698                                    sb.append(param2);
699                                    sb.append("\", ");
700                                    sb.append(param2);
701                                    sb.append(");");
702                            }
703                            else if (param1.equals("storeText")) {
704                                    sb.append("String ");
705                                    sb.append(param3);
706                                    sb.append(" = selenium.getText(\"");
707                                    sb.append(param2);
708                                    sb.append("\");");
709    
710                                    sb.append("RuntimeVariables.setValue(\"");
711                                    sb.append(param3);
712                                    sb.append("\", ");
713                                    sb.append(param3);
714                                    sb.append(");");
715                            }
716                            else if (param1.equals("verifyElementNotPresent") ||
717                                             param1.equals("verifyElementPresent")) {
718    
719                                    if (param1.equals("verifyElementNotPresent")) {
720                                            sb.append("verifyFalse");
721                                    }
722                                    else if (param1.equals("verifyElementPresent")) {
723                                            sb.append("verifyTrue");
724                                    }
725    
726                                    sb.append("(selenium.isElementPresent(\"");
727                                    sb.append(param2);
728                                    sb.append("\"));");
729                            }
730                            else if (param1.equals("verifyTextNotPresent") ||
731                                             param1.equals("verifyTextPresent")) {
732    
733                                    if (param1.equals("verifyTextNotPresent")) {
734                                            sb.append("verifyFalse");
735                                    }
736                                    else if (param1.equals("verifyTextPresent")) {
737                                            sb.append("verifyTrue");
738                                    }
739    
740                                    sb.append("(selenium.isTextPresent(\"");
741                                    sb.append(param2);
742                                    sb.append("\"));");
743                            }
744                            else if (param1.equals("verifyTitle")) {
745                                    sb.append("verifyEquals(\"");
746                                    sb.append(param2);
747                                    sb.append("\", selenium.getTitle());");
748                            }
749                            else if (param1.equals("waitForElementNotPresent") ||
750                                             param1.equals("waitForElementPresent") ||
751                                             param1.equals("waitForNotPartialText") ||
752                                             param1.equals("waitForNotSelectedLabel") ||
753                                             param1.equals("waitForNotTable") ||
754                                             param1.equals("waitForNotText") ||
755                                             param1.equals("waitForNotValue") ||
756                                             param1.equals("waitForNotVisible") ||
757                                             param1.equals("waitForPartialText") ||
758                                             param1.equals("waitForSelectedLabel") ||
759                                             param1.equals("waitForTable") ||
760                                             param1.equals("waitForText") ||
761                                             param1.equals("waitForTextNotPresent") ||
762                                             param1.equals("waitForTextPresent") ||
763                                             param1.equals("waitForValue") ||
764                                             param1.equals("waitForVisible")) {
765    
766                                    sb.append("for (int second = 0;; second++) {");
767                                    sb.append("if (second >= 60) {");
768                                    sb.append("fail(\"timeout\");");
769                                    sb.append("}");
770    
771                                    sb.append("try {");
772                                    sb.append("if (");
773    
774                                    if (param1.equals("waitForElementNotPresent") ||
775                                            param1.equals("waitForNotPartialText") ||
776                                            param1.equals("waitForNotSelectedLabel") ||
777                                            param1.equals("waitForNotTable") ||
778                                            param1.equals("waitForNotText") ||
779                                            param1.equals("waitForNotValue") ||
780                                            param1.equals("waitForNotVisible") ||
781                                            param1.equals("waitForTextNotPresent")) {
782    
783                                            sb.append("!");
784                                    }
785    
786                                    if (param1.equals("waitForElementNotPresent") ||
787                                            param1.equals("waitForElementPresent")) {
788    
789                                            sb.append("selenium.isElementPresent");
790                                            sb.append("(\"");
791                                            sb.append(param2);
792                                            sb.append("\")");
793                                    }
794                                    else if (param1.equals("waitForNotPartialText") ||
795                                                     param1.equals("waitForPartialText")) {
796    
797                                            sb.append("selenium.isPartialText(\"");
798                                            sb.append(param2);
799                                            sb.append("\", ");
800    
801                                            if (param3.startsWith("${")) {
802                                                    sb.append("RuntimeVariables.getValue(\"");
803    
804                                                    String text = param3.substring(2, param3.length() - 1);
805    
806                                                    sb.append(text);
807                                                    sb.append("\")");
808                                            }
809                                            else {
810                                                    sb.append("\"");
811                                                    sb.append(param3);
812                                                    sb.append("\"");
813                                            }
814    
815                                            sb.append(")");
816                                    }
817                                    else if (param1.equals("waitForNotSelectedLabel") ||
818                                                     param1.equals("waitForSelectedLabel"))
819                                    {
820    
821                                            if (param3.startsWith("${")) {
822                                                    sb.append("RuntimeVariables.getValue(\"");
823    
824                                                    String text = param3.substring(2, param3.length() - 1);
825    
826                                                    sb.append(text);
827                                                    sb.append("\")");
828                                            }
829                                            else {
830                                                    sb.append("\"");
831                                                    sb.append(param3);
832                                                    sb.append("\"");
833                                            }
834    
835                                            sb.append(".equals(selenium.getSelectedLabel(\"");
836                                            sb.append(param2);
837                                            sb.append("\"))");
838                                    }
839                                    else if (param1.equals("waitForNotTable") ||
840                                                     param1.equals("waitForTable")) {
841    
842                                            sb.append("StringPool.BLANK.equals(selenium.getTable(\"");
843                                            sb.append(param2);
844                                            sb.append("\"))");
845                                    }
846                                    else if (param1.equals("waitForNotText") ||
847                                                     param1.equals("waitForText")) {
848    
849                                            sb.append("RuntimeVariables.replace(\"");
850                                            sb.append(param3);
851                                            sb.append("\").equals(selenium.getText(\"");
852                                            sb.append(param2);
853                                            sb.append("\"))");
854                                    }
855                                    else if (param1.equals("waitForNotValue") ||
856                                                     param1.equals("waitForValue")) {
857    
858                                            sb.append("RuntimeVariables.replace(\"");
859                                            sb.append(param3);
860                                            sb.append("\").equals(selenium.getValue(\"");
861                                            sb.append(param2);
862                                            sb.append("\"))");
863                                    }
864                                    else if (param1.equals("waitForNotVisible") ||
865                                                     param1.equals("waitForVisible")) {
866    
867                                            sb.append("selenium.isVisible");
868                                            sb.append("(\"");
869                                            sb.append(param2);
870                                            sb.append("\")");
871                                    }
872                                    else if (param1.equals("waitForTextNotPresent") ||
873                                                     param1.equals("waitForTextPresent")) {
874    
875                                            sb.append("selenium.isTextPresent");
876                                            sb.append("(\"");
877                                            sb.append(param2);
878                                            sb.append("\")");
879                                    }
880    
881                                    sb.append(") {");
882                                    sb.append("break;");
883                                    sb.append("}");
884                                    sb.append("}");
885                                    sb.append("catch (Exception e) {");
886                                    sb.append("}");
887    
888                                    sb.append("Thread.sleep(1000);");
889                                    sb.append("}");
890                            }
891                            else {
892                                    System.out.println(param1 + " was not translated");
893                            }
894                    }
895    
896                    if (labels.size() > 0) {
897                            sb.append("case 100:");
898                            sb.append("label = -1;");
899                            sb.append("}");
900                            sb.append("}");
901                    }
902    
903                    sb.append("}");
904                    sb.append("}");
905    
906                    String content = sb.toString();
907    
908                    ServiceBuilder.writeFile(new File(testFileName), content);
909            }
910    
911            private static final String[] _FIX_PARAM_OLD_SUBS = new String[] {
912                    "\\\\n", "<br />"
913            };
914    
915            private static final String[] _FIX_PARAM_NEW_SUBS = new String[] {
916                    "\\n", "\\n"
917            };
918    
919    }