X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=util%2Forg%2Fcacert%2Fgigi%2Futil%2FDatabaseManager.java;h=84c012c3586a55d564e43d747dd7a61528ce6c26;hp=9fe3f5fb3ec774416152fe2a5433193b667350a6;hb=9474df27407dd99134876f2c8a2a3b6e7d1fae6a;hpb=943d8e7ed0ea5a9d56e7e694a3cbd849c52bad16 diff --git a/util/org/cacert/gigi/util/DatabaseManager.java b/util/org/cacert/gigi/util/DatabaseManager.java index 9fe3f5fb..84c012c3 100644 --- a/util/org/cacert/gigi/util/DatabaseManager.java +++ b/util/org/cacert/gigi/util/DatabaseManager.java @@ -1,25 +1,36 @@ package org.cacert.gigi.util; import java.io.File; -import java.io.FileReader; +import java.io.FileInputStream; import java.io.IOException; -import java.nio.file.Files; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; -public class DatabaseManager { +import org.cacert.gigi.database.DatabaseConnection; +import org.cacert.gigi.database.SQLFileManager; +import org.cacert.gigi.database.SQLFileManager.ImportType; - public static String readFile(File f) throws IOException { - return new String(Files.readAllBytes(f.toPath())); - } +public class DatabaseManager { public static void main(String[] args) throws SQLException, ClassNotFoundException, IOException { + boolean test = false; + if (args.length >= 1 && args[0].equals("--test")) { + test = true; + String[] ne = new String[args.length - 1]; + System.arraycopy(args, 1, ne, 0, ne.length); + args = ne; + } if (args.length == 0) { Properties p = new Properties(); - p.load(new FileReader("config/gigi.properties")); + try (Reader reader = new InputStreamReader(new FileInputStream("config/gigi.properties"), "UTF-8")) { + p.load(reader); + } args = new String[] { p.getProperty("sql.driver"), p.getProperty("sql.url"), p.getProperty("sql.user"), p.getProperty("sql.password") }; @@ -28,29 +39,28 @@ public class DatabaseManager { System.err.println("Usage: com.mysql.jdbc.Driver jdbc:mysql://localhost/cacert user password"); return; } - run(args); + run(args, test ? ImportType.TEST : ImportType.PRODUCTION); } - public static void run(String[] args) throws ClassNotFoundException, SQLException, IOException { + public static void run(String[] args, ImportType truncate) throws ClassNotFoundException, SQLException, IOException { Class.forName(args[0]); Connection conn = DriverManager.getConnection(args[1], args[2], args[3]); + conn.setAutoCommit(false); Statement stmt = conn.createStatement(); - addFile(stmt, new File("doc/tableStructure.sql")); + try (InputStream structure = DatabaseConnection.class.getResourceAsStream("tableStructure.sql")) { + SQLFileManager.addFile(stmt, structure, truncate); + } File localData = new File("doc/sampleData.sql"); if (localData.exists()) { - addFile(stmt, localData); + try (FileInputStream f = new FileInputStream(localData)) { + SQLFileManager.addFile(stmt, f, ImportType.PRODUCTION); + } } stmt.executeBatch(); + conn.commit(); stmt.close(); - } - private static void addFile(Statement stmt, File f) throws IOException, SQLException { - String sql = readFile(f); - String[] stmts = sql.split(";"); - for (String string : stmts) { - if ( !string.trim().equals("")) { - stmt.addBatch(string); - } - } + conn.close(); } + }