X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FCertificateOwner.java;h=82143db50030301a04ae6da8bdadd45b8d0f01a1;hb=aac731a4213533e5e9c3143f95e99af4b273b17a;hp=3091de6c98c806eff28ffc2e5e10c786b16b359d;hpb=d4802b68c651a984f0b98a462ac1e7721aa50388;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/CertificateOwner.java b/src/org/cacert/gigi/dbObjects/CertificateOwner.java index 3091de6c..82143db5 100644 --- a/src/org/cacert/gigi/dbObjects/CertificateOwner.java +++ b/src/org/cacert/gigi/dbObjects/CertificateOwner.java @@ -23,7 +23,7 @@ public abstract class CertificateOwner implements IdCachable { public static synchronized CertificateOwner getById(int id) { CertificateOwner u = myCache.get(id); if (u == null) { - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT *, users.id AS uid, organisations.id AS oid FROM certOwners LEFT JOIN users ON users.id=certOwners.id LEFT JOIN organisations ON organisations.id = certOwners.id WHERE certOwners.id=?"); + GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT *, users.id AS uid, organisations.id AS oid FROM certOwners LEFT JOIN users ON users.id=certOwners.id LEFT JOIN organisations ON organisations.id = certOwners.id WHERE certOwners.id=? AND deleted is null"); ps.setInt(1, id); GigiResultSet rs = ps.executeQuery(); if ( !rs.next()) { @@ -41,10 +41,10 @@ public abstract class CertificateOwner implements IdCachable { } protected int insert() { - if (id != 0) { - throw new Error("refusing to insert"); - } synchronized (User.class) { + if (id != 0) { + throw new Error("refusing to insert"); + } GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO certOwners() VALUES()"); ps.execute(); id = ps.lastInsertId(); @@ -91,8 +91,13 @@ public abstract class CertificateOwner implements IdCachable { } - public Certificate[] getCertificates() { - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT serial FROM certs WHERE memid=? AND revoked IS NULL"); + public Certificate[] getCertificates(boolean includeRevoked) { + GigiPreparedStatement ps; + if (includeRevoked) { + ps = DatabaseConnection.getInstance().prepare("SELECT serial FROM certs WHERE memid=?"); + } else { + ps = DatabaseConnection.getInstance().prepare("SELECT serial FROM certs WHERE memid=? AND revoked IS NULL"); + } ps.setInt(1, getId()); GigiResultSet rs = ps.executeQuery(); rs.last(); @@ -129,4 +134,10 @@ public abstract class CertificateOwner implements IdCachable { return false; } + public void delete() { + GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE certOwners set deleted=NOW() WHERE id=?"); + ps.setInt(1, getId()); + ps.execute(); + myCache.remove(this); + } }