001
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
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 "**\\EvaluateLogTest.java", "**\\IterateThemeTest.java",
058 "**\\StopSeleniumTest.java",
059 "**\\WaitForSystemShutdownTest.java"
060 });
061 ds.setIncludes(new String[] {"**\\*Test.html", "**\\*Test.java"});
062
067
068 ds.scan();
069
070 Set<String> fileNames = SetUtil.fromArray(ds.getIncludedFiles());
071
072 for (String fileName : fileNames) {
073
074
075
076
077
078
086
087 if (fileName.endsWith("Test.html")) {
088 translate(basedir, fileName);
089 }
090 else if (fileName.endsWith("Test.java")) {
091 if (!fileNames.contains(
092 fileName.substring(0, fileName.length() - 5) +
093 ".html")) {
094
095 System.out.println("Unused: " + fileName);
096 }
097 }
098 }
099 }
100
101 protected String fixParam(String param) {
102 StringBuilder sb = new StringBuilder();
103
104 char[] array = param.toCharArray();
105
106 for (int i = 0; i < array.length; ++i) {
107 char c = array[i];
108
109 if (c == CharPool.BACK_SLASH) {
110 sb.append("\\\\");
111 }
112 else if (c == CharPool.QUOTE) {
113 sb.append("\\\"");
114 }
115 else if (Character.isWhitespace(c)) {
116 sb.append(c);
117 }
118 else if ((c < 0x0020) || (c > 0x007e)) {
119 sb.append("\\u");
120 sb.append(UnicodeFormatter.charToHex(c));
121 }
122 else {
123 sb.append(c);
124 }
125 }
126
127 return StringUtil.replace(
128 sb.toString(), _FIX_PARAM_OLD_SUBS, _FIX_PARAM_NEW_SUBS);
129 }
130
131 protected String[] getParams(String step) throws Exception {
132 String[] params = new String[3];
133
134 int x = 0;
135 int y = 0;
136
137 for (int i = 0; i < 3; i++) {
138 x = step.indexOf("<td>", x) + 4;
139 y = step.indexOf("\n", x);
140 y = step.lastIndexOf("</td>", y);
141
142 params[i] = step.substring(x, y);
143 }
144
145 return params;
146 }
147
148 protected void translate(String basedir, String fileName) throws Exception {
149 fileName = StringUtil.replace(
150 fileName, StringPool.BACK_SLASH, StringPool.SLASH);
151
152 int x = fileName.lastIndexOf(StringPool.SLASH);
153 int y = fileName.indexOf(CharPool.PERIOD);
154
155 String testPackagePath = StringUtil.replace(
156 fileName.substring(0, x), StringPool.SLASH, StringPool.PERIOD);
157 String testName = fileName.substring(x + 1, y);
158 String testMethodName =
159 "test" + testName.substring(0, testName.length() - 4);
160 String testFileName =
161 basedir + "/" + fileName.substring(0, y) + ".java";
162
163 StringBundler sb = new StringBundler();
164
165 sb.append("package ");
166 sb.append(testPackagePath);
167 sb.append(";\n\n");
168
169 sb.append("import com.liferay.portal.kernel.util.FileUtil;\n");
170 sb.append("import com.liferay.portal.kernel.util.StringPool;\n");
171 sb.append("import com.liferay.portalweb.portal.BaseTestCase;\n\n");
172 sb.append(
173 "import com.liferay.portalweb.portal.util.RuntimeVariables;\n\n");
174
175 sb.append("public class ");
176 sb.append(testName);
177 sb.append(" extends BaseTestCase {");
178
179 sb.append("public void ");
180 sb.append(testMethodName);
181 sb.append("() throws Exception {");
182
183 String xml = FileUtil.read(basedir + "/" + fileName);
184
185 if ((xml.indexOf("<title>" + testName + "</title>") == -1) ||
186 (xml.indexOf("colspan=\"3\">" + testName + "</td>") == -1)) {
187
188 System.out.println(testName + " has an invalid test name");
189 }
190
191 if (xml.indexOf(">") != -1) {
192 xml = StringUtil.replace(xml, ">", ">");
193
194 FileUtil.write(basedir + "/" + fileName, xml);
195 }
196
197 if (xml.indexOf("<") != -1) {
198 xml = StringUtil.replace(xml, "<", "<");
199
200 FileUtil.write(basedir + "/" + fileName, xml);
201 }
202
203 if (xml.indexOf(""") != -1) {
204 xml = StringUtil.replace(xml, """, "\"");
205
206 FileUtil.write(basedir + "/" + fileName, xml);
207 }
208
209 x = xml.indexOf("<tbody>");
210 y = xml.indexOf("</tbody>");
211
212 xml = xml.substring(x, y + 8);
213
214 Map<String, String> labels = new HashMap<String, String>();
215
216 int labelCount = 1;
217
218 Map<Integer, Boolean> takeScreenShots = new HashMap<Integer, Boolean>();
219
220 x = 0;
221 y = 0;
222
223 while (true) {
224 x = xml.indexOf("<tr>", x);
225 y = xml.indexOf("\n</tr>", x);
226
227 if ((x == -1) || (y == -1)) {
228 break;
229 }
230
231 x += 6;
232 y++;
233
234 String step = xml.substring(x, y);
235
236 String[] params = getParams(step);
237
238 String param1 = params[0];
239 String param2 = fixParam(params[1]);
240
241 if (param1.equals("assertConfirmation")) {
242 int previousX = x - 6;
243
244 previousX = xml.lastIndexOf("<tr>", previousX - 1);
245 previousX += 6;
246
247 takeScreenShots.put(previousX, Boolean.FALSE);
248 }
249 else if (param1.equals("label")) {
250 String label = labels.get(param2);
251
252 if (label == null) {
253 labelCount++;
254
255 label = labels.put(param2, String.valueOf(labelCount));
256 }
257 }
258 }
259
260 if (labels.size() > 0) {
261 sb.append("int label = 1;");
262
263 sb.append("while (label >= 1) {");
264 sb.append("switch (label) {");
265 sb.append("case 1:");
266 }
267
268 x = 0;
269 y = 0;
270
271 while (true) {
272 x = xml.indexOf("<tr>", x);
273 y = xml.indexOf("\n</tr>", x);
274
275 if ((x == -1) || (y == -1)) {
276 break;
277 }
278
279 x += 6;
280 y++;
281
282 String step = xml.substring(x, y);
283
284 String[] params = getParams(step);
285
286 String param1 = params[0];
287 String param2 = fixParam(params[1]);
288 String param3 = fixParam(params[2]);
289
290 if (param1.equals("addSelection") || param1.equals("clickAt") ||
291 param1.equals("doubleClickAt") || param1.equals("keyPress") ||
292 param1.equals("mouseMoveAt") || param1.equals("openWindow") ||
293 param1.equals("select") || param1.equals("type") ||
294 param1.equals("typeKeys") || param1.equals("uploadFile") ||
295 param1.equals("waitForPopUp")) {
296
297 sb.append("selenium.");
298 sb.append(param1);
299 sb.append("(");
300
301 if (param2.startsWith("${")) {
302 sb.append("RuntimeVariables.getValue(\"");
303
304 String text = param2.substring(2, param2.length() - 1);
305
306 sb.append(text);
307 sb.append("\")");
308 }
309 else {
310 sb.append("\"");
311 sb.append(param2);
312 sb.append("\"");
313 }
314
315 sb.append(", RuntimeVariables.replace(");
316
317 if (param3.startsWith("${")) {
318 sb.append("RuntimeVariables.getValue(\"");
319
320 String text = param3.substring(2, param3.length() - 1);
321
322 sb.append(text);
323 sb.append("\")");
324 }
325 else {
326 sb.append("\"");
327 sb.append(param3);
328 sb.append("\"");
329 }
330
331 sb.append("));");
332 }
333 else if (param1.equals("assertAlert") ||
334 param1.equals("assertNotAlert")) {
335
336 if (param1.equals("assertAlert")) {
337 sb.append("assertEquals");
338 }
339 else if (param1.equals("assertNotAlert")) {
340 sb.append("assertNotEquals");
341 }
342
343 sb.append("(\"");
344 sb.append(param2);
345 sb.append("\", selenium.getAlert());");
346 }
347 else if (param1.equals("assertChecked") ||
348 param1.equals("assertNotChecked")) {
349
350 if (param1.equals("assertChecked")) {
351 sb.append("assertTrue");
352 }
353 else if (param1.equals("assertNotChecked")) {
354 sb.append("assertFalse");
355 }
356
357 sb.append("(selenium.isChecked(\"");
358 sb.append(param2);
359 sb.append("\"));");
360 }
361 else if (param1.equals("assertConfirmation")) {
362 param2 = StringUtil.replace(param2, "?", "[\\\\s\\\\S]");
363
364 sb.append("assertTrue(selenium.getConfirmation().matches(\"^");
365 sb.append(param2);
366 sb.append("$\"));");
367 }
368 else if (param1.equals("assertLocation") ||
369 param1.equals("assertNotLocation")) {
370
371 if (param1.equals("assertLocation")) {
372 sb.append("assertEquals");
373 }
374 else if (param1.equals("assertNotLocation")) {
375 sb.append("assertNotEquals");
376 }
377
378 sb.append("(RuntimeVariables.replace(\"");
379 sb.append(param2);
380 sb.append("\"), selenium.getLocation());");
381 }
382 else if (param1.equals("assertElementNotPresent") ||
383 param1.equals("assertElementPresent")) {
384
385 if (param1.equals("assertElementNotPresent")) {
386 sb.append("assertFalse");
387 }
388 else if (param1.equals("assertElementPresent")) {
389 sb.append("assertTrue");
390 }
391
392 sb.append("(selenium.isElementPresent(\"");
393 sb.append(param2);
394 sb.append("\"));");
395 }
396 else if (param1.equals("assertNotPartialText") ||
397 param1.equals("assertPartialText")) {
398
399 if (param1.equals("assertNotPartialText")) {
400 sb.append("assertFalse");
401 }
402 else if (param1.equals("assertPartialText")) {
403 sb.append("assertTrue");
404 }
405
406 sb.append("(selenium.isPartialText(\"");
407 sb.append(param2);
408 sb.append("\", ");
409
410 if (param3.startsWith("${")) {
411 sb.append("RuntimeVariables.getValue(\"");
412
413 String text = param3.substring(2, param3.length() - 1);
414
415 sb.append(text);
416 sb.append("\")");
417 }
418 else {
419 sb.append("\"");
420 sb.append(param3);
421 sb.append("\"");
422 }
423
424 sb.append("));");
425 }
426 else if (param1.equals("assertNotSelectedLabel") ||
427 param1.equals("assertSelectedLabel")) {
428
429 if (param1.equals("assertNotSelectedLabel")) {
430 sb.append("assertNotEquals");
431 }
432 else if (param1.equals("assertSelectedLabel")) {
433 sb.append("assertEquals");
434 }
435
436 sb.append("(");
437
438 if (param3.startsWith("${")) {
439 sb.append("RuntimeVariables.getValue(\"");
440
441 String text = param3.substring(2, param3.length() - 1);
442
443 sb.append(text);
444 sb.append("\")");
445 }
446 else {
447 sb.append("\"");
448 sb.append(param3);
449 sb.append("\"");
450 }
451
452 sb.append(", selenium.getSelectedLabel(\"");
453 sb.append(param2);
454 sb.append("\"));");
455 }
456 else if (param1.equals("assertNotSelectedLabels") ||
457 param1.equals("assertSelectedLabels")) {
458
459 if (param1.equals("assertNotSelectedLabels")) {
460 sb.append("assertNotEquals");
461 }
462 else if (param1.equals("assertSelectedLabels")) {
463 sb.append("assertEquals");
464 }
465
466 sb.append("(\"");
467 sb.append(param3);
468 sb.append("\", join(selenium.getSelectedLabels(\"");
469 sb.append(param2);
470 sb.append("\"), \',\'));");
471 }
472 else if (param1.equals("assertNotText") ||
473 param1.equals("assertText")) {
474
475 if (param1.equals("assertNotText")) {
476 sb.append("assertNotEquals");
477 }
478 else if (param1.equals("assertText")) {
479 sb.append("assertEquals");
480 }
481
482 sb.append("(RuntimeVariables.replace(\"");
483 sb.append(param3);
484 sb.append("\"), selenium.getText(\"");
485 sb.append(param2);
486 sb.append("\"));");
487 }
488 else if (param1.equals("assertNotValue") ||
489 param1.equals("assertValue")) {
490
491 if (param1.equals("assertNotValue")) {
492 sb.append("assertNotEquals");
493 }
494 else if (param1.equals("assertValue")) {
495 sb.append("assertEquals");
496 }
497
498 sb.append("(\"");
499 sb.append(param3);
500 sb.append("\", selenium.getValue(\"");
501 sb.append(param2);
502 sb.append("\"));");
503 }
504 else if (param1.equals("assertNotVisible") ||
505 param1.equals("assertVisible")) {
506
507 if (param1.equals("assertNotVisible")) {
508 sb.append("assertFalse");
509 }
510 else if (param1.equals("assertVisible")) {
511 sb.append("assertTrue");
512 }
513
514 sb.append("(");
515 sb.append("selenium.isVisible(\"");
516 sb.append(param2);
517 sb.append("\"));");
518 }
519 else if (param1.equals("assertSelectOptions")) {
520 String[] expectedArray = StringUtil.split(param3);
521
522 sb.append("String[] actualArray = ");
523 sb.append("selenium.getSelectOptions(\"");
524 sb.append(param2);
525 sb.append("\");");
526
527 sb.append("assertEquals(");
528 sb.append(expectedArray.length);
529 sb.append(", actualArray.length);");
530
531 for (int i = 0; i < expectedArray.length; i++) {
532 sb.append("assertEquals(\"");
533 sb.append(expectedArray[i]);
534 sb.append("\", actualArray[");
535 sb.append(i);
536 sb.append("]);");
537 }
538 }
539 else if (param1.equals("assertTextNotPresent") ||
540 param1.equals("assertTextPresent")) {
541
542 if (param1.equals("assertTextNotPresent")) {
543 sb.append("assertFalse");
544 }
545 else if (param1.equals("assertTextPresent")) {
546 sb.append("assertTrue");
547 }
548
549 sb.append("(selenium.isTextPresent(\"");
550 sb.append(param2);
551 sb.append("\"));");
552 }
553 else if (param1.equals("captureEntirePageScreenshot")) {
554 int pos = param2.lastIndexOf("\\");
555
556 String dirName = param2.substring(0, pos + 1);
557
558 sb.append("FileUtil.mkdirs(RuntimeVariables.replace(\"");
559 sb.append(dirName);
560 sb.append("\"));");
561 sb.append("selenium.captureEntirePageScreenshot(");
562 sb.append("RuntimeVariables.replace(\"");
563 sb.append(param2);
564 sb.append("\"), \"\");");
565 }
566 else if (param1.equals("check") || param1.equals("click") ||
567 param1.equals("doubleClick") ||
568 param1.equals("downloadFile") ||
569 param1.equals("mouseDown") || param1.equals("mouseMove") ||
570 param1.equals("mouseOver") || param1.equals("mouseUp") ||
571 param1.equals("open") || param1.equals("selectFrame") ||
572 param1.equals("selectPopUp") ||
573 param1.equals("selectWindow") ||
574 param1.equals("setTimeout") || param1.equals("uncheck")) {
575
576 sb.append("selenium.");
577 sb.append(param1);
578 sb.append("(");
579
580 if (param2.startsWith("${")) {
581 sb.append("RuntimeVariables.getValue(\"");
582
583 String text = param2.substring(2, param2.length() - 1);
584
585 sb.append(text);
586 sb.append("\")");
587 }
588 else {
589 sb.append("\"");
590 sb.append(param2);
591 sb.append("\"");
592 }
593
594 sb.append(");");
595
596 if (param1.equals("open")) {
597 sb.append("loadRequiredJavaScriptModules();");
598 }
599 }
600 else if (param1.equals("clickAndWait")) {
601 sb.append("selenium.click(RuntimeVariables.replace(\"");
602 sb.append(param2);
603 sb.append("\"));");
604 sb.append("selenium.waitForPageToLoad(\"30000\");");
605
606 sb.append("loadRequiredJavaScriptModules();");
607 }
608 else if (param1.equals("clickAtAndWait") ||
609 param1.equals("keyPressAndWait") ||
610 param1.equals("selectAndWait")) {
611
612 sb.append("selenium.");
613
614 String text = param1.substring(0, param1.length() - 7);
615
616 sb.append(text);
617 sb.append("(\"");
618 sb.append(param2);
619 sb.append("\", RuntimeVariables.replace(\"");
620 sb.append(param3);
621 sb.append("\"));");
622 sb.append("selenium.waitForPageToLoad(\"30000\");");
623
624 sb.append("loadRequiredJavaScriptModules();");
625 }
626 else if (param1.equals("close") || param1.equals("refresh") ||
627 param1.equals("setBrowserOption") ||
628 param1.equals("windowFocus") ||
629 param1.equals("windowMaximize")) {
630
631 sb.append("selenium.");
632 sb.append(param1);
633 sb.append("();");
634 }
635 else if (param1.equals("dragAndDropToObject")) {
636 sb.append("selenium.");
637 sb.append("dragAndDropToObject(\"");
638 sb.append(param2);
639 sb.append("\", \"");
640 sb.append(param3);
641 sb.append("\");");
642 }
643 else if (param1.equals("echo")) {
644 sb.append("System.out.println(\"");
645 sb.append(param2);
646 sb.append("\");");
647 }
648 else if (param1.equals("gotoIf")) {
649 String conditional = StringUtil.replace(
650 param2, new String[] {"${", "}"}, new String[] {"", ""});
651
652 sb.append("if (");
653 sb.append(conditional);
654 sb.append(") {");
655 sb.append("label =");
656 sb.append(labels.get(param3));
657 sb.append(";");
658 sb.append("continue;");
659 sb.append("}");
660 }
661 else if (param1.equals("label")) {
662 String label = labels.get(param2);
663
664 sb.append("case ");
665 sb.append(label);
666 sb.append(":");
667 }
668 else if (param1.equals("pause")) {
669 sb.append("Thread.sleep(");
670 sb.append(param2);
671 sb.append(");");
672 }
673 else if (param1.equals("refreshAndWait") ||
674 param1.equals("windowMaximizeAndWait")) {
675
676 String text = param1.substring(0, param1.length() - 7);
677
678 sb.append("selenium.");
679 sb.append(text);
680 sb.append("();");
681 sb.append("selenium.waitForPageToLoad(\"30000\");");
682
683 sb.append("loadRequiredJavaScriptModules();");
684 }
685 else if (param1.equals("store")) {
686 sb.append("boolean ");
687 sb.append(param3);
688 sb.append(" = ");
689
690 if (param2.startsWith("eval(")) {
691 String eval = param2.substring(5, param2.length() - 1);
692
693 eval = StringUtil.replace(eval, "'", "\"");
694
695 sb.append(eval);
696 }
697
698 sb.append(";");
699 }
700 else if (param1.equals("storeAttribute")) {
701 sb.append("String ");
702 sb.append(param3);
703 sb.append(" = selenium.getAttribute(\"");
704 sb.append(param2);
705 sb.append("\");");
706
707 sb.append("RuntimeVariables.setValue(\"");
708 sb.append(param3);
709 sb.append("\", ");
710 sb.append(param3);
711 sb.append(");");
712 }
713 else if (param1.equals("storeCurrentDay")) {
714 sb.append("String ");
715 sb.append(param2);
716 sb.append(" = selenium.getCurrentDay();");
717
718 sb.append("RuntimeVariables.setValue(\"");
719 sb.append(param2);
720 sb.append("\", ");
721 sb.append(param2);
722 sb.append(");");
723 }
724 else if (param1.equals("storeCurrentMonth")) {
725 sb.append("String ");
726 sb.append(param2);
727 sb.append(" = selenium.getCurrentMonth();");
728
729 sb.append("RuntimeVariables.setValue(\"");
730 sb.append(param2);
731 sb.append("\", ");
732 sb.append(param2);
733 sb.append(");");
734 }
735 else if (param1.equals("storeCurrentYear")) {
736 sb.append("String ");
737 sb.append(param2);
738 sb.append(" = selenium.getCurrentYear();");
739
740 sb.append("RuntimeVariables.setValue(\"");
741 sb.append(param2);
742 sb.append("\", ");
743 sb.append(param2);
744 sb.append(");");
745 }
746 else if (param1.equals("storeElementPresent")) {
747 sb.append("boolean ");
748 sb.append(param3);
749 sb.append(" = selenium.isElementPresent(\"");
750 sb.append(param2);
751 sb.append("\");");
752 }
753 else if (param1.equals("storeFirstNumber")) {
754 sb.append("String ");
755 sb.append(param3);
756 sb.append(" = selenium.getFirstNumber(\"");
757 sb.append(param2);
758 sb.append("\");");
759
760 sb.append("RuntimeVariables.setValue(\"");
761 sb.append(param3);
762 sb.append("\", ");
763 sb.append(param3);
764 sb.append(");");
765 }
766 else if (param1.equals("storeFirstNumberIncrement")) {
767 sb.append("String ");
768 sb.append(param3);
769 sb.append(" = selenium.getFirstNumberIncrement(\"");
770 sb.append(param2);
771 sb.append("\");");
772
773 sb.append("RuntimeVariables.setValue(\"");
774 sb.append(param3);
775 sb.append("\", ");
776 sb.append(param3);
777 sb.append(");");
778 }
779 else if (param1.equals("storeLocation")) {
780 sb.append("String ");
781 sb.append(param2);
782 sb.append(" = selenium.getLocation();");
783
784 sb.append("RuntimeVariables.setValue(\"");
785 sb.append(param2);
786 sb.append("\", ");
787 sb.append(param2);
788 sb.append(");");
789 }
790 else if (param1.equals("storeText")) {
791 sb.append("String ");
792 sb.append(param3);
793 sb.append(" = selenium.getText(\"");
794 sb.append(param2);
795 sb.append("\");");
796
797 sb.append("RuntimeVariables.setValue(\"");
798 sb.append(param3);
799 sb.append("\", ");
800 sb.append(param3);
801 sb.append(");");
802 }
803 else if (param1.equals("storeValue")) {
804 sb.append("String ");
805 sb.append(param3);
806 sb.append(" = selenium.getValue(\"");
807 sb.append(param2);
808 sb.append("\");");
809
810 sb.append("RuntimeVariables.setValue(\"");
811 sb.append(param3);
812 sb.append("\", ");
813 sb.append(param3);
814 sb.append(");");
815 }
816 else if (param1.equals("storeVisible")) {
817 sb.append("boolean ");
818 sb.append(param3);
819 sb.append(" = selenium.isVisible(\"");
820 sb.append(param2);
821 sb.append("\");");
822 }
823 else if (param1.equals("verifyElementNotPresent") ||
824 param1.equals("verifyElementPresent")) {
825
826 if (param1.equals("verifyElementNotPresent")) {
827 sb.append("verifyFalse");
828 }
829 else if (param1.equals("verifyElementPresent")) {
830 sb.append("verifyTrue");
831 }
832
833 sb.append("(selenium.isElementPresent(\"");
834 sb.append(param2);
835 sb.append("\"));");
836 }
837 else if (param1.equals("verifyTextNotPresent") ||
838 param1.equals("verifyTextPresent")) {
839
840 if (param1.equals("verifyTextNotPresent")) {
841 sb.append("verifyFalse");
842 }
843 else if (param1.equals("verifyTextPresent")) {
844 sb.append("verifyTrue");
845 }
846
847 sb.append("(selenium.isTextPresent(\"");
848 sb.append(param2);
849 sb.append("\"));");
850 }
851 else if (param1.equals("verifyTitle")) {
852 sb.append("verifyEquals(\"");
853 sb.append(param2);
854 sb.append("\", selenium.getTitle());");
855 }
856 else if (param1.equals("waitForConfirmation") ||
857 param1.equals("waitForElementNotPresent") ||
858 param1.equals("waitForElementPresent") ||
859 param1.equals("waitForNotPartialText") ||
860 param1.equals("waitForNotSelectedLabel") ||
861 param1.equals("waitForNotTable") ||
862 param1.equals("waitForNotText") ||
863 param1.equals("waitForNotValue") ||
864 param1.equals("waitForNotVisible") ||
865 param1.equals("waitForPartialText") ||
866 param1.equals("waitForSelectedLabel") ||
867 param1.equals("waitForTable") ||
868 param1.equals("waitForText") ||
869 param1.equals("waitForTextNotPresent") ||
870 param1.equals("waitForTextPresent") ||
871 param1.equals("waitForValue") ||
872 param1.equals("waitForVisible")) {
873
874 sb.append("for (int second = 0;; second++) {");
875 sb.append("if (second >= 90) {");
876 sb.append("fail(\"timeout\");");
877 sb.append("}");
878
879 sb.append("try {");
880 sb.append("if (");
881
882 if (param1.equals("waitForElementNotPresent") ||
883 param1.equals("waitForNotPartialText") ||
884 param1.equals("waitForNotSelectedLabel") ||
885 param1.equals("waitForNotTable") ||
886 param1.equals("waitForNotText") ||
887 param1.equals("waitForNotValue") ||
888 param1.equals("waitForNotVisible") ||
889 param1.equals("waitForTextNotPresent")) {
890
891 sb.append("!");
892 }
893
894 if (param1.equals("waitForConfirmation")) {
895 sb.append("\"");
896 sb.append(param2);
897 sb.append("\".equals(selenium.getConfirmation())");
898 }
899 else if (param1.equals("waitForElementNotPresent") ||
900 param1.equals("waitForElementPresent")) {
901
902 sb.append("selenium.isElementPresent");
903 sb.append("(\"");
904 sb.append(param2);
905 sb.append("\")");
906 }
907 else if (param1.equals("waitForNotPartialText") ||
908 param1.equals("waitForPartialText")) {
909
910 sb.append("selenium.isPartialText(\"");
911 sb.append(param2);
912 sb.append("\", ");
913
914 if (param3.startsWith("${")) {
915 sb.append("RuntimeVariables.getValue(\"");
916
917 String text = param3.substring(2, param3.length() - 1);
918
919 sb.append(text);
920 sb.append("\")");
921 }
922 else {
923 sb.append("\"");
924 sb.append(param3);
925 sb.append("\"");
926 }
927
928 sb.append(")");
929 }
930 else if (param1.equals("waitForNotSelectedLabel") ||
931 param1.equals("waitForSelectedLabel"))
932 {
933
934 if (param3.startsWith("${")) {
935 sb.append("RuntimeVariables.getValue(\"");
936
937 String text = param3.substring(2, param3.length() - 1);
938
939 sb.append(text);
940 sb.append("\")");
941 }
942 else {
943 sb.append("\"");
944 sb.append(param3);
945 sb.append("\"");
946 }
947
948 sb.append(".equals(selenium.getSelectedLabel(\"");
949 sb.append(param2);
950 sb.append("\"))");
951 }
952 else if (param1.equals("waitForNotTable") ||
953 param1.equals("waitForTable")) {
954
955 sb.append("StringPool.BLANK.equals(selenium.getTable(\"");
956 sb.append(param2);
957 sb.append("\"))");
958 }
959 else if (param1.equals("waitForNotText") ||
960 param1.equals("waitForText")) {
961
962 sb.append("RuntimeVariables.replace(\"");
963 sb.append(param3);
964 sb.append("\").equals(selenium.getText(\"");
965 sb.append(param2);
966 sb.append("\"))");
967 }
968 else if (param1.equals("waitForNotValue") ||
969 param1.equals("waitForValue")) {
970
971 sb.append("RuntimeVariables.replace(\"");
972 sb.append(param3);
973 sb.append("\").equals(selenium.getValue(\"");
974 sb.append(param2);
975 sb.append("\"))");
976 }
977 else if (param1.equals("waitForNotVisible") ||
978 param1.equals("waitForVisible")) {
979
980 sb.append("selenium.isVisible");
981 sb.append("(\"");
982 sb.append(param2);
983 sb.append("\")");
984 }
985 else if (param1.equals("waitForTextNotPresent") ||
986 param1.equals("waitForTextPresent")) {
987
988 sb.append("selenium.isTextPresent");
989 sb.append("(\"");
990 sb.append(param2);
991 sb.append("\")");
992 }
993
994 sb.append(") {");
995 sb.append("break;");
996 sb.append("}");
997 sb.append("}");
998 sb.append("catch (Exception e) {");
999 sb.append("}");
1000
1001 sb.append("Thread.sleep(1000);");
1002 sb.append("}");
1003 }
1004 else {
1005 System.out.println(
1006 testFileName + " has an unknown command " + param1);
1007 }
1008 }
1009
1010 if (labels.size() > 0) {
1011 sb.append("case 100:");
1012 sb.append("label = -1;");
1013 sb.append("}");
1014 sb.append("}");
1015 }
1016
1017 sb.append("}");
1018 sb.append("}");
1019
1020 String content = sb.toString();
1021
1022 ServiceBuilder.writeFile(new File(testFileName), content);
1023 }
1024
1025 private static final String[] _FIX_PARAM_OLD_SUBS = new String[] {
1026 "\\\\n", "<br />"
1027 };
1028
1029 private static final String[] _FIX_PARAM_NEW_SUBS = new String[] {
1030 "\\n", "\\n"
1031 };
1032
1033 }