X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FJob.java;h=bb357a8d07b742fddda040031abf4a8ca0dd8d83;hp=9104c1315a5d18537893149a342c326be6888c92;hb=a0232b6e40e7e09767f0444d24e18bf12dafc362;hpb=851b2db2211e0f7770065dc4558cc0de74a39df4 diff --git a/src/org/cacert/gigi/dbObjects/Job.java b/src/org/cacert/gigi/dbObjects/Job.java index 9104c131..bb357a8d 100644 --- a/src/org/cacert/gigi/dbObjects/Job.java +++ b/src/org/cacert/gigi/dbObjects/Job.java @@ -3,7 +3,6 @@ package org.cacert.gigi.dbObjects; import java.sql.Date; import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.database.GigiResultSet; import org.cacert.gigi.output.CertificateValiditySelector; @@ -32,38 +31,40 @@ public class Job implements IdCachable { public synchronized static Job sign(Certificate targetId, Date start, String period) throws GigiApiException { CertificateValiditySelector.checkValidityLength(period); - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `jobs` SET targetId=?, task=?::`jobType`, executeFrom=?, executeTo=?"); - ps.setInt(1, targetId.getId()); - ps.setString(2, JobType.SIGN.getName()); - ps.setDate(3, start); - ps.setString(4, period); - ps.execute(); - return cache.put(new Job(ps.lastInsertId())); + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `jobs` SET targetId=?, task=?::`jobType`, executeFrom=?, executeTo=?")) { + ps.setInt(1, targetId.getId()); + ps.setString(2, JobType.SIGN.getName()); + ps.setDate(3, start); + ps.setString(4, period); + ps.execute(); + return cache.put(new Job(ps.lastInsertId())); + } } public synchronized static Job revoke(Certificate targetId) { - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `jobs` SET targetId=?, task=?::`jobType`"); - ps.setInt(1, targetId.getId()); - ps.setString(2, JobType.REVOKE.getName()); - ps.execute(); - return cache.put(new Job(ps.lastInsertId())); + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `jobs` SET targetId=?, task=?::`jobType`")) { + ps.setInt(1, targetId.getId()); + ps.setString(2, JobType.REVOKE.getName()); + ps.execute(); + return cache.put(new Job(ps.lastInsertId())); + } } public synchronized boolean waitFor(int max) throws InterruptedException { long start = System.currentTimeMillis(); - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT 1 FROM `jobs` WHERE id=? AND state='open'"); - ps.setInt(1, id); - GigiResultSet rs = ps.executeQuery(); - while (rs.next()) { - rs.close(); - if (max != 0 && System.currentTimeMillis() - start > max) { - return false; + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT 1 FROM `jobs` WHERE id=? AND state='open'")) { + ps.setInt(1, id); + GigiResultSet rs = ps.executeQuery(); + while (rs.next()) { + rs.close(); + if (max != 0 && System.currentTimeMillis() - start > max) { + return false; + } + Thread.sleep((long) (2000 + Math.random() * 2000)); + rs = ps.executeQuery(); } - Thread.sleep((long) (2000 + Math.random() * 2000)); - rs = ps.executeQuery(); } - rs.close(); return true; } @@ -79,15 +80,16 @@ public class Job implements IdCachable { if (i != null) { return i; } - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT 1 FROM `jobs` WHERE id=?'"); - ps.setInt(1, id); - GigiResultSet rs = ps.executeQuery(); - if (rs.next()) { - Job j = new Job(id); - cache.put(j); - return j; + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT 1 FROM `jobs` WHERE id=?'")) { + ps.setInt(1, id); + GigiResultSet rs = ps.executeQuery(); + if (rs.next()) { + Job j = new Job(id); + cache.put(j); + return j; + } + return null; } - return null; } }