KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > infoglue > cmsinstaller > SQLServerDatabaseCommander


1 /* ===============================================================================
2  *
3  * Part of the InfoGlue Content Management Platform (www.infoglue.org)
4  *
5  * ===============================================================================
6  *
7  * Copyright (C)
8  *
9  * This program is free software; you can redistribute it and/or modify it under
10  * the terms of the GNU General Public License version 2, as published by the
11  * Free Software Foundation. See the file LICENSE.html for more information.
12  *
13  * This program is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along with
18  * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
19  * Place, Suite 330 / Boston, MA 02111-1307 / USA.
20  *
21  * ===============================================================================
22  */

23
24 package org.infoglue.cmsinstaller;
25 import java.sql.*;
26 import java.io.*;
27 import java.util.*;
28
29 public class SQLServerDatabaseCommander extends DatabaseCommander
30 {
31     private final String JavaDoc driver = "net.sourceforge.jtds.jdbc.Driver";
32     private static String JavaDoc sqlServerVersion = "";
33     
34     public SQLServerDatabaseCommander(String JavaDoc driverClass, String JavaDoc databaseHostName, String JavaDoc databasePortNumber, String JavaDoc databaseInstance, String JavaDoc url, String JavaDoc userName, String JavaDoc password, String JavaDoc infoglueDatabaseUserName, String JavaDoc infoglueDatabasePassword, String JavaDoc databaseName, String JavaDoc databaseSuffix, String JavaDoc hostName, boolean createDatabase, boolean createInitialData, boolean createAntSeekHome, boolean createOfficeStand, boolean createOfficeStand2) throws Exception JavaDoc
35     {
36         super(driverClass, databaseHostName, databasePortNumber, databaseInstance, url, userName, password, infoglueDatabaseUserName, infoglueDatabasePassword, databaseName, databaseSuffix, hostName, createDatabase, createInitialData, createAntSeekHome, createOfficeStand, createOfficeStand2);
37     }
38     
39     public String JavaDoc getUrl(String JavaDoc hostName, String JavaDoc databasePortNumber, String JavaDoc database)
40     {
41         String JavaDoc url = "jdbc:jtds:sqlserver://" + hostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("") ? ";DatabaseName=" + database + ";SelectMethod=Cursor" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + database + ";SelectMethod=Cursor"));
42         return url;
43         //return "jdbc:jtds:sqlserver://" + hostName + ":" + databasePortNumber + ";DatabaseName=" + database + "";
44
//return "jdbc:microsoft:sqlserver://" + hostName + ":1433;DatabaseName=" + database + "";
45
}
46
47     public String JavaDoc getUnicodeUrl(String JavaDoc hostName, String JavaDoc databasePortNumber, String JavaDoc database)
48     {
49         String JavaDoc url = "jdbc:jtds:sqlserver://" + hostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("") ? ";DatabaseName=" + database + ";SelectMethod=Cursor" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + database + ";SelectMethod=Cursor"));
50         return url;
51         //return "jdbc:jtds:sqlserver://" + hostName + ":" + databasePortNumber + ";DatabaseName=" + database + "";
52
//return "jdbc:microsoft:sqlserver://" + hostName + ":1433;DatabaseName=" + database + "";
53
}
54
55     public String JavaDoc getTDSSpecficUrl(String JavaDoc hostName, String JavaDoc databasePortNumber, String JavaDoc database)
56     {
57         String JavaDoc url = "jdbc:jtds:sqlserver://" + hostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("") ? ";DatabaseName=" + database + ";SelectMethod=Cursor" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + database + ";SelectMethod=Cursor"));
58         return url;
59         //return "jdbc:jtds:sqlserver://" + hostName + ":" + databasePortNumber + "/" + database + "";
60
//return "jdbc:jtds:sqlserver://" + hostName + ":1433;DatabaseName=" + database + "";
61
//return "jdbc:microsoft:sqlserver://" + hostName + ":1433;DatabaseName=" + database + "";
62
}
63     
64     public void setupDatabase() throws Exception JavaDoc
65     {
66         if(this.createDatabase)
67             createDatabase();
68         
69         System.out.println("this.sqlServerVersion:" + this.sqlServerVersion);
70         if(this.sqlServerVersion.indexOf("9.0") > -1)
71             callProcedure(getConnection(), "sp_dbcmptlevel", databaseName, "80");
72
73         if(this.createInitialData)
74         {
75             createTables();
76             createInitialData();
77             setupExamples();
78         }
79         
80         if(this.createDatabase)
81             createUsers();
82     }
83     
84     public void deleteDatabase() throws Exception JavaDoc
85     {
86         dropDatabase();
87         dropUsers();
88     }
89
90     
91     private void createDatabase() throws Exception JavaDoc
92     {
93         Logger.logInfo("Setting up a new database....");
94         issueCommand(getConnection(), "CREATE DATABASE " + databaseName + ";");
95     }
96     
97     private void createTables() throws Exception JavaDoc
98     {
99         String JavaDoc url = getTDSSpecficUrl(databaseHostName, databasePortNumber, databaseName);
100         Connection conn = getConnection(url, this.userName, this.password);
101         
102         Logger.logInfo("Setting up a new database....");
103         
104         try
105         {
106             //System.out.println("Connection:" + conn.toString());
107

108             
109             String JavaDoc sql = "CREATE TABLE #test ("
110                         + " f_int INT,"
111                         + " f_varchar VARCHAR(255) )";
112             Statement stmt = conn.createStatement();
113             stmt.execute( sql );
114             
115             FileInputStream fis = new FileInputStream("sqlserver_infoglue_core_schema.sql");
116             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
117             int c;
118             while((c = fis.read()) != -1)
119             {
120                 char character = (char)c;
121                 sb.append(character);
122             }
123             String JavaDoc script = sb.toString();
124             //Logger.logInfo("script:" + script);
125

126             StringTokenizer st = new StringTokenizer(script, ";");
127             while (st.hasMoreTokens())
128             {
129                 String JavaDoc command = st.nextToken();
130                 Logger.logInfo("Command: " + command);
131                 issueCommand(conn, command + ";");
132             }
133             
134         }
135         catch(Exception JavaDoc e)
136         {
137             Logger.logInfo("Error: " + e);
138         }
139     }
140
141     private void createInitialData() throws Exception JavaDoc
142     {
143         String JavaDoc url = getTDSSpecficUrl(databaseHostName, databasePortNumber, databaseName);
144         Connection conn = getConnection(url, this.userName, this.password);
145         
146         Logger.logInfo("Setting up initial data....");
147         
148         try
149         {
150             FileInputStream fis = new FileInputStream("sqlserver_infoglue_initial_data.sql");
151             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
152             int c;
153             while((c = fis.read()) != -1)
154             {
155                 char character = (char)c;
156                 sb.append(character);
157             }
158             String JavaDoc script = sb.toString();
159             //Logger.logInfo("script:" + script);
160

161             String JavaDoc[] commands = script.split("#endquery");
162             Logger.logInfo("Parsed " + commands.length + " commands from script");
163             
164             for(int i=0; i<commands.length; i++)
165             {
166                 String JavaDoc command = commands[i];
167                 if(command.indexOf("SPECIAL") > -1)
168                     issueSpecialCommand(conn, command.trim());
169                 else
170                     issueCommand(conn, command.trim());
171             }
172                 
173         }
174         catch(Exception JavaDoc e)
175         {
176             Logger.logInfo("Error: " + e);
177         }
178     }
179
180     public void upgradeTo1_3(Connection conn) throws Exception JavaDoc
181     {
182         Logger.logInfo("Upgrading to 1.3");
183         
184         try
185         {
186             FileInputStream fis = new FileInputStream("sqlserver_upgrade1_2_to1_3.sql");
187             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
188             int c;
189             while((c = fis.read()) != -1)
190             {
191                 char character = (char)c;
192                 sb.append(character);
193             }
194             String JavaDoc script = sb.toString();
195             Logger.logInfo("script:" + script);
196             
197             StringTokenizer st = new StringTokenizer(script, ";");
198             while (st.hasMoreTokens())
199             {
200                 String JavaDoc command = st.nextToken();
201                 //Logger.logInfo("Command: " + command);
202
issueCommand(conn, command + ";");
203             }
204         }
205         catch(Exception JavaDoc e)
206         {
207             Logger.logInfo("Error: " + e);
208         }
209     }
210
211     public void upgradeTo1_3_2(Connection conn) throws Exception JavaDoc
212     {
213         Logger.logInfo("Upgrading to 1.3.2");
214         
215         try
216         {
217             FileInputStream fis = new FileInputStream("sqlserver_upgrade1_3_to1_3_2.sql");
218             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
219             int c;
220             while((c = fis.read()) != -1)
221             {
222                 char character = (char)c;
223                 sb.append(character);
224             }
225             String JavaDoc script = sb.toString();
226             Logger.logInfo("script:" + script);
227             
228             StringTokenizer st = new StringTokenizer(script, ";");
229             while (st.hasMoreTokens())
230             {
231                 String JavaDoc command = st.nextToken();
232                 //Logger.logInfo("Command: " + command);
233
issueCommand(conn, command + ";");
234             }
235         }
236         catch(Exception JavaDoc e)
237         {
238             Logger.logInfo("Error: " + e);
239         }
240     }
241
242     public void upgradeTo2_0(Connection conn) throws Exception JavaDoc
243     {
244         Logger.logInfo("Upgrading to 2_0");
245         
246         try
247         {
248             FileInputStream fis = new FileInputStream("sqlserver_upgrade1_3_2_to2_0.sql");
249             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
250             int c;
251             while((c = fis.read()) != -1)
252             {
253                 char character = (char)c;
254                 sb.append(character);
255             }
256             String JavaDoc script = sb.toString();
257             Logger.logInfo("script:" + script);
258             
259             StringTokenizer st = new StringTokenizer(script, ";");
260             while (st.hasMoreTokens())
261             {
262                 String JavaDoc command = st.nextToken();
263                 //Logger.logInfo("Command: " + command);
264
issueCommand(conn, command + ";");
265             }
266         }
267         catch(Exception JavaDoc e)
268         {
269             Logger.logInfo("Error: " + e);
270         }
271     }
272
273     public void upgradeTo2_1(Connection conn) throws Exception JavaDoc
274     {
275         Logger.logInfo("Upgrading to 2_1");
276         
277         try
278         {
279             FileInputStream fis = new FileInputStream("sqlserver_upgrade2_0_to2_1.sql");
280             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
281             int c;
282             while((c = fis.read()) != -1)
283             {
284                 char character = (char)c;
285                 sb.append(character);
286             }
287             String JavaDoc script = sb.toString();
288             Logger.logInfo("script:" + script);
289             
290             StringTokenizer st = new StringTokenizer(script, ";");
291             while (st.hasMoreTokens())
292             {
293                 String JavaDoc command = st.nextToken();
294                 //Logger.logInfo("Command: " + command);
295
issueCommand(conn, command + ";");
296             }
297         }
298         catch(Exception JavaDoc e)
299         {
300             Logger.logInfo("Error: " + e);
301         }
302     }
303
304     public void upgradeTo2_3(Connection conn) throws Exception JavaDoc
305     {
306         Logger.logInfo("Upgrading to 2_3");
307         
308         try
309         {
310             FileInputStream fis = new FileInputStream("sqlserver_upgrade2_1_to2_3.sql");
311             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
312             int c;
313             while((c = fis.read()) != -1)
314             {
315                 char character = (char)c;
316                 sb.append(character);
317             }
318             String JavaDoc script = sb.toString();
319             Logger.logInfo("script:" + script);
320             
321             StringTokenizer st = new StringTokenizer(script, ";");
322             while (st.hasMoreTokens())
323             {
324                 String JavaDoc command = st.nextToken();
325                 //Logger.logInfo("Command: " + command);
326
issueCommand(conn, command + ";");
327             }
328         }
329         catch(Exception JavaDoc e)
330         {
331             Logger.logInfo("Error: " + e);
332         }
333     }
334
335     private void createUsers() throws Exception JavaDoc
336     {
337         Logger.logInfo("Setting up all users....");
338         
339         //String url = "jdbc:microsoft:sqlserver://" + databaseHostName + ":1433";
340
String JavaDoc url = "jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("")) ? "" : ";INSTANCE=" + this.getDatabaseInstance());
341         //String url = "jdbc:jtds:sqlserver://" + databaseHostName + ":1433";
342
Connection conn = getConnection(url, this.userName, this.password);
343         
344         callProcedure(conn, "sp_addlogin", this.infoglueDatabaseUserName, this.infoglueDatabasePassword, databaseName);
345         
346         conn.close();
347         
348         url = getTDSSpecficUrl(databaseHostName, databasePortNumber, databaseName);
349
350         conn = getConnection(url, this.userName, this.password);
351         
352         callProcedure(conn, "sp_grantdbaccess", this.infoglueDatabaseUserName, databaseName);
353         callProcedure(conn, "sp_addrolemember", "db_owner", this.infoglueDatabaseUserName);
354         callProcedure(conn, "sp_addrolemember", "db_owner", databaseName);
355         callProcedure(conn, "sp_addrolemember", "db_owner", this.infoglueDatabaseUserName + this.databaseSuffix);
356     }
357         
358
359     private void dropDatabase() throws Exception JavaDoc
360     {
361         Logger.logInfo("Deleting the database....");
362         issueCommand(getConnection(), "DROP DATABASE " + databaseName + ";");
363     }
364
365
366     private void dropUsers() throws Exception JavaDoc
367     {
368         Logger.logInfo("Dropping all users....");
369         
370         //String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mysql";
371
//conn = getConnection(url, this.userName, this.password);
372
}
373     
374     /**
375      * This method issues command to the db.
376      */

