X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=util%2Forg%2Fcacert%2Fgigi%2Futil%2FDatabaseManager.java;h=457e11ff27b0c42a3a92e89f42422eba917aedef;hp=9fe3f5fb3ec774416152fe2a5433193b667350a6;hb=e65588dc9fc539683882a4b52bacb93cfe551d5d;hpb=7f7a599fb3855b7056f0a79bfb73c393f8b21c12 diff --git a/util/org/cacert/gigi/util/DatabaseManager.java b/util/org/cacert/gigi/util/DatabaseManager.java index 9fe3f5fb..457e11ff 100644 --- a/util/org/cacert/gigi/util/DatabaseManager.java +++ b/util/org/cacert/gigi/util/DatabaseManager.java @@ -9,6 +9,8 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class DatabaseManager { @@ -28,28 +30,34 @@ public class DatabaseManager { System.err.println("Usage: com.mysql.jdbc.Driver jdbc:mysql://localhost/cacert user password"); return; } - run(args); + run(args, false); } - public static void run(String[] args) throws ClassNotFoundException, SQLException, IOException { + public static void run(String[] args, boolean truncate) throws ClassNotFoundException, SQLException, IOException { Class.forName(args[0]); Connection conn = DriverManager.getConnection(args[1], args[2], args[3]); Statement stmt = conn.createStatement(); - addFile(stmt, new File("doc/tableStructure.sql")); + addFile(stmt, new File("doc/tableStructure.sql"), truncate); File localData = new File("doc/sampleData.sql"); if (localData.exists()) { - addFile(stmt, localData); + addFile(stmt, localData, false); } stmt.executeBatch(); stmt.close(); } - private static void addFile(Statement stmt, File f) throws IOException, SQLException { + private static void addFile(Statement stmt, File f, boolean truncate) throws IOException, SQLException { String sql = readFile(f); String[] stmts = sql.split(";"); + Pattern p = Pattern.compile("\\s*DROP TABLE IF EXISTS `([^`]+)`"); for (String string : stmts) { - if ( !string.trim().equals("")) { - stmt.addBatch(string); + Matcher m = p.matcher(string); + if (m.matches()) { + String sql2 = "TRUNCATE `" + m.group(1) + "`"; + stmt.addBatch(sql2); + } + if ( !string.trim().equals("") && ( !truncate || string.contains("INSERT"))) { + stmt.addBatch(string.replace("ENGINE=Memory", "")); } } }