KickJava   Java API By Example, From Geeks To Geeks.

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


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 import java.util.Date JavaDoc;
29
30 import oracle.sql.BLOB;
31 import oracle.sql.CLOB;
32
33 public class OracleDatabaseCommander extends DatabaseCommander
34 {
35     private final String JavaDoc driver = "oracle.jdbc.driver.OracleDriver";
36     //private Connection conn = null;
37

38     public OracleDatabaseCommander(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
39     {
40         super(driverClass, databaseHostName, databasePortNumber, databaseInstance, url, userName, password, infoglueDatabaseUserName, infoglueDatabasePassword, databaseName, databaseSuffix, hostName, createDatabase, createInitialData, createAntSeekHome, createOfficeStand, createOfficeStand2);
41         //conn = getConnection();
42
}
43     
44     public String JavaDoc getUrl(String JavaDoc hostName, String JavaDoc databasePortNumber, String JavaDoc database)
45     {
46         return "jdbc:oracle:thin:@" + databaseHostName + ":" + databasePortNumber + ":" + databaseName + "";
47     }
48
49     public String JavaDoc getUnicodeUrl(String JavaDoc hostName, String JavaDoc databasePortNumber, String JavaDoc database)
50     {
51         return "jdbc:oracle:thin:@" + databaseHostName + ":" + databasePortNumber + ":" + databaseName + "";
52     }
53
54     public void setupDatabase() throws Exception JavaDoc
55     {
56         //if(this.createDatabase)
57
// createDatabase();
58

59         if(this.createInitialData)
60         {
61             //createUsers();
62
createTables();
63             createInitialData();
64             setupExamples();
65         }
66         
67     }
68     
69     public void deleteDatabase() throws Exception JavaDoc
70     {
71         //dropDatabase();
72
//dropUsers();
73
}
74
75
76     private void createDatabase() throws Exception JavaDoc
77     {
78         Logger.logInfo("Setting up a new database....");
79         issueCommand(getConnection(), "CREATE DATABASE " + databaseName + ";");
80     }
81     
82     private void createTables() throws Exception JavaDoc
83     {
84         String JavaDoc url = "jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "";
85         Connection conn = getConnection(url, this.userName, this.password);
86         
87         Logger.logInfo("Setting up all tables....");
88         
89         try
90         {
91             FileInputStream fis = new FileInputStream("oracle_infoglue_core_schema.sql");
92             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
93             int c;
94             while((c = fis.read()) != -1)
95             {
96                 char character = (char)c;
97                 sb.append(character);
98             }
99             String JavaDoc script = sb.toString();
100             Logger.logInfo("script:" + script);
101             
102             StringTokenizer st = new StringTokenizer(script, ";");
103             while (st.hasMoreTokens())
104             {
105                 String JavaDoc command = st.nextToken();
106                 //Logger.logInfo("Command: " + command);
107
issueCommand(conn, command);
108             }
109                 
110         }
111         catch(Exception JavaDoc e)
112         {
113             System.out.println("Error: " + e);
114             Logger.logInfo("Error: " + e);
115         }
116     }
117
118     private void createInitialData() throws Exception JavaDoc
119     {
120         String JavaDoc url = "jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "";
121         Connection conn = getConnection(url, this.userName, this.password);
122         
123         Logger.logInfo("Setting up initial data....");
124         
125         try
126         {
127             FileInputStream fis = new FileInputStream("oracle_infoglue_initial_data.sql");
128             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
129             int c;
130             while((c = fis.read()) != -1)
131             {
132                 char character = (char)c;
133                 sb.append(character);
134             }
135             String JavaDoc script = sb.toString();
136             //Logger.logInfo("script:" + script);
137

138             String JavaDoc[] commands = script.split("--endquery");
139             Logger.logInfo("Parsed " + commands.length + " commands from script");
140             
141             for(int i=0; i<commands.length; i++)
142             {
143                 String JavaDoc command = commands[i];
144                 if(command.indexOf("SPECIAL") > -1)
145                     issueSpecialCommand(conn, command.trim());
146                 if(command.indexOf("BLOB") > -1)
147                     issueSpecialBlobCommand(conn, command.trim());
148                 else
149                 {
150                     command = command.trim();
151                     if(!command.equalsIgnoreCase(""))
152                     {
153                         command = command.substring(0, command.length()-1);
154                         issueCommand(conn, command);
155                     }
156                 }
157             }
158                 
159         }
160         catch(Exception JavaDoc e)
161         {
162             Logger.logInfo("Error: " + e);
163         }
164     }
165
166     
167     /**
168      * This method issues special blob-inserts command to the db.
169      * I had to build my own adoption of sql to make this feature.
170      */

171
172     protected void issueSpecialBlobCommand(Connection conn, String JavaDoc originalSql)
173     {
174         String JavaDoc sql = originalSql;
175         //Logger.logInfo("SpecialBlob Command:" + sql);
176

177         try
178         {
179             String JavaDoc valuesPart = sql.substring(sql.indexOf("VALUES") + 6).trim();
180             sql = sql.substring(0, sql.indexOf("VALUES") + 6);
181             //System.out.println("sql:" + sql);
182
//System.out.println("valuesPart:" + valuesPart);
183

184             String JavaDoc tableName = null;
185             int blobColumn = 0;
186             List columns = null;
187             List columnValues = null;
188             
189             StringTokenizer st = new StringTokenizer(sql, " ");
190             int i = 0;
191             while (st.hasMoreTokens())
192             {
193                 String JavaDoc part = st.nextToken();
194                 //Logger.logInfo("Part: " + part);
195

196                 if(i == 1)
197                     blobColumn = new Integer JavaDoc(part).intValue();
198                 if(i == 4)
199                     tableName = part;
200                 if(i == 5)
201                 {
202                     columns = parseColumns(part);
203                 }
204                 
205                 i++;
206             }
207             
208             columnValues = parseValues(valuesPart);
209             
210             String JavaDoc columnsString = "";
211             String JavaDoc valuesString = "";
212             Iterator columnsIterator = columns.iterator();
213             while(columnsIterator.hasNext())
214             {
215                 columnsString += (columnsString.equals("")) ? (String JavaDoc)columnsIterator.next() : "," + columnsIterator.next();
216                 valuesString += (valuesString.equals("")) ? "?" : ",?";
217             }
218             
219             sql = "INSERT INTO " + tableName + "(" + columnsString + ") VALUES (" + valuesString + ")";
220             
221             
222             PreparedStatement ps = conn.prepareStatement(sql);
223             
224             int index = 1;
225             int loopCount = 0;
226             Iterator columnValuesIterator = columnsIterator = columns.iterator();
227             while(columnsIterator.hasNext())
228             {
229                 columnsIterator.next();
230                 String JavaDoc value = (String JavaDoc)columnValues.get(loopCount);
231                 
232                 if(index == 1 || value.indexOf("'") == -1)
233                 {
234                     ps.setInt(index, new Integer JavaDoc(value).intValue());
235                 }
236                 else if(index == blobColumn)
237                 {
238                     //Logger.logInfo("value:" + value);
239
value = value.substring(1, value.length() - 1);
240                     //Logger.logInfo("value:" + value);
241

242                     if(value.indexOf("assetBlob:") > -1)
243                     {
244                         String JavaDoc fileName = value.substring(10);
245                         FileInputStream fis = new FileInputStream(fileName);
246                         
247                         BLOB bl = BLOB.createTemporary(conn, true, BLOB.DURATION_CALL);
248                         bl.open(BLOB.MODE_READWRITE);
249
250                         BufferedOutputStream out = new BufferedOutputStream(bl.getBinaryOutputStream());
251         
252                         byte[] buffer = new byte[1024];
253                         int len;
254
255                         while((len = fis.read(buffer)) >= 0)
256                             out.write(buffer, 0, len);
257
258                         out.flush();
259                         fis.close();
260                         out.close();
261
262                         ps.setBlob(index, bl);
263                     }
264                     else
265                     {
266                         CLOB cl = CLOB.createTemporary(conn, true, CLOB.DURATION_CALL);
267                         cl.putString(1,value);
268                         ps.setClob(index, cl);
269                     }
270                 }
271                 else if(value.indexOf("date:") > -1)
272                 {
273                     value = value.substring(6);
274                     Date JavaDoc date = parseDate(value, "yyyy-MM-dd HH:mm:ss");
275                     
276                     ps.setDate(index, new java.sql.Date JavaDoc(date.getTime()));
277                 }
278                 else
279                 {
280                     //Logger.logInfo("value:" + value);
281
value = value.substring(1, value.length() - 1);
282                     //Logger.logInfo("value:" + value);
283
ps.setString(index, value);
284                 }
285                 
286                 index++;
287                 loopCount++;
288             }
289
290             ps.executeUpdate();
291         }
292         catch(Exception JavaDoc ex)
293         {
294             Logger.logInfo("Command failed: " + ex.getMessage());
295             Logger.logInfo("SQL: " + originalSql);
296             ex.printStackTrace();
297             System.err.println("SQLException: " + ex.getMessage());
298         }
299     }
300
301     public void upgradeTo1_3(Connection conn) throws Exception JavaDoc
302     {
303     }
304     
305     public void upgradeTo1_3_2(Connection conn) throws Exception JavaDoc
306     {
307         Logger.logInfo("Upgrading to 1.3.2");
308         
309         try
310         {
311             FileInputStream fis = new FileInputStream("oracle_upgrade1_3_to1_3_2.sql");
312             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
313             int c;
314             while((c = fis.read()) != -1)
315             {
316                 char character = (char)c;
317                 sb.append(character);
318             }
319             String JavaDoc script = sb.toString();
320             Logger.logInfo("script:" + script);
321             
322             StringTokenizer st = new StringTokenizer(script, ";");
323             while (st.hasMoreTokens())
324             {
325                 String JavaDoc command = st.nextToken();
326                 //Logger.logInfo("Command: " + command);
327
issueCommand(conn, command + ";");
328             }
329         }
330         catch(Exception JavaDoc e)
331         {
332             Logger.logInfo("Error: " + e);
333         }
334     }
335
336     public void upgradeTo2_0(Connection conn) throws Exception JavaDoc
337     {
338         Logger.logInfo("Upgrading to 2.0");
339         
340         try
341         {
342             FileInputStream fis = new FileInputStream("oracle_upgrade1_3_2_to2_0.sql");
343             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
344             int c;
345             while((c = fis.read()) != -1)
346             {
347                 char character = (char)c;
348                 sb.append(character);
349             }
350             String JavaDoc script = sb.toString();
351             Logger.logInfo("script:" + script);
352             
353             StringTokenizer st = new StringTokenizer(script, ";");
354             while (st.hasMoreTokens())
355             {
356                 String JavaDoc command = st.nextToken();
357                 //Logger.logInfo("Command: " + command);
358
issueCommand(conn, command + ";");
359             }
360         }
361         catch(Exception JavaDoc e)
362         {
363             Logger.logInfo("Error: " + e);
364         }
365     }
366
367     public void upgradeTo2_1(Connection conn) throws Exception JavaDoc
368     {
369         Logger.logInfo("Upgrading to 2.1");
370         
371         try
372         {
373             FileInputStream fis = new FileInputStream("oracle_upgrade2_0_to2_1.sql");
374             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
375             int c;
376             while((c = fis.read()) != -1)
377             {
378                 char character = (char)c;
379                 sb.append(character);
380             }
381             String JavaDoc script = sb.toString();
382             Logger.logInfo("script:" + script);
383             
384             StringTokenizer st = new StringTokenizer(script, ";");
385             while (st.hasMoreTokens())
386             {
387                 String JavaDoc command = st.nextToken();
388                 //Logger.logInfo("Command: " + command);
389
issueCommand(conn, command + ";");
390             }
391         }
392         catch(Exception JavaDoc e)
393         {
394             Logger.logInfo("Error: " + e);
395         }
396     }
397
398     public void upgradeTo2_3(Connection conn) throws Exception JavaDoc
399     {
400         Logger.logInfo("Upgrading to 2.3");
401         
402         try
403         {
404             FileInputStream fis = new FileInputStream("oracle_upgrade2_1_to2_3.sql");
405             StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
406             int c;
407             while((c = fis.read()) != -1)
408             {
409                 char character = (char)c;
410                 sb.append(character);
411             }
412             String JavaDoc script = sb.toString();
413             Logger.logInfo("script:" + script);
414             
415             StringTokenizer st = new StringTokenizer(script, ";");
416             while (st.hasMoreTokens())
417             {
418                 String JavaDoc command = st.nextToken();
419                 //Logger.logInfo("Command: " + command);
420
issueCommand(conn, command + ";");
421             }
422         }
423         catch(Exception JavaDoc e)
424         {
425             Logger.logInfo("Error: " + e);
426         }
427     }
428
429     private void createUsers() throws Exception JavaDoc
430     {
431         Logger.logInfo("Setting up all users....");
432         
433         String JavaDoc url = "jdbc:oracle:thin:@" + databaseHostName + "";
434         Connection conn = getConnection(url, this.userName, this.password);
435         /*
436         issueCommand(conn, "GRANT ALL PRIVILEGES ON *.* TO '" + this.infoglueDatabaseUserName + "'@'%' IDENTIFIED BY '" + this.infoglueDatabasePassword + "';");
437         issueCommand(conn, "GRANT ALL PRIVILEGES ON *.* TO '" + this.infoglueDatabaseUserName + "'@'localhost' IDENTIFIED BY '" + this.infoglueDatabasePassword + "';");
438         issueCommand(conn, "GRANT ALL PRIVILEGES ON *.* TO '" + this.infoglueDatabaseUserName + "'@'127.0.0.1' IDENTIFIED BY '" + this.infoglueDatabasePassword + "';");
439         issueCommand(conn, "GRANT ALL PRIVILEGES ON *.* TO '" + this.infoglueDatabaseUserName + "'@'" + this.databaseHostName + "' IDENTIFIED BY '" + this.infoglueDatabasePassword + "';");
440         issueCommand(conn, "GRANT ALL PRIVILEGES ON *.* TO '" + this.infoglueDatabaseUserName + "'@'" + this.hostName + "' IDENTIFIED BY '" + this.infoglueDatabasePassword + "';");
441         issueCommand(conn, "GRANT ALL PRIVILEGES ON *.* TO '" + this.infoglueDatabaseUserName + "'@'" + getHostAddress() + "' IDENTIFIED BY '" + this.infoglueDatabasePassword + "';");
442         */

443     }
444         
445
446     private void dropDatabase() throws Exception JavaDoc
447     {
448         Logger.logInfo("Deleting the database....");
449         issueCommand(getConnection(), "DROP DATABASE " + databaseName + ";");
450     }
451
452
453     private void dropUsers() throws Exception JavaDoc
454     {
455         Logger.logInfo("Dropping all users....");
456         
457         String JavaDoc url = "jdbc:mysql://" + databaseHostName + "/mysql";
458         Connection conn = getConnection(url, this.userName, this.password);
459         
460         issueCommand(conn, "DELETE FROM mysql.columns_priv WHERE User = '" + this.databaseSuffix + "'");
461         issueCommand(conn, "DELETE FROM mysql.tables_priv WHERE User = '" + this.databaseSuffix + "'");
462         issueCommand(conn, "DELETE FROM mysql.db WHERE User = '" + this.infoglueDatabaseUserName + "'");
463         issueCommand(conn, "DELETE FROM mysql.user WHERE User = '" + this.infoglueDatabaseUserName + "'");
464     }
465     
466     /**
467      * This method issues command to the db.
468      */

469     
470     private void issueCommand(Connection conn, String JavaDoc sql)
471     {
472         if(sql == null || sql.trim().length() == 0)
473             return;
474                           
475         try
476         {
477             //sql = sql.substring(0, sql.length() - 1);
478
System.out.println("issueCommand: " + sql);
479             
480             PreparedStatement pstmt = conn.prepareStatement(sql);
481             pstmt.execute();
482             pstmt.close();
483             //conn.close();
484

485             //Statement statement = conn.createStatement();
486
//statement.executeUpdate(sql);
487
//statement.close();
488
}
489         catch(SQLException ex)
490         {
491             Logger.logInfo("Command failed: " + ex.getMessage());
492             Logger.logInfo("SQL: " + sql);
493             System.err.println("SQLException: " + ex.getMessage());
494         }
495     }
496     
497     
498     public void createCastorFile() throws Exception JavaDoc
499     {
500         StringBuffer JavaDoc xmlFile = new StringBuffer JavaDoc();
501         
502         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
503         xmlFile.append("<jdo-conf>\n");
504         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"oracle\">\n");
505         xmlFile.append("<data-source class-name=\"org.apache.commons.dbcp.BasicDataSource\">\n");
506         xmlFile.append("<param name=\"driver-class-name\" value=\"oracle.jdbc.driver.OracleDriver\"/>\n");
507         xmlFile.append("<param name=\"username\" value=\"" + this.infoglueDatabaseUserName + "\"/>\n");
508         xmlFile.append("<param name=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>\n");
509         xmlFile.append("<param name=\"url\" value=\"jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "\"/>\n");
510         xmlFile.append("<param name=\"max-active\" value=\"20\"/>\n");
511         xmlFile.append("<param name=\"connection-properties\" value=\"SetBigStringTryClob=true\"/>\n");
512         xmlFile.append("</data-source>\n");
513         xmlFile.append("<mapping HREF=\"classes/oracle_mapping.xml\"/>\n");
514         xmlFile.append("</database>\n");
515         xmlFile.append("<transaction-demarcation mode=\"local\" />\n");
516         xmlFile.append("</jdo-conf>\n");
517     
518         /*
519         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
520         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"oracle\">\n");
521         xmlFile.append("<driver class-name=\"oracle.jdbc.pool.OracleConnectionCacheImpl\" url=\"jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "\">\n");
522         xmlFile.append("<param name=\"user\" value=\"" + this.infoglueDatabaseUserName + "\"/>\n");
523         xmlFile.append("<param name=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>\n");
524         xmlFile.append("<param name=\"minLimit\" value=\"5\" />");
525         xmlFile.append("<param name=\"maxLimit\" value=\"30\" />");
526         xmlFile.append("<param name=\"cacheScheme\" value=\"OracleConnectionCacheImpl.DYNAMIC_SCHEME\" />");
527         xmlFile.append("<param name=\"statementCacheSize\" value=\"20\" />");
528         xmlFile.append("</driver>\n");
529         xmlFile.append("<mapping HREF=\"classes/oracle_mapping.xml\"/>\n");
530         xmlFile.append("</database>\n");
531         */

532         
533         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/database.xml"));
534         pw.println(xmlFile.toString());
535         pw.close();
536     }
537     
538     public void createCastorRootFile() throws Exception JavaDoc
539     {
540         StringBuffer JavaDoc xmlFile = new StringBuffer JavaDoc();
541
542         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
543         xmlFile.append("<jdo-conf>\n");
544         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"oracle\">\n");
545         xmlFile.append("<data-source class-name=\"org.apache.commons.dbcp.BasicDataSource\">\n");
546         xmlFile.append("<param name=\"driver-class-name\" value=\"oracle.jdbc.driver.OracleDriver\"/>\n");
547         xmlFile.append("<param name=\"username\" value=\"" + this.userName + "\"/>\n");
548         xmlFile.append("<param name=\"password\" value=\"" + this.password + "\"/>\n");
549         xmlFile.append("<param name=\"url\" value=\"jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "\"/>\n");
550         xmlFile.append("<param name=\"max-active\" value=\"20\"/>\n");
551         xmlFile.append("<param name=\"connection-properties\" value=\"\"/>\n");
552         xmlFile.append("</data-source>\n");
553         xmlFile.append("<mapping HREF=\"classes/oracle_mapping.xml\"/>\n");
554         xmlFile.append("</database>\n");
555         xmlFile.append("<transaction-demarcation mode=\"local\" />\n");
556         xmlFile.append("</jdo-conf>\n");
557
558         /*
559         xmlFile.append("<!DOCTYPE database PUBLIC \"-//EXOLAB/Castor JDO Configuration DTD Version 1.0//EN\" \"http://castor.codehaus.org/jdo-conf.dtd\">\n");
560         xmlFile.append("<database name=\"INFOGLUE_CMS\" engine=\"oracle\">\n");
561         xmlFile.append("<driver class-name=\"oracle.jdbc.pool.OracleConnectionCacheImpl\" url=\"jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "\">\n");
562         xmlFile.append("<param name=\"user\" value=\"" + this.userName + "\"/>\n");
563         xmlFile.append("<param name=\"password\" value=\"" + this.password + "\"/>\n");
564         xmlFile.append("<param name=\"minLimit\" value=\"5\" />");
565         xmlFile.append("<param name=\"maxLimit\" value=\"30\" />");
566         xmlFile.append("<param name=\"cacheScheme\" value=\"OracleConnectionCacheImpl.DYNAMIC_SCHEME\" />");
567         xmlFile.append("<param name=\"statementCacheSize\" value=\"20\" />");
568         xmlFile.append("</driver>\n");
569         xmlFile.append("<mapping HREF=\"classes/oracle_mapping.xml\"/>\n");
570         xmlFile.append("</database>\n");
571         */

572         
573         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/database.xml"));
574         pw.println(xmlFile.toString());
575         pw.close();
576     }
577     
578     /*
579     public void createOSWorkflowFile() throws Exception
580     {
581         StringBuffer xmlFile = new StringBuffer();
582         
583         xmlFile.append("<osworkflow>");
584         xmlFile.append("<persistence class=\"org.infoglue.cms.util.workflow.InfoGlueJDBCWorkflowStore\">");
585         xmlFile.append("<property key=\"username\" value=\"" + this.infoglueDatabaseUserName + "\"/>");
586         xmlFile.append("<property key=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>");
587         xmlFile.append("<property key=\"driverClassName\" value=\"oracle.jdbc.pool.OracleConnectionCacheImpl\"/>");
588         xmlFile.append("<property key=\"url\" value=\"jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "\"/>");
589                         
590         xmlFile.append("<property key=\"entry.sequence\" value=\"SELECT seq_os_wfentry.nextVal FROM DUAL\"/>");
591         xmlFile.append("<property key=\"entry.table\" value=\"OS_WFENTRY\"/>");
592         xmlFile.append("<property key=\"entry.id\" value=\"ID\"/>");
593         xmlFile.append("<property key=\"entry.name\" value=\"NAME\"/>");
594         xmlFile.append("<property key=\"entry.state\" value=\"STATE\"/>");
595         xmlFile.append("<property key=\"step.sequence\" value=\"SELECT seq_os_currentsteps.nextVal FROM DUAL\"/>");
596         xmlFile.append("<property key=\"history.table\" value=\"OS_HISTORYSTEP\"/>");
597         xmlFile.append("<property key=\"current.table\" value=\"OS_CURRENTSTEP\"/>");
598         xmlFile.append("<property key=\"historyPrev.table\" value=\"OS_HISTORYSTEP_PREV\"/>");
599         xmlFile.append("<property key=\"currentPrev.table\" value=\"OS_CURRENTSTEP_PREV\"/>");
600         xmlFile.append("<property key=\"step.id\" value=\"ID\"/>");
601         xmlFile.append("<property key=\"step.entryId\" value=\"ENTRY_ID\"/>");
602         xmlFile.append("<property key=\"step.stepId\" value=\"STEP_ID\"/>");
603         xmlFile.append("<property key=\"step.actionId\" value=\"ACTION_ID\"/>");
604         xmlFile.append("<property key=\"step.owner\" value=\"OWNER\"/>");
605         xmlFile.append("<property key=\"step.caller\" value=\"CALLER\"/>");
606         xmlFile.append("<property key=\"step.startDate\" value=\"START_DATE\"/>");
607         xmlFile.append("<property key=\"step.finishDate\" value=\"FINISH_DATE\"/>");
608         xmlFile.append("<property key=\"step.dueDate\" value=\"DUE_DATE\"/>");
609         xmlFile.append("<property key=\"step.status\" value=\"STATUS\"/>");
610         xmlFile.append("<property key=\"step.previousId\" value=\"PREVIOUS_ID\"/>");
611         xmlFile.append("</persistence>");
612         
613         xmlFile.append("<factory class=\"com.opensymphony.workflow.loader.XMLWorkflowFactory\">");
614         xmlFile.append("<property key=\"resource\" value=\"workflows.xml\" />");
615         xmlFile.append("</factory>");
616         
617         xmlFile.append("</osworkflow>");
618         
619         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/osworkflow.xml"));
620         pw.println(xmlFile.toString());
621         pw.close();
622     }
623     */

