}
public static void purgeDatabase() throws SQLException, IOException {
- System.out.print("... purging Database");
+ System.out.print("... resetting Database");
long ms = System.currentTimeMillis();
try {
DatabaseManager.run(new String[] {
testProps.getProperty("sql.driver"), testProps.getProperty("sql.url"), testProps.getProperty("sql.user"), testProps.getProperty("sql.password")
- });
+ }, true);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
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 {
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", ""));
}
}
}