X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fdatabase%2FSQLFileManager.java;fp=src%2Forg%2Fcacert%2Fgigi%2Fdatabase%2FSQLFileManager.java;h=0000000000000000000000000000000000000000;hp=61732182015ddcd007b4b3892750415ab949e8e1;hb=bccd4cc0dba0f89aa045b113bac46eb8cc1dab4e;hpb=c9ed09f0007fc2c813815be927a5a24b23dab83c diff --git a/src/org/cacert/gigi/database/SQLFileManager.java b/src/org/cacert/gigi/database/SQLFileManager.java deleted file mode 100644 index 61732182..00000000 --- a/src/org/cacert/gigi/database/SQLFileManager.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.cacert.gigi.database; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class SQLFileManager { - - public static enum ImportType { - /** - * Execute Script as-is - */ - PRODUCTION, - /** - * Execute Script, but change Engine=InnoDB to Engine=Memory - */ - TEST, - /** - * Execute INSERT statements as-is, and TRUNCATE instead of DROPPING - */ - 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(";"); - Pattern p = Pattern.compile("\\s*DROP TABLE IF EXISTS \"([^\"]+)\""); - for (String string : stmts) { - Matcher m = p.matcher(string); - string = string.trim(); - if (string.equals("")) { - continue; - } - if ((string.contains("profiles") || string.contains("cacerts") || string.contains("cats_type") || string.contains("countryIsoCode")) && type == ImportType.TRUNCATE) { - continue; - } - string = DatabaseConnection.preprocessQuery(string); - if (m.matches() && type == ImportType.TRUNCATE) { - String sql2 = "DELETE FROM \"" + m.group(1) + "\""; - stmt.addBatch(sql2); - continue; - } - 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")); - } - } - } - - private static String readFile(InputStream f) throws IOException { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - int len; - byte[] buf = new byte[4096]; - while ((len = f.read(buf)) > 0) { - baos.write(buf, 0, len); - } - return new String(baos.toByteArray(), "UTF-8"); - } -}