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