1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    *
5    *
6    *
7    * The contents of this file are subject to the terms of the Liferay Enterprise
8    * Subscription License ("License"). You may not use this file except in
9    * compliance with the License. You can obtain a copy of the License by
10   * contacting Liferay, Inc. See the License for the specific language governing
11   * permissions and limitations under the License, including but not limited to
12   * distribution rights of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portal.tools;
24  
25  import com.liferay.portal.kernel.util.CharPool;
26  import com.liferay.portal.kernel.util.FileUtil;
27  import com.liferay.portal.kernel.util.StringPool;
28  import com.liferay.portal.kernel.util.StringUtil;
29  import com.liferay.portal.kernel.util.UnicodeFormatter;
30  import com.liferay.portal.tools.servicebuilder.ServiceBuilder;
31  import com.liferay.portal.util.InitUtil;
32  
33  import java.io.File;
34  
35  import java.util.HashMap;
36  import java.util.Map;
37  
38  import org.apache.tools.ant.DirectoryScanner;
39  
40  /**
41   * <a href="SeleneseToJavaBuilder.java.html"><b><i>View Source</i></b></a>
42   *
43   * @author Brian Wing Shun Chan
44   */
45  public class SeleneseToJavaBuilder {
46  
47      public static void main(String[] args) throws Exception {
48          InitUtil.initWithSpring();
49  
50          if (args.length == 1) {
51              new SeleneseToJavaBuilder(args[0]);
52          }
53          else {
54              throw new IllegalArgumentException();
55          }
56      }
57  
58      public SeleneseToJavaBuilder(String basedir) throws Exception {
59          DirectoryScanner ds = new DirectoryScanner();
60  
61          ds.setBasedir(basedir);
62          ds.setIncludes(new String[] {"**\\*.html"});
63  
64          ds.scan();
65  
66          String[] files = ds.getIncludedFiles();
67  
68          for (int i = 0; i < files.length; i++) {
69  
70              // I would have preferred to use XlateHtmlSeleneseToJava, but it
71              // is horribly out of sync with Selenium IDE and generates incorrect
72              // code.
73  
74              /*File file = new File(basedir + "/" + files[i]);
75  
76              String input = StringUtil.replace(file.toString(), "\\", "/");
77  
78              XlateHtmlSeleneseToJava.main(
79                  new String[] {
80                      "test", "-silent", input
81                  }
82              );*/
83  
84              translate(basedir, files[i]);
85          }
86      }
87  
88      protected String fixParam(String param) {
89          StringBuilder sb = new StringBuilder();
90  
91          char[] array = param.toCharArray();
92  
93          for (int i = 0; i < array.length; ++i) {
94              char c = array[i];
95  
96              if (c == CharPool.BACK_SLASH) {
97                  sb.append("\\\\");
98              }
99              else if (c == CharPool.QUOTE) {
100                 sb.append("\\\"");
101             }
102             else if (Character.isWhitespace(c)) {
103                 sb.append(c);
104             }
105             else if ((c < 0x0020) || (c > 0x007e)) {
106                 sb.append("\\u");
107                 sb.append(UnicodeFormatter.charToHex(c));
108             }
109             else {
110                 sb.append(c);
111             }
112         }
113 
114         return StringUtil.replace(
115             sb.toString(), _FIX_PARAM_OLD_SUBS, _FIX_PARAM_NEW_SUBS);
116     }
117 
118     protected String[] getParams(String step) throws Exception {
119         String[] params = new String[3];
120 
121         int x = 0;
122         int y = 0;
123 
124         for (int i = 0; i < 3; i++) {
125             x = step.indexOf("<td>", x) + 4;
126             y = step.indexOf("\n", x);
127             y = step.lastIndexOf("</td>", y);
128 
129             params[i] = step.substring(x, y);
130         }
131 
132         return params;
133     }
134 
135     protected void translate(String basedir, String file) throws Exception {
136         file = StringUtil.replace(
137             file, StringPool.BACK_SLASH, StringPool.SLASH);
138 
139         int x = file.lastIndexOf(StringPool.SLASH);
140         int y = file.indexOf(StringPool.PERIOD);
141 
142         String testPackagePath = StringUtil.replace(
143             file.substring(0, x), StringPool.SLASH, StringPool.PERIOD);
144         String testName = file.substring(x + 1, y);
145         String testMethodName =
146             "test" + testName.substring(0, testName.length() - 4);
147         String testFileName = basedir + "/" + file.substring(0, y) + ".java";
148 
149         StringBuilder sb = new StringBuilder();
150 
151         sb.append("package " + testPackagePath + ";\n\n");
152 
153         sb.append("import com.liferay.portal.kernel.util.FileUtil;\n");
154         sb.append("import com.liferay.portal.kernel.util.StringPool;\n");
155         sb.append("import com.liferay.portalweb.portal.BaseTestCase;\n\n");
156         sb.append(
157             "import com.liferay.portalweb.portal.util.RuntimeVariables;\n\n");
158 
159         sb.append("public class " + testName + " extends BaseTestCase {");
160 
161         sb.append("public void " + testMethodName + "() throws Exception {");
162 
163         String xml = FileUtil.read(basedir + "/" + file);
164 
165         if ((xml.indexOf("<title>" + testName + "</title>") == -1) ||
166             (xml.indexOf("colspan=\"3\">" + testName + "</td>") == -1)) {
167 
168             System.out.println(testName + " has an invalid test name");
169         }
170 
171         if (xml.indexOf("&quot;") != -1) {
172             xml = StringUtil.replace(xml, "&quot;", "\"");
173 
174             FileUtil.write(basedir + "/" + file, xml);
175         }
176 
177         x = xml.indexOf("<tbody>");
178         y = xml.indexOf("</tbody>");
179 
180         xml = xml.substring(x, y + 8);
181 
182         Map<String, String> labels = new HashMap<String, String>();
183 
184         int labelCount = 1;
185 
186         x = 0;
187         y = 0;
188 
189         while (true) {
190             x = xml.indexOf("<tr>", x);
191             y = xml.indexOf("\n</tr>", x);
192 
193             if ((x == -1) || (y == -1)) {
194                 break;
195             }
196 
197             x += 6;
198             y++;
199 
200             String step = xml.substring(x, y);
201 
202             String[] params = getParams(step);
203 
204             String param1 = params[0];
205             String param2 = fixParam(params[1]);
206 
207             if (param1.equals("label")) {
208                 String label = labels.get(param2);
209 
210                 if (label == null) {
211                     labelCount++;
212 
213                     label = labels.put(param2, String.valueOf(labelCount));
214                 }
215             }
216         }
217 
218         if (labels.size() > 0) {
219             sb.append("int label = 1;");
220 
221             sb.append("while (label >= 1) {");
222             sb.append("switch (label) {");
223             sb.append("case 1:");
224         }
225 
226         x = 0;
227         y = 0;
228 
229         while (true) {
230             x = xml.indexOf("<tr>", x);
231             y = xml.indexOf("\n</tr>", x);
232 
233             if ((x == -1) || (y == -1)) {
234                 break;
235             }
236 
237             x += 6;
238             y++;
239 
240             String step = xml.substring(x, y);
241 
242             String[] params = getParams(step);
243 
244             String param1 = params[0];
245             String param2 = fixParam(params[1]);
246             String param3 = fixParam(params[2]);
247 
248             if (param1.equals("addSelection") || param1.equals("clickAt") ||
249                 param1.equals("keyPress") || param1.equals("openWindow") ||
250                 param1.equals("select") || param1.equals("type") ||
251                 param1.equals("typeKeys") || param1.equals("waitForPopUp")) {
252 
253                 sb.append("selenium.");
254                 sb.append(param1);
255                 sb.append("(\"");
256                 sb.append(param2);
257                 sb.append("\", RuntimeVariables.replace(\"");
258                 sb.append(param3);
259                 sb.append("\"));");
260             }
261             else if (param1.equals("assertAlert") ||
262                      param1.equals("assertNotAlert")) {
263 
264                 if (param1.equals("assertAlert")) {
265                     sb.append("assertEquals");
266                 }
267                 else if (param1.equals("assertNotAlert")) {
268                     sb.append("assertNotEquals");
269                 }
270 
271                 sb.append("(\"");
272                 sb.append(param2);
273                 sb.append("\", selenium.getAlert());");
274             }
275             else if (param1.equals("assertChecked") ||
276                      param1.equals("assertNotChecked")) {
277 
278                 if (param1.equals("assertChecked")) {
279                     sb.append("assertTrue");
280                 }
281                 else if (param1.equals("assertNotChecked")) {
282                     sb.append("assertFalse");
283                 }
284 
285                 sb.append("(selenium.isChecked(\"");
286                 sb.append(param2);
287                 sb.append("\"));");
288             }
289             else if (param1.equals("assertConfirmation")) {
290                 param2 = StringUtil.replace(param2, "?", "[\\\\s\\\\S]");
291 
292                 sb.append("assertTrue(selenium.getConfirmation().matches(\"^");
293                 sb.append(param2);
294                 sb.append("$\"));");
295             }
296             else if (param1.equals("assertLocation") ||
297                      param1.equals("assertNotLocation")) {
298 
299                 if (param1.equals("assertLocation")) {
300                     sb.append("assertEquals");
301                 }
302                 else if (param1.equals("assertNotLocation")) {
303                     sb.append("assertNotEquals");
304                 }
305 
306                 sb.append("(\"");
307                 sb.append(param2);
308                 sb.append("\", selenium.getLocation());");
309             }
310             else if (param1.equals("assertElementNotPresent") ||
311                      param1.equals("assertElementPresent")) {
312 
313                 if (param1.equals("assertElementNotPresent")) {
314                     sb.append("assertFalse");
315                 }
316                 else if (param1.equals("assertElementPresent")) {
317                     sb.append("assertTrue");
318                 }
319 
320                 sb.append("(selenium.isElementPresent(\"");
321                 sb.append(param2);
322                 sb.append("\"));");
323             }
324             else if (param1.equals("assertNotPartialText") ||
325                      param1.equals("assertPartialText")) {
326 
327                 if (param1.equals("assertNotPartialText")) {
328                     sb.append("assertFalse");
329                 }
330                 else if (param1.equals("assertPartialText")) {
331                     sb.append("assertTrue");
332                 }
333 
334                 sb.append("(selenium.isPartialText(\"");
335                 sb.append(param2);
336                 sb.append("\", ");
337 
338                 if (param3.startsWith("${")) {
339                     sb.append("RuntimeVariables.getValue(\"");
340 
341                     String text = param3.substring(2, param3.length() - 1);
342 
343                     sb.append(text);
344                     sb.append("\")");
345                 }
346                 else {
347                     sb.append("\"");
348                     sb.append(param3);
349                     sb.append("\"");
350                 }
351 
352                 sb.append("));");
353             }
354             else if (param1.equals("assertNotSelectedLabel") ||
355                      param1.equals("assertSelectedLabel")) {
356 
357                 if (param1.equals("assertNotSelectedLabel")) {
358                     sb.append("assertNotEquals");
359                 }
360                 else if (param1.equals("assertSelectedLabel")) {
361                     sb.append("assertEquals");
362                 }
363 
364                 sb.append("(\"");
365                 sb.append(param3);
366                 sb.append("\", selenium.getSelectedLabel(\"");
367                 sb.append(param2);
368                 sb.append("\"));");
369             }
370             else if (param1.equals("assertNotSelectedLabels") ||
371                      param1.equals("assertSelectedLabels")) {
372 
373                 if (param1.equals("assertNotSelectedLabels")) {
374                     sb.append("assertNotEquals");
375                 }
376                 else if (param1.equals("assertSelectedLabels")) {
377                     sb.append("assertEquals");
378                 }
379 
380                 sb.append("(\"");
381                 sb.append(param3);
382                 sb.append("\", join(selenium.getSelectedLabels(\"");
383                 sb.append(param2);
384                 sb.append("\"), \',\'));");
385             }
386             else if (param1.equals("assertNotText") ||
387                      param1.equals("assertText")) {
388 
389                 if (param1.equals("assertNotText")) {
390                     sb.append("assertNotEquals");
391                 }
392                 else if (param1.equals("assertText")) {
393                     sb.append("assertEquals");
394                 }
395 
396                 sb.append("(RuntimeVariables.replace(\"");
397                 sb.append(param3);
398                 sb.append("\"), selenium.getText(\"");
399                 sb.append(param2);
400                 sb.append("\"));");
401             }
402             else if (param1.equals("assertNotValue") ||
403                      param1.equals("assertValue")) {
404 
405                 if (param1.equals("assertNotValue")) {
406                     sb.append("assertNotEquals");
407                 }
408                 else if (param1.equals("assertValue")) {
409                     sb.append("assertEquals");
410                 }
411 
412                 sb.append("(\"");
413                 sb.append(param3);
414                 sb.append("\", selenium.getValue(\"");
415                 sb.append(param2);
416                 sb.append("\"));");
417             }
418             else if (param1.equals("assertNotVisible") ||
419                      param1.equals("assertVisible")) {
420 
421                 if (param1.equals("assertNotVisible")) {
422                     sb.append("assertFalse");
423                 }
424                 else if (param1.equals("assertVisible")) {
425                     sb.append("assertTrue");
426                 }
427 
428                 sb.append("(");
429                 sb.append("selenium.isVisible(\"");
430                 sb.append(param2);
431                 sb.append("\"));");
432             }
433             else if (param1.equals("assertSelectOptions")) {
434                 String[] expectedArray = StringUtil.split(param3);
435 
436                 sb.append("String[] actualArray = ");
437                 sb.append("selenium.getSelectOptions(\"");
438                 sb.append(param2);
439                 sb.append("\");");
440 
441                 sb.append("assertEquals(");
442                 sb.append(expectedArray.length);
443                 sb.append(", actualArray.length);");
444 
445                 for (int i = 0; i < expectedArray.length; i++) {
446                     sb.append("assertEquals(\"");
447                     sb.append(expectedArray[i]);
448                     sb.append("\", actualArray[");
449                     sb.append(i);
450                     sb.append("]);");
451                 }
452             }
453             else if (param1.equals("assertTextNotPresent") ||
454                      param1.equals("assertTextPresent")) {
455 
456                 if (param1.equals("assertTextNotPresent")) {
457                     sb.append("assertFalse");
458                 }
459                 else if (param1.equals("assertTextPresent")) {
460                     sb.append("assertTrue");
461                 }
462 
463                 sb.append("(selenium.isTextPresent(\"");
464                 sb.append(param2);
465                 sb.append("\"));");
466             }
467             else if (param1.equals("captureEntirePageScreenshot")) {
468                 int pos = param2.lastIndexOf("\\");
469 
470                 String dirName = param2.substring(0, pos + 1);
471 
472                 sb.append("FileUtil.mkdirs(RuntimeVariables.replace(\"");
473                 sb.append(dirName);
474                 sb.append("\"));");
475                 sb.append("selenium.captureEntirePageScreenshot(");
476                 sb.append("RuntimeVariables.replace(\"");
477                 sb.append(param2);
478                 sb.append("\"), \"\");");
479             }
480             else if (param1.equals("check") || param1.equals("click") ||
481                      param1.equals("doubleClick") ||
482                      param1.equals("mouseDown") || param1.equals("mouseOver") ||
483                      param1.equals("mouseUp") || param1.equals("open") ||
484                      param1.equals("uncheck") || param1.equals("selectFrame") ||
485                      param1.equals("selectWindow")) {
486 
487                 sb.append("selenium.");
488                 sb.append(param1);
489                 sb.append("(\"");
490                 sb.append(param2);
491                 sb.append("\");");
492             }
493             else if (param1.equals("clickAndWait")) {
494                 sb.append("selenium.click(RuntimeVariables.replace(\"");
495                 sb.append(param2);
496                 sb.append("\"));");
497                 sb.append("selenium.waitForPageToLoad(\"30000\");");
498             }
499             else if (param1.equals("clickAtAndWait") ||
500                      param1.equals("keyPressAndWait") ||
501                      param1.equals("selectAndWait")) {
502 
503                 sb.append("selenium.");
504 
505                 String text = param1.substring(0, param1.length() - 7);
506 
507                 sb.append(text);
508                 sb.append("(\"");
509                 sb.append(param2);
510                 sb.append("\", RuntimeVariables.replace(\"");
511                 sb.append(param3);
512                 sb.append("\"));");
513                 sb.append("selenium.waitForPageToLoad(\"30000\");");
514             }
515             else if (param1.equals("close") || param1.equals("refresh")) {
516                 sb.append("selenium.");
517                 sb.append(param1);
518                 sb.append("();");
519             }
520             else if (param1.equals("dragAndDropToObject")) {
521                 sb.append("selenium.");
522                 sb.append("dragAndDropToObject(\"");
523                 sb.append(param2);
524                 sb.append("\", \"");
525                 sb.append(param3);
526                 sb.append("\");");
527             }
528             else if (param1.equals("echo")) {
529                 sb.append("System.out.println(\"");
530                 sb.append(param2);
531                 sb.append("\");");
532             }
533             else if (param1.equals("gotoIf")) {
534                 String conditional = StringUtil.replace(
535                     param2, new String[] {"${", "}"}, new String[] {"", ""});
536 
537                 sb.append("if (");
538                 sb.append(conditional);
539                 sb.append(") {");
540                 sb.append("label =");
541                 sb.append(labels.get(param3));
542                 sb.append(";");
543                 sb.append("continue;");
544                 sb.append("}");
545             }
546             else if (param1.equals("label")) {
547                 String label = labels.get(param2);
548 
549                 sb.append("case ");
550                 sb.append(label);
551                 sb.append(":");
552             }
553             else if (param1.equals("pause")) {
554                 sb.append("Thread.sleep(");
555                 sb.append(param2);
556                 sb.append(");");
557             }
558             else if (param1.equals("refreshAndWait")) {
559                 sb.append("selenium.refresh();");
560                 sb.append("selenium.waitForPageToLoad(\"30000\");");
561             }
562             else if (param1.equals("store")) {
563                 sb.append("boolean ");
564                 sb.append(param3);
565                 sb.append(" = ");
566 
567                 if (param2.startsWith("eval(")) {
568                     String eval = param2.substring(5, param2.length() - 1);
569 
570                     eval = StringUtil.replace(eval, "'", "\"");
571 
572                     sb.append(eval);
573                 }
574 
575                 sb.append(";");
576             }
577             else if (param1.equals("storeIncrementedText")) {
578                 sb.append("String ");
579                 sb.append(param3);
580                 sb.append(" = selenium.getIncrementedText(\"");
581                 sb.append(param2);
582                 sb.append("\");");
583 
584                 sb.append("RuntimeVariables.setValue(\"");
585                 sb.append(param3);
586                 sb.append("\", ");
587                 sb.append(param3);
588                 sb.append(");");
589             }
590             else if (param1.equals("storeText")) {
591                 sb.append("String ");
592                 sb.append(param3);
593                 sb.append(" = selenium.getText(\"");
594                 sb.append(param2);
595                 sb.append("\");");
596 
597                 sb.append("RuntimeVariables.setValue(\"");
598                 sb.append(param3);
599                 sb.append("\", ");
600                 sb.append(param3);
601                 sb.append(");");
602             }
603             else if (param1.equals("verifyElementNotPresent") ||
604                      param1.equals("verifyElementPresent")) {
605 
606                 if (param1.equals("verifyElementNotPresent")) {
607                     sb.append("verifyFalse");
608                 }
609                 else if (param1.equals("verifyElementPresent")) {
610                     sb.append("verifyTrue");
611                 }
612 
613                 sb.append("(selenium.isElementPresent(\"");
614                 sb.append(param2);
615                 sb.append("\"));");
616             }
617             else if (param1.equals("verifyTextNotPresent") ||
618                      param1.equals("verifyTextPresent")) {
619 
620                 if (param1.equals("verifyTextNotPresent")) {
621                     sb.append("verifyFalse");
622                 }
623                 else if (param1.equals("verifyTextPresent")) {
624                     sb.append("verifyTrue");
625                 }
626 
627                 sb.append("(selenium.isTextPresent(\"");
628                 sb.append(param2);
629                 sb.append("\"));");
630             }
631             else if (param1.equals("verifyTitle")) {
632                 sb.append("verifyEquals(\"");
633                 sb.append(param2);
634                 sb.append("\", selenium.getTitle());");
635             }
636             else if (param1.equals("waitForElementNotPresent") ||
637                      param1.equals("waitForElementPresent") ||
638                      param1.equals("waitForNotPartialText") ||
639                      param1.equals("waitForPartialText") ||
640                      param1.equals("waitForTextNotPresent") ||
641                      param1.equals("waitForTextPresent")) {
642 
643                 sb.append("for (int second = 0;; second++) {");
644                 sb.append("if (second >= 60) {");
645                 sb.append("fail(\"timeout\");");
646                 sb.append("}");
647 
648                 sb.append("try {");
649                 sb.append("if (");
650 
651                 if (param1.equals("waitForElementNotPresent") ||
652                     param1.equals("waitForNotPartialText") ||
653                     param1.equals("waitForTextNotPresent")) {
654 
655                     sb.append("!");
656                 }
657 
658                 sb.append("selenium.");
659 
660                 if (param1.equals("waitForElementNotPresent") ||
661                     param1.equals("waitForElementPresent")) {
662 
663                     sb.append("isElementPresent");
664                     sb.append("(\"");
665                     sb.append(param2);
666                     sb.append("\")");
667                 }
668                 else if (param1.equals("waitForTextNotPresent") ||
669                          param1.equals("waitForTextPresent")) {
670 
671                     sb.append("isTextPresent");
672                     sb.append("(\"");
673                     sb.append(param2);
674                     sb.append("\")");
675                 }
676                 else if (param1.equals("waitForNotPartialText") ||
677                          param1.equals("waitForPartialText")) {
678 
679                     sb.append("isPartialText(\"");
680                     sb.append(param2);
681                     sb.append("\", ");
682 
683                     if (param3.startsWith("${")) {
684                         sb.append("RuntimeVariables.getValue(\"");
685 
686                         String text = param3.substring(2, param3.length() - 1);
687 
688                         sb.append(text);
689                         sb.append("\")");
690                     }
691                     else {
692                         sb.append("\"");
693                         sb.append(param3);
694                         sb.append("\"");
695                     }
696 
697                     sb.append(")");
698                 }
699 
700                 sb.append(") {");
701                 sb.append("break;");
702                 sb.append("}");
703                 sb.append("}");
704                 sb.append("catch (Exception e) {");
705                 sb.append("}");
706 
707                 sb.append("Thread.sleep(1000);");
708                 sb.append("}");
709             }
710             else if (param1.equals("waitForNotVisible") ||
711                      param1.equals("waitForVisible")) {
712 
713                 sb.append("for (int second = 0;; second++) {");
714                 sb.append("if (second >= 60) {");
715                 sb.append("fail(\"timeout\");");
716                 sb.append("}");
717 
718                 sb.append("try {");
719                 sb.append("if (");
720 
721                 if (param1.equals("waitForNotVisible")) {
722                     sb.append("!");
723                 }
724 
725                 sb.append("selenium.isVisible");
726                 sb.append("(\"");
727                 sb.append(param2);
728                 sb.append("\")) {");
729                 sb.append("break;");
730                 sb.append("}");
731                 sb.append("}");
732                 sb.append("catch (Exception e) {");
733                 sb.append("}");
734 
735                 sb.append("Thread.sleep(1000);");
736                 sb.append("}");
737             }
738             else if (param1.equals("waitForTable")) {
739                 sb.append("for (int second = 0;; second++) {");
740                 sb.append("if (second >= 60) {");
741                 sb.append("fail(\"timeout\");");
742                 sb.append("}");
743 
744                 sb.append("try {");
745                 sb.append("if (StringPool.BLANK.equals(selenium.getTable(\"");
746                 sb.append(param2);
747                 sb.append("\"))) {");
748                 sb.append("break;");
749                 sb.append("}");
750                 sb.append("}");
751                 sb.append("catch (Exception e) {");
752                 sb.append("}");
753 
754                 sb.append("Thread.sleep(1000);");
755                 sb.append("}");
756             }
757             else {
758                 System.out.println(param1 + " was not translated");
759             }
760         }
761 
762         if (labels.size() > 0) {
763             sb.append("case 100:");
764             sb.append("label = -1;");
765             sb.append("}");
766             sb.append("}");
767         }
768 
769         sb.append("}");
770         sb.append("}");
771 
772         String content = sb.toString();
773 
774         ServiceBuilder.writeFile(new File(testFileName), content);
775     }
776 
777     private static final String[] _FIX_PARAM_OLD_SUBS = new String[] {
778         "\\\\n", "<br />"
779     };
780 
781     private static final String[] _FIX_PARAM_NEW_SUBS = new String[] {
782         "\\n", "\\n"
783     };
784 
785 }