X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;ds=inline;f=src%2Forg%2Fcacert%2Fgigi%2Fdatabase%2FDatabaseConnection.java;h=2bdf9f1ca1ab1cb7fe694569655547c6a400b493;hb=1473ab8375d4fea142ec06facee786c598a8de68;hp=1535ac3133a0e62865121c59a3a57952455aa9fb;hpb=fe12faa1b3dbe023ac44c8008914bca7f8fb4a30;p=gigi.git diff --git a/src/org/cacert/gigi/database/DatabaseConnection.java b/src/org/cacert/gigi/database/DatabaseConnection.java index 1535ac31..2bdf9f1c 100644 --- a/src/org/cacert/gigi/database/DatabaseConnection.java +++ b/src/org/cacert/gigi/database/DatabaseConnection.java @@ -122,7 +122,7 @@ public class DatabaseConnection { } - public static final int CURRENT_SCHEMA_VERSION = 25; + public static final int CURRENT_SCHEMA_VERSION = 26; public static final int CONNECTION_TIMEOUT = 24 * 60 * 60; @@ -235,6 +235,24 @@ public class DatabaseConnection { } credentials = conf; try (Link i = newLink(false)) { + try (GigiPreparedStatement empty = new GigiPreparedStatement("SELECT * from information_schema.tables WHERE table_schema='public' AND table_name='schemeVersion'")) { + if ( !empty.executeQuery().next()) { + try (InputStream resourceAsStream = DatabaseConnection.class.getResourceAsStream("tableStructure.sql")) { + if (resourceAsStream == null) { + throw new Error("DB-Install-Script not found."); + } + try (Statement s = getInstance().c.createStatement()) { + SQLFileManager.addFile(s, resourceAsStream, ImportType.PRODUCTION); + s.executeBatch(); + } + } + return; + } + } catch (IOException e) { + throw new Error(e); + } catch (SQLException e) { + throw new Error(e); + } int version = 0; try (GigiPreparedStatement gigiPreparedStatement = new GigiPreparedStatement("SELECT version FROM \"schemeVersion\" ORDER BY version DESC LIMIT 1;")) { GigiResultSet rs = gigiPreparedStatement.executeQuery(); @@ -256,8 +274,7 @@ public class DatabaseConnection { private static void upgrade(int version) { try { - Statement s = getInstance().c.createStatement(); - try { + try (Statement s = getInstance().c.createStatement()) { while (version < CURRENT_SCHEMA_VERSION) { addUpgradeScript(Integer.toString(version), s); version++; @@ -266,8 +283,6 @@ public class DatabaseConnection { System.out.println("UPGRADING Database to version " + version); s.executeBatch(); System.out.println("done."); - } finally { - s.close(); } } catch (SQLException e) { e.printStackTrace();