X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fcacert%2Fgigi%2Fdatabase%2FSQLFileManager.java;h=61732182015ddcd007b4b3892750415ab949e8e1;hb=a1618d15f672d5ced82d6f4f6f06d2f58412fd1f;hp=400884af484d15f3d04310b883ae996d693b3a36;hpb=03d27b5bdaea6253e674cdf2779465873b657900;p=gigi.git diff --git a/src/org/cacert/gigi/database/SQLFileManager.java b/src/org/cacert/gigi/database/SQLFileManager.java index 400884af..61732182 100644 --- a/src/org/cacert/gigi/database/SQLFileManager.java +++ b/src/org/cacert/gigi/database/SQLFileManager.java @@ -22,11 +22,26 @@ public class SQLFileManager { /** * Execute INSERT statements as-is, and TRUNCATE instead of DROPPING */ - TRUNCATE + TRUNCATE, + /** + * Execute Script as-is if db version is >= specified version in + * optional header + */ + SAMPLE_DATA, } public static void addFile(Statement stmt, InputStream f, ImportType type) throws IOException, SQLException { String sql = readFile(f); + if (type == ImportType.SAMPLE_DATA) { + String fl = sql.split("\n")[0]; + if (fl.matches("--Version: ([0-9]+)")) { + int v0 = Integer.parseInt(fl.substring(11)); + if (DatabaseConnection.CURRENT_SCHEMA_VERSION < v0) { + System.out.println("skipping sample data (data has version " + v0 + ", db has version " + DatabaseConnection.CURRENT_SCHEMA_VERSION + ")"); + return; + } + } + } sql = sql.replaceAll("--[^\n]*\n", "\n"); sql = sql.replaceAll("#[^\n]*\n", "\n"); String[] stmts = sql.split(";"); @@ -37,7 +52,7 @@ public class SQLFileManager { if (string.equals("")) { continue; } - if ((string.contains("profiles") || string.contains("cacerts")) && type != ImportType.PRODUCTION) { + if ((string.contains("profiles") || string.contains("cacerts") || string.contains("cats_type") || string.contains("countryIsoCode")) && type == ImportType.TRUNCATE) { continue; } string = DatabaseConnection.preprocessQuery(string); @@ -46,7 +61,7 @@ public class SQLFileManager { stmt.addBatch(sql2); continue; } - if (type == ImportType.PRODUCTION || string.startsWith("INSERT")) { + if (type == ImportType.PRODUCTION || type == ImportType.SAMPLE_DATA || string.startsWith("INSERT")) { stmt.addBatch(string); } else if (type == ImportType.TEST) { stmt.addBatch(string.replace("ENGINE=InnoDB", "ENGINE=Memory"));