624     
625     public void createOSPropertiesFile() throws Exception JavaDoc
626     {
627         StringBuffer JavaDoc xmlFile = new StringBuffer JavaDoc();
628         
629         xmlFile.append("<propertysets>");
630         xmlFile.append("<propertyset name=\"aggregate\" class=\"com.opensymphony.module.propertyset.aggregate.AggregatePropertySet\"/>");
631         xmlFile.append("<propertyset name=\"cached\" class=\"com.opensymphony.module.propertyset.cached.CachingPropertySet\"/>");
632         xmlFile.append("<propertyset name=\"jdbc\" class=\"org.infoglue.cms.util.workflow.InfoGlueJDBCPropertySet\">");
633         xmlFile.append("<arg name=\"username\" value=\"" + this.infoglueDatabaseUserName + "\"/>");
634         xmlFile.append("<arg name=\"password\" value=\"" + this.infoglueDatabasePassword + "\"/>");
635         xmlFile.append("<arg name=\"driverClassName\" value=\"oracle.jdbc.driver.OracleDriver\"/>");
636         xmlFile.append("<arg name=\"url\" value=\"jdbc:oracle:thin:@" + databaseHostName + ":" + this.databasePortNumber + ":" + databaseName + "\"/>");
637
638         xmlFile.append("<arg name=\"table.name\" value=\"OS_PROPERTYENTRY\"/>");
639         /*
640         xmlFile.append("<arg name=\"col.globalKey\" value=\"GLOBAL_KEY\"/>");
641         xmlFile.append("<arg name=\"col.itemKey\" value=\"ITEM_KEY\"/>");
642         xmlFile.append("<arg name=\"col.itemType\" value=\"ITEM_TYPE\"/>");
643         xmlFile.append("<arg name=\"col.string\" value=\"STRING_VALUE\"/>");
644         xmlFile.append("<arg name=\"col.date\" value=\"DATE_VALUE\"/>");
645         xmlFile.append("<arg name=\"col.data\" value=\"DATA_VALUE\"/>");
646         xmlFile.append("<arg name=\"col.float\" value=\"FLOAT_VALUE\"/>");
647         xmlFile.append("<arg name=\"col.number\" value=\"NUMBER_VALUE\"/>");
648         */

649         xmlFile.append("<arg name=\"col.globalKey\" value=\"entity_name\"/>");
650         xmlFile.append("<arg name=\"col.entityId\" value=\"entity_id\"/>");
651         xmlFile.append("<arg name=\"col.itemKey\" value=\"entity_key\"/>");
652         xmlFile.append("<arg name=\"col.itemType\" value=\"key_type\"/>");
653         xmlFile.append("<arg name=\"col.booleanVal\" value=\"boolean_val\"/>");
654         xmlFile.append("<arg name=\"col.string\" value=\"string_val\"/>");
655         xmlFile.append("<arg name=\"col.date\" value=\"date_val\"/>");
656         xmlFile.append("<arg name=\"col.data\" value=\"data_val\"/>");
657         xmlFile.append("<arg name=\"col.float\" value=\"double_val\"/>");
658         xmlFile.append("<arg name=\"col.number\" value=\"int_val\"/>");
659
660         xmlFile.append("</propertyset>");
661         xmlFile.append("<propertyset name=\"ejb\" class=\"com.opensymphony.module.propertyset.ejb.EJBPropertySet\"/>");
662         xmlFile.append("<propertyset name=\"javabeans\" class=\"com.opensymphony.module.propertyset.javabeans.BeanIntrospectorPropertySet\"/>");
663         xmlFile.append("<propertyset name=\"map\" class=\"com.opensymphony.module.propertyset.map.MapPropertySet\"/>");
664         xmlFile.append("<propertyset name=\"memory\" class=\"com.opensymphony.module.propertyset.memory.MemoryPropertySet\"/>");
665         xmlFile.append("<propertyset name=\"serializable\" class=\"com.opensymphony.module.propertyset.memory.SerializablePropertySet\"/>");
666         xmlFile.append("<propertyset name=\"ofbiz\" class=\"com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet\"/>");
667         xmlFile.append("<propertyset name=\"hibernate\" class=\"org.infoglue.cms.util.workflow.hibernate.InfoGlueHibernatePropertySet\"/>");
668         xmlFile.append("<propertyset name=\"xml\" class=\"com.opensymphony.module.propertyset.xml.XMLPropertySet\"/>");
669         xmlFile.append("</propertysets>");
670     
671         PrintWriter pw = new PrintWriter(new FileWriter("localConfigs/propertyset.xml"));
672         pw.println(xmlFile.toString());
673         pw.close();
674     }
675     
676     public void testSetupDummyDatabase() throws Exception JavaDoc
677     {
678         PreparedStatement pstmt = getConnection().prepareStatement("CREATE TABLE SYSTEM.DUMMYTABLE(\"ID\" NUMBER(10) NOT NULL)");
679         pstmt.execute();
680         pstmt.close();
681         
682         pstmt = getConnection().prepareStatement("DROP TABLE SYSTEM.DUMMYTABLE");
683         pstmt.execute();
684         pstmt.close();
685     }
686     
687     
688     public void testConnectDatabase() throws Exception JavaDoc
689     {
690         System.out.println(this.infoglueDatabaseUserName + ":" + this.infoglueDatabasePassword);
691         getConnection(getUrl(this.databaseHostName, this.databasePortNumber, this.databaseName + this.databaseSuffix), this.infoglueDatabaseUserName, this.infoglueDatabasePassword);
692         //getConnection(getUrl(this.databaseHostName, this.databaseName + this.databaseSuffix), "infoglue" + this.databaseSuffix, this.infoglueDatabasePassword);
693
}
694     
695     public String JavaDoc getDriver()
696     {
697         return driver;
698     }
699
700     public String JavaDoc getDatabaseVendor() throws Exception JavaDoc
701     {
702         return "Oracle";
703     }
704
705 }
Popular Tags