From 2c9b5a0f5a7ee06a7617a0a1e7f4491da9ed9e69 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Mon, 18 Jul 2016 14:33:52 +0200 Subject: [PATCH] add: allow restricting sample data with version information Change-Id: I809e51f3c965a971594e9c9babed351a89855bb5 --- .../cacert/gigi/database/SQLFileManager.java | 19 +++++++++++++++++-- .../org/cacert/gigi/util/DatabaseManager.java | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/org/cacert/gigi/database/SQLFileManager.java b/src/org/cacert/gigi/database/SQLFileManager.java index 9f563dbb..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(";"); @@ -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")); diff --git a/util/org/cacert/gigi/util/DatabaseManager.java b/util/org/cacert/gigi/util/DatabaseManager.java index 20df139a..a6626b74 100644 --- a/util/org/cacert/gigi/util/DatabaseManager.java +++ b/util/org/cacert/gigi/util/DatabaseManager.java @@ -55,7 +55,7 @@ public class DatabaseManager { File localData = new File("doc/sampleData.sql"); if (localData.exists()) { try (FileInputStream f = new FileInputStream(localData)) { - SQLFileManager.addFile(stmt, f, ImportType.PRODUCTION); + SQLFileManager.addFile(stmt, f, ImportType.SAMPLE_DATA); } } stmt.executeBatch(); -- 2.39.2