KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > jforum > view > install > ParseDBStructFile


1 /*
2  * Copyright (c) Rafael Steil
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms,
6  * with or without modification, are permitted provided
7  * that the following conditions are met:
8  *
9  * 1) Redistributions of source code must retain the above
10  * copyright notice, this list of conditions and the
11  * following disclaimer.
12  * 2) Redistributions in binary form must reproduce the
13  * above copyright notice, this list of conditions and
14  * the following disclaimer in the documentation and/or
15  * other materials provided with the distribution.
16  * 3) Neither the name of "Rafael Steil" nor
17  * the names of its contributors may be used to endorse
18  * or promote products derived from this software without
19  * specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
22  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
23  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
24  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
32  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
34  * IN CONTRACT, STRICT LIABILITY, OR TORT
35  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
37  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
38  *
39  * Created on 16/11/2005 18:42:42
40  * The JForum Project
41  * http://www.jforum.net
42  */

43 package net.jforum.view.install;
44
45 import java.io.BufferedReader JavaDoc;
46 import java.io.FileReader JavaDoc;
47 import java.io.IOException JavaDoc;
48 import java.util.ArrayList JavaDoc;
49 import java.util.List JavaDoc;
50
51 /**
52  * @author Rafael Steil
53  * @version $Id: ParseDBStructFile.java,v 1.3 2005/12/27 18:09:56 rafaelsteil Exp $
54  */

55 public class ParseDBStructFile
56 {
57     public static List JavaDoc parse(String JavaDoc filename) throws IOException JavaDoc
58     {
59         List JavaDoc statements = new ArrayList JavaDoc();
60         
61         BufferedReader JavaDoc reader = null;
62         
63         try {
64             reader = new BufferedReader JavaDoc(new FileReader JavaDoc(filename));
65             StringBuffer JavaDoc sb = new StringBuffer JavaDoc(512);
66             String JavaDoc line = null;
67             
68             boolean processing = false;
69             char delimiter = ';';
70             String JavaDoc[] creators = { "CREATE INDEX", "CREATE TABLE", "CREATE SEQUENCE", "DROP TABLE", "IF EXISTS",
71                     "DROP SEQUENCE", "DROP INDEX" };
72             
73             while ((line = reader.readLine()) != null) {
74                 if (line.length() == 0) {
75                     continue;
76                 }
77                 
78                 char charAt = line.charAt(0);
79                 
80                 // Ignore comments
81
if (charAt == '-' || charAt == '#') {
82                     continue;
83                 }
84                 
85                 if (processing) {
86                     sb.append(line);
87                     
88                     if (line.indexOf(delimiter) > -1) {
89                         sb.delete(sb.length() - 1, sb.length());
90                         statements.add(sb.toString());
91                         processing = false;
92                     }
93                 }
94                 else {
95                     for (int i = 0; i < creators.length; i++) {
96                         if (line.indexOf(creators[i]) > -1) {
97                             sb.delete(0, sb.length());
98                             
99                             if (line.indexOf(delimiter) > -1) {
100                                 if (line.indexOf(';') > -1) {
101                                     line = line.replace(';', ' ');
102                                 }
103                                 
104                                 statements.add(line);
105                             }
106                             else {
107                                 sb.append(line);
108                                 processing = true;
109                             }
110                             
111                             break;
112                         }
113                     }
114                 }
115             }
116         }
117         finally {
118             if (reader != null) {
119                 try { reader.close(); } catch (Exception JavaDoc e) {}
120             }
121         }
122         
123         return statements;
124     }
125 }
126
Popular Tags