377     
378     private void issueCommand(Connection conn, String JavaDoc sql)
379     {
380         if(sql == null || sql.trim().length() == 0)
381             return;
382         
383         try
384         {
385             Statement stmt = conn.createStatement();
386             stmt.execute(sql);
387             stmt.close();
388             //PreparedStatement pstmt = conn.prepareStatement(sql);
389
//pstmt.execute();
390
//pstmt.close();
391
}
392         catch(SQLException ex)
393         {
394             Logger.logInfo("Command failed: " + ex.getMessage());
395             Logger.logInfo("SQL: " + sql);
396             System.err.println("SQLException: " + ex.getMessage());
397         }
398     }
399     
400
401
402
403
404     /**
405      * This method issues command to the db.
406      */

407     
408     private void callProcedure(Connection conn, String JavaDoc procedure, String JavaDoc arg1, String JavaDoc arg2, String JavaDoc arg3)
409     {
410         Logger.logInfo("procedure: " + procedure + " (" + arg1 + "," + arg2 + ")");
411                 
412         try
413         {
414             CallableStatement cs = conn.prepareCall("{call " + procedure + " (?,?,?)}");
415             cs.setString(1, arg1);
416             cs.setString(2, arg2);
417             cs.setString(3, arg3);
418             cs.executeQuery();
419             cs.close();
420             //conn.close();
421
}
422         catch(SQLException ex)
423         {
424             Logger.logInfo("callProcedure failed: " + ex.getMessage());
425             Logger.logInfo("procedure: " + procedure + " (" + arg1 + "," + arg2 + ")");
426             System.err.println("SQLException: " + ex.getMessage());
427         }
428     }
429     
430     
431     /**
432      * This method issues command to the db.
433      */

