X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FJob.java;h=4fa297385642573f19187d2a92dd7ed94bacc041;hb=af932253d612fbbbf1dcead6107df6fc53896282;hp=bb357a8d07b742fddda040031abf4a8ca0dd8d83;hpb=aa5723dbb64ec8efa63909d39ff72364f0a5ee96;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/Job.java b/src/org/cacert/gigi/dbObjects/Job.java index bb357a8d..4fa29738 100644 --- a/src/org/cacert/gigi/dbObjects/Job.java +++ b/src/org/cacert/gigi/dbObjects/Job.java @@ -3,6 +3,7 @@ package org.cacert.gigi.dbObjects; import java.sql.Date; import org.cacert.gigi.GigiApiException; +import org.cacert.gigi.database.DBEnum; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.database.GigiResultSet; import org.cacert.gigi.output.CertificateValiditySelector; @@ -15,7 +16,7 @@ public class Job implements IdCachable { this.id = id; } - public static enum JobType { + public static enum JobType implements DBEnum { SIGN("sign"), REVOKE("revoke"); private final String name; @@ -24,7 +25,8 @@ public class Job implements IdCachable { this.name = name; } - public String getName() { + @Override + public String getDBName() { return name; } } @@ -33,7 +35,7 @@ public class Job implements IdCachable { CertificateValiditySelector.checkValidityLength(period); 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.setEnum(2, JobType.SIGN); ps.setDate(3, start); ps.setString(4, period); ps.execute(); @@ -45,13 +47,13 @@ public class Job implements IdCachable { try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `jobs` SET targetId=?, task=?::`jobType`")) { ps.setInt(1, targetId.getId()); - ps.setString(2, JobType.REVOKE.getName()); + ps.setEnum(2, JobType.REVOKE); ps.execute(); return cache.put(new Job(ps.lastInsertId())); } } - public synchronized boolean waitFor(int max) throws InterruptedException { + public synchronized boolean waitFor(int max) { long start = System.currentTimeMillis(); try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT 1 FROM `jobs` WHERE id=? AND state='open'")) { ps.setInt(1, id); @@ -61,7 +63,12 @@ public class Job implements IdCachable { if (max != 0 && System.currentTimeMillis() - start > max) { return false; } - Thread.sleep((long) (2000 + Math.random() * 2000)); + try { + this.wait((long) (2000 + Math.random() * 2000)); + } catch (InterruptedException ie) { + // Ignore the interruption + ie.printStackTrace(); + } rs = ps.executeQuery(); } } @@ -80,7 +87,7 @@ public class Job implements IdCachable { if (i != null) { return i; } - try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT 1 FROM `jobs` WHERE id=?'")) { + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT 1 FROM `jobs` WHERE id=?")) { ps.setInt(1, id); GigiResultSet rs = ps.executeQuery(); if (rs.next()) {