diff -r 74139325d305 -r 62851e21b71c src/org/sonews/util/DatabaseSetup.java
--- a/src/org/sonews/util/DatabaseSetup.java Sun Aug 29 18:17:37 2010 +0200
+++ b/src/org/sonews/util/DatabaseSetup.java Tue Sep 13 18:37:08 2011 +0200
@@ -15,13 +15,13 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-
package org.sonews.util;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
+import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
@@ -32,8 +32,7 @@
* @author Christian Lins
* @since sonews/0.5.0
*/
-public final class DatabaseSetup
-{
+public final class DatabaseSetup {
private static final Map templateMap = new HashMap();
private static final Map urlMap = new HashMap();
@@ -42,58 +41,79 @@
static {
templateMap.put("1", "helpers/database_mysql5_tmpl.sql");
templateMap.put("2", "helpers/database_postgresql8_tmpl.sql");
+ templateMap.put("3", "helpers/database_hsqldb_tmpl.sql");
urlMap.put("1", new StringTemplate("jdbc:mysql://%HOSTNAME/%DB"));
urlMap.put("2", new StringTemplate("jdbc:postgresql://%HOSTNAME/%DB"));
driverMap.put("1", "com.mysql.jdbc.Driver");
driverMap.put("2", "org.postgresql.Driver");
+ driverMap.put("3", "org.hsqldb.jdbcDriver");
}
public static void main(String[] args)
- throws Exception
- {
- System.out.println("sonews Database setup helper");
- System.out.println("This program will create a initial database table structure");
- System.out.println("for the sonews Newsserver.");
- System.out.println("You need to create a database and a db user manually before!");
+ throws Exception {
+
+ loadJDBCDriver();
- System.out.println("Select DBMS type:");
- System.out.println("[1] MySQL 5.x or higher");
- System.out.println("[2] PostgreSQL 8.x or higher");
- System.out.print("Your choice: ");
+ if (args.length == 0) {
+ System.out.println("sonews Database setup helper");
+ System.out.println("This program will create a initial database table structure");
+ System.out.println("for the sonews Newsserver.");
+ System.out.println("You need to create a database and a db user manually before!");
- BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
- String dbmsType = in.readLine();
- String tmplName = templateMap.get(dbmsType);
- if (tmplName == null) {
- System.err.println("Invalid choice. Try again you fool!");
- main(args);
- return;
+ System.out.println("Select DBMS type:");
+ System.out.println("[1] MySQL 5.x or higher");
+ System.out.println("[2] PostgreSQL 8.x or higher");
+ System.out.print("Your choice: ");
+
+ BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
+ String dbmsType = in.readLine();
+ String tmplName = templateMap.get(dbmsType);
+ if (tmplName == null) {
+ System.err.println("Invalid choice. Try again you fool!");
+ main(args);
+ return;
+ }
+
+ String tmpl = Resource.getAsString(tmplName, true);
+
+ System.out.print("Database server hostname (e.g. localhost): ");
+ String dbHostname = in.readLine();
+
+ System.out.print("Database name: ");
+ String dbName = in.readLine();
+
+ System.out.print("Give name of DB user that can create tables: ");
+ String dbUser = in.readLine();
+
+ System.out.print("Password: ");
+ String dbPassword = in.readLine();
+
+ String url = urlMap.get(dbmsType).set("HOSTNAME", dbHostname).set("DB", dbName).toString();
+ createTables(tmpl, url, dbUser, dbPassword);
+
+ // TODO: Create config file
+
+ } else if(args.length == 4) {
+ String tmplName = args[0];
+ String url = args[1];
+ String dbUser = args[2];
+ String dbPassword = args[3];
+
+ String tmpl = Resource.getAsString(tmplName, true);
+ createTables(tmpl, url, dbUser, dbPassword);
+ } else {
+ System.out.println("Wrong number of parameters!");
}
- // Load JDBC Driver class
- Class.forName(driverMap.get(dbmsType));
+ System.out.println("Ok");
+ }
- String tmpl = Resource.getAsString(tmplName, true);
-
- System.out.print("Database server hostname (e.g. localhost): ");
- String dbHostname = in.readLine();
-
- System.out.print("Database name: ");
- String dbName = in.readLine();
-
- System.out.print("Give name of DB user that can create tables: ");
- String dbUser = in.readLine();
-
- System.out.print("Password: ");
- String dbPassword = in.readLine();
-
- String url = urlMap.get(dbmsType).set("HOSTNAME", dbHostname).set("DB", dbName).toString();
-
+ public static void createTables(String tmpl, String url, String dbUser, String dbPassword)
+ throws SQLException {
Connection conn =
- DriverManager.getConnection(url, dbUser, dbPassword);
- conn.setAutoCommit(false);
+ DriverManager.getConnection(url, dbUser, dbPassword);
String[] tmplChunks = tmpl.split(";");
@@ -107,10 +127,16 @@
}
conn.commit();
- conn.setAutoCommit(true);
+ conn.close();
+ }
- // Create config file
-
- System.out.println("Ok");
+ public static void loadJDBCDriver() {
+ for(String className : driverMap.values()) {
+ try {
+ Class.forName(className);
+ } catch (ClassNotFoundException ex) {
+ System.out.println("Could not load JDBC driver: " + className);
+ }
+ }
}
}