434     
435     private void callProcedure(Connection conn, String JavaDoc procedure, String JavaDoc arg1, String JavaDoc arg2)
436     {
437         Logger.logInfo("procedure: " + procedure + " (" + arg1 + "," + arg2 + ")");
438                 
439         try
440         {
441             CallableStatement cs = conn.prepareCall("{call " + procedure + " (?,?)}");
442             cs.setString(1, arg1);
443             cs.setString(2, arg2);
444             cs.executeQuery();
445             cs.close();
446             //conn.close();
447
}
448         catch(SQLException ex)
449         {
450             Logger.logInfo("callProcedure failed: " + ex.getMessage());
451             Logger.logInfo("procedure: " + procedure + " (" + arg1 + "," + arg2 + ")");
452             System.err.println("SQLException: " + ex.getMessage());
453         }
454     }
455
456     /**
457      * This method issues command to the db.
458      */

459     
460     private void callProcedure(Connection conn, String JavaDoc SQL)
461     {
462         Logger.logInfo("SQL: " + SQL);
463                 
464         try
465         {
466             CallableStatement cs = conn.prepareCall("{call " + SQL + "}");
467             cs.executeQuery();
468             cs.close();
469             //conn.close();
470
}
471         catch(SQLException ex)
472         {
473             Logger.logInfo("callProcedure failed: " + ex.getMessage());
474             Logger.logInfo("sql: " + SQL);
475             System.err.println("SQLException: " + ex.getMessage());
476         }
477     }
478
479     
480     public void createCastorFile() throws Exception JavaDoc
481     {
482         StringBuffer JavaDoc xmlFile = new StringBuffer JavaDoc();
483         
484         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
485         xmlFile.append("<jdo-conf>\n");
486         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"sql-server\">\n");
487         xmlFile.append("<data-source class-name=\"org.apache.commons.dbcp.BasicDataSource\">\n");
488         xmlFile.append("<param name=\"driver-class-name\" value=\"" + driverClass + "\"/>\n");
489         xmlFile.append("<param name=\"username\" value=\"" + this.infoglueDatabaseUserName + "\"/>\n");
490         xmlFile.append("<param name=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>\n");
491         xmlFile.append("<param name=\"url\" value=\"jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("")) ? ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\"/>\n" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\"/>\n"));
492         xmlFile.append("<param name=\"max-active\" value=\"20\"/>\n");
493         xmlFile.append("<param name=\"connection-properties\" value=\"\"/>\n");
494         xmlFile.append("<param name=\"DatabaseName\" value=\"" + databaseName + "\"/>\n");
495         xmlFile.append("<param name=\"SelectMethod\" value=\"cursor\"/>\n");
496         xmlFile.append("</data-source>\n");
497         xmlFile.append("<mapping HREF=\"classes/mapping.xml\"/>\n");
498         xmlFile.append("</database>\n");
499         xmlFile.append("<transaction-demarcation mode=\"local\" />\n");
500         xmlFile.append("</jdo-conf>\n");
501         
502         /*
503         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
504         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"sql-server\">\n");
505         //xmlFile.append("<driver class-name=\"" + driverClass + "\" url=\"jdbc:microsoft:sqlserver://" + databaseHostName + ":1433\">\n");
506         //xmlFile.append("<driver class-name=\"" + driverClass + "\" url=\"jdbc:jtds:sqlserver://" + databaseHostName + ":1433/" + databaseName + ";SelectMethod=Cursor\">\n");
507         xmlFile.append("<driver class-name=\"" + driverClass + "\" url=\"jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("")) ? ";SelectMethod=Cursor\">\n" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\">\n"));
508         xmlFile.append("<param name=\"user\" value=\"" + this.infoglueDatabaseUserName + "\"/>\n");
509         xmlFile.append("<param name=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>\n");
510         xmlFile.append("<param name=\"DatabaseName\" value=\"" + databaseName + "\"/>\n");
511         xmlFile.append("<param name=\"SelectMethod\" value=\"cursor\"/>\n");
512         xmlFile.append("</driver>\n");
513         xmlFile.append("<mapping HREF=\"classes/mapping.xml\"/>\n");
514         xmlFile.append("</database>\n");
515         */

