1 5 package org.h2.tools; 6 import java.io.FileReader ; 7 import java.io.FileWriter ; 8 import java.io.IOException ; 9 import java.io.LineNumberReader ; 10 import java.io.PrintWriter ; 11 import java.sql.SQLException ; 12 13 import org.h2.message.Message; 14 15 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 41 public static void main(String [] args) throws SQLException { 42 new ConvertTraceFile().run(args); 43 } 44 45 private void run(String [] args) throws SQLException { 46 String traceFile = "test.trace.db"; 47 String javaClass = "Test"; 48 String 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 e) { 64 throw Message.convert(e); 65 } 66 } 67 68 75 private void convertFile(String traceFileName, String javaClassName, String script) throws IOException { 76 LineNumberReader reader = new LineNumberReader (new FileReader (traceFileName)); 77 PrintWriter javaWriter = new PrintWriter (new FileWriter (javaClassName + ".java")); 78 PrintWriter scriptWriter = new PrintWriter (new FileWriter (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 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 |