From: Felix Dörre Date: Wed, 9 Jul 2014 14:38:03 +0000 (+0200) Subject: Adding "Error" as Certificate status. X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=19c26906cd0e91836d712450d8f75ac53bcec5a8 Adding "Error" as Certificate status. --- diff --git a/src/org/cacert/gigi/Certificate.java b/src/org/cacert/gigi/Certificate.java index 47efacce..c6924132 100644 --- a/src/org/cacert/gigi/Certificate.java +++ b/src/org/cacert/gigi/Certificate.java @@ -30,14 +30,48 @@ public class Certificate { } public enum CertificateStatus { - DRAFT(false), BEING_ISSUED(true), ISSUED(false), BEING_REVOKED(true), REVOKED( - false); + /** + * This certificate is not in the database, has no id and only exists as + * this java object. + */ + DRAFT(false), + /** + * The certificate has been written to the database and is waiting for + * the signer to sign it. + */ + SIGNING(true), + /** + * The certificate has been signed. It is stored in the database. + * {@link Certificate#cert()} is valid. + */ + ISSUED(false), + /** + * The cetrificate is about to be revoked by the signer bot. + */ + BEING_REVOKED(true), + + /** + * The certificate has been revoked. + */ + REVOKED(false), + + /** + * If this certificate cannot be updated because an error happened in + * the signer. + */ + ERROR(false); private boolean unstable; private CertificateStatus(boolean unstable) { this.unstable = unstable; } + /** + * Checks, iff this certificate stage will be left by signer actions. + * + * @return True, iff this certificate stage will be left by signer + * actions. + */ public boolean isUnstable() { return unstable; } @@ -47,15 +81,21 @@ public class Certificate { if (id == 0) { return CertificateStatus.DRAFT; } - PreparedStatement searcher = DatabaseConnection.getInstance().prepare( - "SELECT crt_name, created, revoked FROM emailcerts WHERE id=?"); + PreparedStatement searcher = DatabaseConnection + .getInstance() + .prepare( + "SELECT crt_name, created, revoked, warning FROM emailcerts WHERE id=?"); searcher.setInt(1, id); ResultSet rs = searcher.executeQuery(); if (!rs.next()) { throw new IllegalStateException("Certificate not in Database"); } + if (rs.getInt(4) >= 3) { + return CertificateStatus.ERROR; + } + if (rs.getString(2) == null) { - return CertificateStatus.BEING_ISSUED; + return CertificateStatus.SIGNING; } crtName = rs.getString(1); System.out.println(crtName);