]> WPIA git - gigi.git/blob - util/org/cacert/gigi/util/DatabaseManager.java
ADD: scheme versioning, last time "Please execute database manager" ;-)
[gigi.git] / util / org / cacert / gigi / util / DatabaseManager.java
1 package org.cacert.gigi.util;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileReader;
6 import java.io.IOException;
7 import java.sql.Connection;
8 import java.sql.DriverManager;
9 import java.sql.SQLException;
10 import java.sql.Statement;
11 import java.util.Properties;
12
13 import org.cacert.gigi.database.DatabaseConnection;
14 import org.cacert.gigi.database.SQLFileManager;
15 import org.cacert.gigi.database.SQLFileManager.ImportType;
16
17 public class DatabaseManager {
18
19     public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException {
20         boolean test = false;
21         if (args.length >= 1 && args[0].equals("--test")) {
22             test = true;
23             String[] ne = new String[args.length - 1];
24             System.arraycopy(args, 1, ne, 0, ne.length);
25             args = ne;
26         }
27         if (args.length == 0) {
28             Properties p = new Properties();
29             p.load(new FileReader("config/gigi.properties"));
30             args = new String[] {
31                     p.getProperty("sql.driver"), p.getProperty("sql.url"), p.getProperty("sql.user"), p.getProperty("sql.password")
32             };
33         }
34         if (args.length < 4) {
35             System.err.println("Usage: com.mysql.jdbc.Driver jdbc:mysql://localhost/cacert user password");
36             return;
37         }
38         run(args, test ? ImportType.TEST : ImportType.PRODUCTION);
39     }
40
41     public static void run(String[] args, ImportType truncate) throws ClassNotFoundException, SQLException, IOException {
42         Class.forName(args[0]);
43         Connection conn = DriverManager.getConnection(args[1], args[2], args[3]);
44         conn.setAutoCommit(false);
45         Statement stmt = conn.createStatement();
46         SQLFileManager.addFile(stmt, DatabaseConnection.class.getResourceAsStream("tableStructure.sql"), truncate);
47         File localData = new File("doc/sampleData.sql");
48         if (localData.exists()) {
49             SQLFileManager.addFile(stmt, new FileInputStream(localData), ImportType.PRODUCTION);
50         }
51         stmt.executeBatch();
52         conn.commit();
53         stmt.close();
54     }
55
56 }