KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > tools > ConvertTraceFile


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.tools;
6 import java.io.FileReader JavaDoc;
7 import java.io.FileWriter JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.io.LineNumberReader JavaDoc;
10 import java.io.PrintWriter JavaDoc;
11 import java.sql.SQLException JavaDoc;
12
13 import org.h2.message.Message;
14
15 /**
16  * Convert a trace file to a java class.
17  * This is required because the find command truncates lines.
18  *
19  */

20 public class ConvertTraceFile {
21     
22     private void showUsage() {
23         System.out.println("java "+getClass().getName()
24                 + " [-traceFile <trace file name>] [-javaClass <java class name>] [-script <sql script file>]");
25     }
26
27     /**
28      * The command line interface for this tool.
29      * The options must be split into strings like this: "-traceFile", "test.trace.db",...
30      * The following options are supported:
31      * <ul>
32      * <li>-help or -? (print the list of options)
33      * <li>-traceFile filename (the default is test.trace.db)
34      * <li>-script filename (the default is test.sql)
35      * <li>-javaClass className (the default is Test)
36      * </ul>
37      *
38      * @param args the command line arguments
39      * @throws Exception
40      */

41     public static void main(String JavaDoc[] args) throws SQLException JavaDoc {
42         new ConvertTraceFile().run(args);
43     }
44     
45     private void run(String JavaDoc[] args) throws SQLException JavaDoc {
46         String JavaDoc traceFile = "test.trace.db";
47         String JavaDoc javaClass = "Test";
48         String JavaDoc script = "test.sql";
49         for(int i=0; args != null && i<args.length; i++) {
50             if(args[i].equals("-traceFile")) {
51                 traceFile = args[++i];
52             } else if(args[i].equals("-javaClass")) {
53                 javaClass = args[++i];
54             } else if(args[i].equals("-script")) {
55                 script = args[++i];
56             } else {
57                 showUsage();
58                 return;
59             }
60         }
61         try {
62             convertFile(traceFile, javaClass, script);
63         } catch(IOException JavaDoc e) {
64             throw Message.convert(e);
65         }
66     }
67     
68     /**
69      * Converts a trace file to a Java class file and a script file.
70      *
71      * @param traceFileName
72      * @param javaClassName
73      * @throws IOException
74      */

75     private void convertFile(String JavaDoc traceFileName, String JavaDoc javaClassName, String JavaDoc script) throws IOException JavaDoc {
76         LineNumberReader JavaDoc reader = new LineNumberReader JavaDoc(new FileReader JavaDoc(traceFileName));
77         PrintWriter JavaDoc javaWriter = new PrintWriter JavaDoc(new FileWriter JavaDoc(javaClassName + ".java"));
78         PrintWriter JavaDoc scriptWriter = new PrintWriter JavaDoc(new FileWriter JavaDoc(script));
79         javaWriter.println("import java.io.*;");
80         javaWriter.println("import java.sql.*;");
81         javaWriter.println("import java.math.*;");
82         javaWriter.println("import java.util.Calendar;");
83         javaWriter.println("public class " +javaClassName+ " {");
84         javaWriter.println(" public static void main(String[] args) throws Exception {");
85         javaWriter.println(" Class.forName(\"org.h2.Driver\");");
86         while(true) {
87             String JavaDoc line = reader.readLine();
88             if(line == null) {
89                 break;
90             }
91             if(line.startsWith("/**/")) {
92                 line = " " + line.substring(4);
93                 javaWriter.println(line);
94             } else if(line.startsWith("/*SQL*/")) {
95                 line = line.substring("/*SQL*/".length());
96                 scriptWriter.println(line);
97             }
98         }
99         javaWriter.println(" }");
100         javaWriter.println("}");
101         reader.close();
102         javaWriter.close();
103         scriptWriter.close();
104     }
105
106 }
107
Popular Tags