X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fdatabase%2FDatabaseConnection.java;h=09093669210c3229e9baf8e9ac42968500588660;hb=8d81c554173aadd24901c3b430850f4da0bd0c9a;hp=2552ed90e2ef3abe5ac65d585f76476cec694dfe;hpb=12af1eb93bac7e18ca48e9bcf67ce72648132b46;p=gigi.git diff --git a/src/org/cacert/gigi/database/DatabaseConnection.java b/src/org/cacert/gigi/database/DatabaseConnection.java index 2552ed90..09093669 100644 --- a/src/org/cacert/gigi/database/DatabaseConnection.java +++ b/src/org/cacert/gigi/database/DatabaseConnection.java @@ -48,7 +48,7 @@ public class DatabaseConnection { } - public PreparedStatement getTarget() { + public synchronized PreparedStatement getTarget() { return target; } @@ -99,7 +99,7 @@ public class DatabaseConnection { } - public static final int CURRENT_SCHEMA_VERSION = 6; + public static final int CURRENT_SCHEMA_VERSION = 11; public static final int CONNECTION_TIMEOUT = 24 * 60 * 60; @@ -183,15 +183,11 @@ public class DatabaseConnection { lastAction = System.currentTimeMillis(); } - private static DatabaseConnection instance; + private static volatile DatabaseConnection instance; - public static DatabaseConnection getInstance() { + public static synchronized DatabaseConnection getInstance() { if (instance == null) { - synchronized (DatabaseConnection.class) { - if (instance == null) { - instance = new DatabaseConnection(); - } - } + instance = new DatabaseConnection(); } return instance; } @@ -221,21 +217,12 @@ public class DatabaseConnection { upgrade(version); } - public void beginTransaction() throws SQLException { - c.setAutoCommit(false); - } - private static void upgrade(int version) { try { Statement s = getInstance().c.createStatement(); try { while (version < CURRENT_SCHEMA_VERSION) { - try (InputStream resourceAsStream = DatabaseConnection.class.getResourceAsStream("upgrade/from_" + version + ".sql")) { - if (resourceAsStream == null) { - throw new Error("Upgrade script from version " + version + " was not found."); - } - SQLFileManager.addFile(s, resourceAsStream, ImportType.PRODUCTION); - } + addUpgradeScript(Integer.toString(version), s); version++; } s.addBatch("UPDATE \"schemeVersion\" SET version='" + version + "'"); @@ -252,19 +239,12 @@ public class DatabaseConnection { } } - public void commitTransaction() throws SQLException { - c.commit(); - c.setAutoCommit(true); - } - - public void quitTransaction() { - try { - if ( !c.getAutoCommit()) { - c.rollback(); - c.setAutoCommit(true); + private static void addUpgradeScript(String version, Statement s) throws Error, IOException, SQLException { + try (InputStream resourceAsStream = DatabaseConnection.class.getResourceAsStream("upgrade/from_" + version + ".sql")) { + if (resourceAsStream == null) { + throw new Error("Upgrade script from version " + version + " was not found."); } - } catch (SQLException e) { - e.printStackTrace(); + SQLFileManager.addFile(s, resourceAsStream, ImportType.PRODUCTION); } } @@ -313,7 +293,7 @@ public class DatabaseConnection { return underUse.size(); } - public void lockedStatements(PrintWriter writer) { + public synchronized void lockedStatements(PrintWriter writer) { writer.println(underUse.size()); for (PreparedStatement ps : underUse) { for (Entry e : statements.entrySet()) {