KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > tools > doc > GenerateDoc


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.doc;
6
7 import java.io.File JavaDoc;
8 import java.io.FileInputStream JavaDoc;
9 import java.io.FileOutputStream JavaDoc;
10 import java.sql.Connection JavaDoc;
11 import java.sql.DriverManager JavaDoc;
12 import java.sql.ResultSet JavaDoc;
13 import java.sql.ResultSetMetaData JavaDoc;
14 import java.util.ArrayList JavaDoc;
15 import java.util.HashMap JavaDoc;
16
17 import org.h2.bnf.Bnf;
18 import org.h2.server.web.PageParser;
19 import org.h2.tools.indexer.Indexer;
20 import org.h2.util.IOUtils;
21 import org.h2.util.JdbcUtils;
22 import org.h2.util.StringUtils;
23
24 public class GenerateDoc {
25     
26     public static void main(String JavaDoc[] args) throws Exception JavaDoc {
27         new GenerateDoc().run(args);
28     }
29     
30     String JavaDoc inDir = "src/docsrc/html";
31     String JavaDoc outDir = "docs/html";
32     Connection JavaDoc conn;
33     HashMap JavaDoc session = new HashMap JavaDoc();
34     Bnf bnf;
35
36     void run(String JavaDoc[] args) throws Exception JavaDoc {
37         for(int i=0; i<args.length; i++) {
38             if(args[i].equals("-in")) {
39                 inDir = args[++i];
40             } else if(args[i].equals("-out")) {
41                 outDir = args[++i];
42             }
43         }
44         
45         Class.forName("org.h2.Driver");
46         conn = DriverManager.getConnection("jdbc:h2:.");
47         new File JavaDoc(outDir).mkdirs();
48         
49         bnf = Bnf.getInstance(null);
50
51         map("commands", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION LIKE 'Commands%' ORDER BY ID");
52         map("commandsDML", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION='Commands (DML)' ORDER BY ID");
53         map("commandsDDL", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION='Commands (DDL)' ORDER BY ID");
54         map("commandsOther", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION='Commands (Other)' ORDER BY ID");
55         map("otherGrammar", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION='Other Grammar' ORDER BY ID");
56         map("functionsAggregate", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION = 'Functions (Aggregate)' ORDER BY ID");
57         map("functionsNumeric", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION = 'Functions (Numeric)' ORDER BY ID");
58         map("functionsString", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION = 'Functions (String)' ORDER BY ID");
59         map("functionsTimeDate", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION = 'Functions (Time and Date)' ORDER BY ID");
60         map("functionsSystem", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION = 'Functions (System)' ORDER BY ID");
61         map("functionsAll", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION LIKE 'Functions%' ORDER BY SECTION, ID");
62         map("dataTypes", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION LIKE 'Data Types%' ORDER BY SECTION, ID");
63         
64         process("grammar");
65         process("functions");
66         process("datatypes");
67         
68         conn.close();
69         
70         Indexer.main(new String JavaDoc[0]);
71     }
72     
73     void process(String JavaDoc fileName) throws Exception JavaDoc {
74         FileOutputStream JavaDoc fout = new FileOutputStream JavaDoc(outDir + "/"+fileName+".html");
75         FileInputStream JavaDoc fin = new FileInputStream JavaDoc(inDir + "/"+fileName+".jsp");
76         byte[] bytes = IOUtils.readBytesAndClose(fin, 0);
77         String JavaDoc page = new String JavaDoc(bytes);
78         page = PageParser.parse(null, page, session);
79         fout.write(page.getBytes());
80         fout.close();
81     }
82     
83     void map(String JavaDoc key, String JavaDoc sql) throws Exception JavaDoc {
84         ResultSet JavaDoc rs = null;
85         try {
86             rs = conn.createStatement().executeQuery(sql);
87             ArrayList JavaDoc list = new ArrayList JavaDoc();
88             while(rs.next()) {
89                 HashMap JavaDoc map = new HashMap JavaDoc();
90                 ResultSetMetaData JavaDoc meta = rs.getMetaData();
91                 for(int i=0; i<meta.getColumnCount(); i++) {
92                     String JavaDoc k = StringUtils.toLowerEnglish(meta.getColumnLabel(i+1));
93                     String JavaDoc value = rs.getString(i+1);
94                     map.put(k, PageParser.escapeHtml(value));
95                 }
96                 String JavaDoc topic = rs.getString("TOPIC");
97                 String JavaDoc syntax = rs.getString("SYNTAX");
98                 syntax = PageParser.escapeHtml(syntax);
99                 syntax = StringUtils.replaceAll(syntax, "<br>", "");
100                 syntax = bnf.getSyntax(topic, syntax);
101                 map.put("syntax", syntax);
102                 list.add(map);
103             }
104             session.put(key, list);
105         } finally {
106             JdbcUtils.closeSilently(rs);
107         }
108     }
109 }
110
Popular Tags