516         
517         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/database.xml"));
518         pw.println(xmlFile.toString());
519         pw.close();
520     }
521     
522     public void createCastorRootFile() throws Exception JavaDoc
523     {
524         StringBuffer JavaDoc xmlFile = new StringBuffer JavaDoc();
525
526         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
527         xmlFile.append("<jdo-conf>\n");
528         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"sql-server\">\n");
529         xmlFile.append("<data-source class-name=\"org.apache.commons.dbcp.BasicDataSource\">\n");
530         xmlFile.append("<param name=\"driver-class-name\" value=\"" + driverClass + "\"/>\n");
531         xmlFile.append("<param name=\"username\" value=\"" + this.userName + "\"/>\n");
532         xmlFile.append("<param name=\"password\" value=\"" + this.password + "\"/>\n");
533         xmlFile.append("<param name=\"url\" value=\"jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("")) ? ";DatabaseName=" + this.databaseName + ";SelectMethod=Cursor\"/>\n" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\"/>\n"));
534         xmlFile.append("<param name=\"max-active\" value=\"20\"/>\n");
535         xmlFile.append("<param name=\"connection-properties\" value=\"\"/>\n");
536         xmlFile.append("<param name=\"DatabaseName\" value=\"" + databaseName + "\"/>\n");
537         xmlFile.append("<param name=\"SelectMethod\" value=\"cursor\"/>\n");
538         xmlFile.append("</data-source>\n");
539         xmlFile.append("<mapping HREF=\"classes/mapping.xml\"/>\n");
540         xmlFile.append("</database>\n");
541         xmlFile.append("<transaction-demarcation mode=\"local\" />\n");
542         xmlFile.append("</jdo-conf>\n");
543
544         /*
545         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
546         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"sql-server\">\n");
547         //xmlFile.append("<driver class-name=\"" + driverClass + "\" url=\"jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + "/" + databaseName + ";SelectMethod=Cursor\">\n");
548         xmlFile.append("<driver class-name=\"" + driverClass + "\" url=\"jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("")) ? ";SelectMethod=Cursor\">\n" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\">\n"));
549         xmlFile.append("<param name=\"user\" value=\"" + this.userName + "\"/>\n");
550         xmlFile.append("<param name=\"password\" value=\"" + this.password + "\"/>\n");
551         xmlFile.append("<param name=\"DatabaseName\" value=\"" + databaseName + "\"/>\n");
552         xmlFile.append("<param name=\"SelectMethod\" value=\"cursor\"/>\n");
553         xmlFile.append("</driver>\n");
554         xmlFile.append("<mapping HREF=\"classes/mapping.xml\"/>\n");
555         xmlFile.append("</database>\n");
556         */

