]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/dbObjects/Job.java
fix: SQL change database call pattern
[gigi.git] / src / org / cacert / gigi / dbObjects / Job.java
index 9104c1315a5d18537893149a342c326be6888c92..bb357a8d07b742fddda040031abf4a8ca0dd8d83 100644 (file)
@@ -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;
 
     }
 }