KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nilostep > xlsql > sql > hsqldb > xlHsqldb


1 /*(Header: NiLOSTEP / xlSQL)
2
3     Copyright (C) 2004 NiLOSTEP Information Sciences, all
4     rights reserved.
5     
6     This program is licensed under the terms of the GNU
7     General Public License.You should have received a copy
8     of the GNU General Public License along with this
9     program;
10 */

11
12 package com.nilostep.xlsql.sql.hsqldb;
13
14 import com.nilostep.xlsql.sql.xlSql;
15 import com.nilostep.xlsql.database.*;
16 import com.nilostep.xlsql.sql.*;
17
18 import java.sql.*;
19 import java.util.regex.*;
20
21 /**
22  * xlHsqldb class translates HSQL to native xlSQL
23  *
24  * @author Jim Caprioli
25  */

26 public class xlHsqldb extends xlSql {
27
28     /**
29      * Creates a new instance of type xlHsqldb.
30      *
31      * @param database xlSQL instance
32      */

33     public xlHsqldb(com.nilostep.xlsql.database.xlDatabase database) {
34         super(database);
35
36         cmd = new String JavaDoc[7];
37         cmd[INSERT] = "\\s*[Ii][Nn][Ss][Ee][Rr][Tt].*[Ii][Nn][Tt][Oo].*[Vv][Aa][Ll][Uu][Ee][Ss].*";
38         cmd[UPDATE] = "\\s*[Uu][Pp][Dd][Aa][Tt][Ee].*";
39         cmd[DELETE] = "\\s*[Dd][Ee][Ll][Ee][Tt][Ee].*[Ff][Rr][Oo][Mm].*";
40         cmd[CREATE_TABLE] = "\\s*[Cc][Rr][Ee][Aa][Tt][eE].*[Tt][Aa][Bb][Ll][Ee].*";
41         cmd[DROP_TABLE] = "\\s*[Dd][Rr][Oo][Pp].*[Tt][Aa][Bb][Ll][Ee].*";
42         cmd[RENAME_TABLE] = "\\s*[Aa][Ll][Tt][Ee][Rr].*[Tt][Aa][Bb][Ll][Ee].*" +
43                  "[Rr][Ee][Nn][Aa][Mm][Ee].*[Tt][Oo].*";
44         cmd[ALTER_TABLE] = "\\s*[Aa][Ll][Tt][Ee][Rr].*[Tt][Aa][Bb][Ll][Ee].*" +
45                  "[Cc][Oo][Ll][Uu][Mm][Nn].*";
46     }
47
48     //~ Methods ································································
49

50     protected String JavaDoc[] getVars(int cmd,
51                                String JavaDoc sql) {
52         String JavaDoc[] v = new String JavaDoc[4];
53         String JavaDoc tmp = "";
54         
55         switch (cmd) {
56         case INSERT:
57             tmp = sql.replaceAll(
58                           "\\s*[Ii][Nn][Ss][Ee][Rr][Tt].*[Ii][Nn][Tt][Oo]\\s*",
59                           "");
60             tmp = tmp.substring(0, tmp.indexOf("("));
61             tmp = tmp.replaceAll("\\s*[Vv][Aa][Ll][Uu][Ee][Ss].*", "");
62             break;
63
64         case UPDATE:
65             tmp = sql.replaceAll("\\s*[Uu][Pp][Dd][Aa][Tt][Ee]\\s*", "");
66             tmp = tmp.replaceAll("\\s*[Ss][Ee][Tt].*", "");
67             break;
68
69         case DELETE:
70             tmp = sql.replaceAll(
71                           "\\s*[Dd][Ee][Ll][Ee][Tt][Ee].*[Ff][Rr][Oo][Mm]\\s*",
72                           "");
73             tmp = tmp.replaceAll("\\s*[Ww][Hh][Ee][Rr][Ee].*", "");
74             break;
75
76         case CREATE_TABLE:
77             tmp = sql.replaceAll("\\s*[Cc][Rr][Ee][Aa][Tt][Ee]\\s*", "");
78             tmp = tmp.substring(6);
79             tmp = tmp.replaceAll("\\s*[(].*", "");
80             break;
81
82         case DROP_TABLE:
83             tmp = sql.replaceAll("\\s*[Dd][Rr][Oo][Pp]\\s*", "");
84             tmp = tmp.substring(6);
85             tmp = tmp.replaceAll("\\s*[Ii][Ff].*[Ee][Xx][Ii][Ss][Tt][Ss]\\s*","");
86             break;
87
88         case RENAME_TABLE:
89             tmp = sql.replaceAll("\\s*[Aa][Ll][Tt][Ee][Rr]\\s*", "");
90             tmp = tmp.trim();
91             tmp = tmp.substring(6);
92
93             String JavaDoc[] s = tmp.split("[Rr][Ee][Nn][Aa][Mm][Ee].*[Tt][Oo]");
94             String JavaDoc tmp_old = s[0].trim();
95             tmp_old = tmp_old.replaceAll("[\"]", "");
96             tmp_old = tmp_old.replaceAll("[']", "");
97             tmp = s[1].trim();
98             tmp = tmp.replaceAll("[\"]", "");
99
100             if (tmp_old.indexOf(DOT) == -1) {
101                 v[2] = "SA";
102                 v[3] = tmp_old;
103             } else {
104                 v[2] = tmp_old.substring(0, tmp_old.indexOf(DOT));
105                 v[3] = tmp_old.substring(1 + tmp_old.indexOf(DOT),
106                                          tmp_old.length());
107             }
108
109             break;
110
111         case ALTER_TABLE:
112             tmp = sql.replaceAll("\\s*[Aa][Ll][Tt][Ee][Rr]\\s*", "");
113             tmp = tmp.substring(5);
114             tmp = tmp.substring(0, tmp.indexOf(" "));
115             break;
116
117         default:
118             break;
119         }
120
121         tmp = tmp.trim();
122         tmp = tmp.replaceAll("[;]", "");
123         tmp = tmp.replaceAll("[\"]", "");
124         tmp = tmp.replaceAll("[']", "");
125         if (tmp.indexOf(DOT) == -1) {
126             v[0] = "SA";
127             v[1] = tmp;
128         } else {
129             v[0] = tmp.substring(0, tmp.indexOf(DOT));
130             v[1] = tmp.substring(1 + tmp.indexOf(DOT), tmp.length());
131         }
132         return v;
133     }
134 }
Popular Tags