557         
558         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/database.xml"));
559         pw.println(xmlFile.toString());
560         pw.close();
561     }
562     
563     public void createOSWorkflowFile() throws Exception JavaDoc
564     {
565         StringBuffer JavaDoc xmlFile = new StringBuffer JavaDoc();
566         
567         xmlFile.append("<osworkflow>");
568         xmlFile.append("<persistence class=\"org.infoglue.cms.util.workflow.InfoGlueJDBCWorkflowStore\">");
569         xmlFile.append("<property key=\"username\" value=\"" + this.infoglueDatabaseUserName + "\"/>");
570         xmlFile.append("<property key=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>");
571         xmlFile.append("<property key=\"driverClassName\" value=\"" + driverClass + "\"/>");
572         //xmlFile.append("<property key=\"url\" value=\"jdbc:jtds:sqlserver://" + databaseHostName + ":1433/" + databaseName + ";SelectMethod=Cursor\"/>");
573
xmlFile.append("<property key=\"url\" value=\"jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("")) ? ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\"/>" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\"/>"));
574                         
575         xmlFile.append("<property key=\"entry.sequence\" value=\"select sum(c1) + 1 from (select 1 as tb, count(*) as c1 from os_wfentry union select 2 as tb, count(*) as c1 from os_wfentry) as TabelaFinal\"/>");
576         xmlFile.append("<property key=\"entry.table\" value=\"OS_WFENTRY\"/>");
577         xmlFile.append("<property key=\"entry.id\" value=\"ID\"/>");
578         xmlFile.append("<property key=\"entry.name\" value=\"NAME\"/>");
579         xmlFile.append("<property key=\"entry.state\" value=\"STATE\"/>");
580         xmlFile.append("<property key=\"step.sequence\" value=\"select sum(c1) + 1 from (select 1 as tb, count(*) as c1 from os_currentstep union select 2 as tb, count(*) as c1 from os_historystep) as TabelaFinal\"/>");
581         xmlFile.append("<property key=\"history.table\" value=\"OS_HISTORYSTEP\"/>");
582         xmlFile.append("<property key=\"current.table\" value=\"OS_CURRENTSTEP\"/>");
583         xmlFile.append("<property key=\"historyPrev.table\" value=\"OS_HISTORYSTEP_PREV\"/>");
584         xmlFile.append("<property key=\"currentPrev.table\" value=\"OS_CURRENTSTEP_PREV\"/>");
585         xmlFile.append("<property key=\"step.id\" value=\"ID\"/>");
586         xmlFile.append("<property key=\"step.entryId\" value=\"ENTRY_ID\"/>");
587         xmlFile.append("<property key=\"step.stepId\" value=\"STEP_ID\"/>");
588         xmlFile.append("<property key=\"step.actionId\" value=\"ACTION_ID\"/>");
589         xmlFile.append("<property key=\"step.owner\" value=\"OWNER\"/>");
590         xmlFile.append("<property key=\"step.caller\" value=\"CALLER\"/>");
591         xmlFile.append("<property key=\"step.startDate\" value=\"START_DATE\"/>");
592         xmlFile.append("<property key=\"step.finishDate\" value=\"FINISH_DATE\"/>");
593         xmlFile.append("<property key=\"step.dueDate\" value=\"DUE_DATE\"/>");
594         xmlFile.append("<property key=\"step.status\" value=\"STATUS\"/>");
595         xmlFile.append("<property key=\"step.previousId\" value=\"PREVIOUS_ID\"/>");
596         xmlFile.append("</persistence>");
597         
598         xmlFile.append("<factory class=\"com.opensymphony.workflow.loader.XMLWorkflowFactory\">");
599         xmlFile.append("<property key=\"resource\" value=\"workflows.xml\" />");
600         xmlFile.append("</factory>");
601         
602         xmlFile.append("</osworkflow>");
603         
604         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/osworkflow.xml"));
605         pw.println(xmlFile.toString());
606         pw.close();
607     }
608     
609     public void createOSPropertiesFile() throws Exception JavaDoc
610     {
611         StringBuffer JavaDoc xmlFile = new StringBuffer JavaDoc();
612         
613         xmlFile.append("<propertysets>");
614         xmlFile.append("<propertyset name=\"aggregate\" class=\"com.opensymphony.module.propertyset.aggregate.AggregatePropertySet\"/>");
615         xmlFile.append("<propertyset name=\"cached\" class=\"com.opensymphony.module.propertyset.cached.CachingPropertySet\"/>");
616         xmlFile.append("<propertyset name=\"jdbc\" class=\"org.infoglue.cms.util.workflow.InfoGlueJDBCPropertySet\">");
617         xmlFile.append("<arg name=\"username\" value=\"" + this.infoglueDatabaseUserName + "\"/>");
618         xmlFile.append("<arg name=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>");
619         xmlFile.append("<arg name=\"driverClassName\" value=\"" + driverClass + "\"/>");
620         //xmlFile.append("<arg name=\"url\" value=\"jdbc:jtds:sqlserver://" + databaseHostName + ":1433/" + databaseName + ";SelectMethod=Cursor\"/>");
621
xmlFile.append("<arg name=\"url\" value=\"jdbc:jtds:sqlserver://" + databaseHostName + ":" + databasePortNumber + ((this.getDatabaseInstance().equalsIgnoreCase("")) ? ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\"/>" : ";INSTANCE=" + this.getDatabaseInstance() + ";DatabaseName=" + databaseName + ";SelectMethod=Cursor\"/>"));
622         
623         xmlFile.append("<arg name=\"table.name\" value=\"OS_PROPERTYENTRY\"/>");
624         /*
625         xmlFile.append("<arg name=\"col.globalKey\" value=\"GLOBAL_KEY\"/>");
626         xmlFile.append("<arg name=\"col.itemKey\" value=\"ITEM_KEY\"/>");
627         xmlFile.append("<arg name=\"col.itemType\" value=\"ITEM_TYPE\"/>");
628         xmlFile.append("<arg name=\"col.string\" value=\"STRING_VALUE\"/>");
629         xmlFile.append("<arg name=\"col.date\" value=\"DATE_VALUE\"/>");
630         xmlFile.append("<arg name=\"col.data\" value=\"DATA_VALUE\"/>");
631         xmlFile.append("<arg name=\"col.float\" value=\"FLOAT_VALUE\"/>");
632         xmlFile.append("<arg name=\"col.number\" value=\"NUMBER_VALUE\"/>");
633         */

634         xmlFile.append("<arg name=\"col.globalKey\" value=\"entity_name\"/>");
635         xmlFile.append("<arg name=\"col.entityId\" value=\"entity_id\"/>");
636         xmlFile.append("<arg name=\"col.itemKey\" value=\"entity_key\"/>");
637         xmlFile.append("<arg name=\"col.itemType\" value=\"key_type\"/>");
638         xmlFile.append("<arg name=\"col.booleanVal\" value=\"boolean_val\"/>");
639         xmlFile.append("<arg name=\"col.string\" value=\"string_val\"/>");
640         xmlFile.append("<arg name=\"col.date\" value=\"date_val\"/>");
641         xmlFile.append("<arg name=\"col.data\" value=\"data_val\"/>");
642         xmlFile.append("<arg name=\"col.float\" value=\"double_val\"/>");
643         xmlFile.append("<arg name=\"col.number\" value=\"int_val\"/>");
644
645         xmlFile.append("</propertyset>");
646         xmlFile.append("<propertyset name=\"ejb\" class=\"com.opensymphony.module.propertyset.ejb.EJBPropertySet\"/>");
647         xmlFile.append("<propertyset name=\"javabeans\" class=\"com.opensymphony.module.propertyset.javabeans.BeanIntrospectorPropertySet\"/>");
648         xmlFile.append("<propertyset name=\"map\" class=\"com.opensymphony.module.propertyset.map.MapPropertySet\"/>");
649         xmlFile.append("<propertyset name=\"memory\" class=\"com.opensymphony.module.propertyset.memory.MemoryPropertySet\"/>");
650         xmlFile.append("<propertyset name=\"serializable\" class=\"com.opensymphony.module.propertyset.memory.SerializablePropertySet\"/>");
651         xmlFile.append("<propertyset name=\"ofbiz\" class=\"com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet\"/>");
652         xmlFile.append("<propertyset name=\"hibernate\" class=\"org.infoglue.cms.util.workflow.hibernate.InfoGlueHibernatePropertySet\"/>");
653         xmlFile.append("<propertyset name=\"xml\" class=\"com.opensymphony.module.propertyset.xml.XMLPropertySet\"/>");
654         xmlFile.append("</propertysets>");
655     
656         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/propertyset.xml"));
657         pw.println(xmlFile.toString());
658         pw.close();
659     }
660     
661     public void testSetupDummyDatabase() throws Exception JavaDoc
662     {
663         PreparedStatement pstmt = getConnection().prepareStatement("CREATE DATABASE infoglueDummy;");
664         pstmt.execute();
665         pstmt.close();
666         
667         pstmt = getConnection().prepareStatement("DROP DATABASE infoglueDummy;");
668         pstmt.execute();
669         pstmt.close();
670
671         Connection conn = getConnection();
672         sqlServerVersion = conn.getMetaData().getDatabaseMajorVersion() + "." + conn.getMetaData().getDatabaseMinorVersion();
673         System.out.println("sqlServerVersion:" + sqlServerVersion);
674
675     }
676     
677     
678     public void testConnectDatabase() throws Exception JavaDoc
679     {
680         Connection conn = getConnection(getUrl(this.databaseHostName, this.databasePortNumber, this.databaseName + this.databaseSuffix), this.infoglueDatabaseUserName, this.infoglueDatabasePassword);
681         
682         sqlServerVersion = conn.getMetaData().getDatabaseMajorVersion() + "." + conn.getMetaData().getDatabaseMinorVersion();
683         System.out.println("sqlServerVersion:" + sqlServerVersion);
684     }
685     
686
687     /* (non-Javadoc)
688      * @see org.infoglue.cmsinstaller.DatabaseCommander#issueSpecialBlobCommand(java.sql.Connection, java.lang.String)
689      */

690     protected void issueSpecialBlobCommand(Connection conn, String JavaDoc sql)
691     {
692         // TODO Auto-generated method stub
693

694     }
695     public String JavaDoc getDriver()
696     {
697         return driver;
698     }
699     
700     public String JavaDoc getDatabaseVendor() throws Exception JavaDoc
701     {
702         return "SQL Server";
703     }
704
705
706 }
Popular Tags