X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FCertificateOwner.java;fp=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FCertificateOwner.java;h=0000000000000000000000000000000000000000;hp=a66229fe6bdefa90a8d6ef9df07d1f9341e87d11;hb=bccd4cc0dba0f89aa045b113bac46eb8cc1dab4e;hpb=c9ed09f0007fc2c813815be927a5a24b23dab83c diff --git a/src/org/cacert/gigi/dbObjects/CertificateOwner.java b/src/org/cacert/gigi/dbObjects/CertificateOwner.java deleted file mode 100644 index a66229fe..00000000 --- a/src/org/cacert/gigi/dbObjects/CertificateOwner.java +++ /dev/null @@ -1,171 +0,0 @@ -package org.cacert.gigi.dbObjects; - -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.ObjectStreamException; -import java.io.Serializable; -import java.util.LinkedList; -import java.util.List; - -import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.database.GigiPreparedStatement; -import org.cacert.gigi.database.GigiResultSet; - -public abstract class CertificateOwner implements IdCachable, Serializable { - - private static final long serialVersionUID = -672580485730247314L; - - private static final ObjectCache myCache = new ObjectCache<>(); - - private int id; - - protected CertificateOwner(int id) { - this.id = id; - } - - protected CertificateOwner() { - try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `certOwners` DEFAULT VALUES")) { - ps.execute(); - id = ps.lastInsertId(); - } - myCache.put(this); - } - - public int getId() { - return id; - } - - public static synchronized CertificateOwner getById(int id) { - CertificateOwner cached = myCache.get(id); - if (cached != null) { - return cached; - } - - try (GigiPreparedStatement psU = new GigiPreparedStatement("SELECT *, `users`.`id` AS uid FROM `certOwners` INNER JOIN `users` ON `users`.`id`=`certOwners`.`id` WHERE `certOwners`.`id`=? AND `deleted` is null")) { - psU.setInt(1, id); - GigiResultSet rsU = psU.executeQuery(); - if (rsU.next()) { - return myCache.put(new User(rsU)); - } - } catch (GigiApiException e) { - throw new Error(e); - } - - try (GigiPreparedStatement psO = new GigiPreparedStatement("SELECT *, `organisations`.`id` AS oid FROM `certOwners` INNER JOIN `organisations` ON `organisations`.`id`=`certOwners`.`id` WHERE `certOwners`.`id`=? AND `deleted` is null")) { - psO.setInt(1, id); - GigiResultSet rsO = psO.executeQuery(); - if (rsO.next()) { - return myCache.put(new Organisation(rsO)); - } - } catch (GigiApiException e) { - throw new Error(e); - } - - System.err.println("Malformed cert owner: " + id); - return null; - } - - public Domain[] getDomains() { - try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT `id` FROM `domains` WHERE `memid`=? AND `deleted` IS NULL")) { - ps.setInt(1, getId()); - - try (GigiResultSet rs = ps.executeQuery()) { - LinkedList data = new LinkedList(); - - while (rs.next()) { - data.add(Domain.getById(rs.getInt(1))); - } - - return data.toArray(new Domain[0]); - } - } - } - - public Certificate[] getCertificates(boolean includeRevoked) { - try (GigiPreparedStatement ps = new GigiPreparedStatement(includeRevoked ? "SELECT id FROM certs WHERE memid=?" : "SELECT id FROM certs WHERE memid=? AND revoked IS NULL")) { - ps.setInt(1, getId()); - - GigiResultSet rs = ps.executeQuery(); - LinkedList data = new LinkedList(); - - while (rs.next()) { - data.add(Certificate.getById(rs.getInt(1))); - } - - return data.toArray(new Certificate[0]); - } - } - - public boolean isValidDomain(String domainname) { - for (Domain d : getDomains()) { - String sfx = d.getSuffix(); - if (domainname.equals(sfx) || domainname.endsWith("." + sfx)) { - return d.isVerified(); - } - } - - return false; - } - - public abstract boolean isValidEmail(String email); - - public void delete() { - try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `certOwners` SET `deleted`=NOW() WHERE `id`=?")) { - ps.setInt(1, getId()); - ps.execute(); - } - myCache.remove(this); - } - - public String[] getAdminLog() { - try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT `when`, type, information FROM `adminLog` WHERE uid=? ORDER BY `when` ASC")) { - prep.setInt(1, getId()); - GigiResultSet res = prep.executeQuery(); - List entries = new LinkedList(); - - while (res.next()) { - entries.add(res.getString(2) + " (" + res.getString(3) + ")"); - } - return entries.toArray(new String[0]); - } - } - - public static CertificateOwner getByEnabledSerial(String serial) { - try (GigiPreparedStatement prep = new GigiPreparedStatement("SELECT `memid` FROM `certs` INNER JOIN `logincerts` ON `logincerts`.`id`=`certs`.`id` WHERE serial=? AND `revoked` is NULL")) { - prep.setString(1, serial); - GigiResultSet res = prep.executeQuery(); - if (res.next()) { - return getById(res.getInt(1)); - } - return null; - } - } - - private void writeObject(ObjectOutputStream oos) throws IOException { - oos.writeLong(getId()); - } - - private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException { - id = (int) ois.readLong(); - } - - protected Object readResolve() throws ObjectStreamException { - /** - * Returning the Object by looking up its ID in the cache. - * - * @see http://www.javalobby.org/java/forums/t17491.html - * @see http://www.jguru.com/faq/view.jsp?EID=44039 - * @see http://thecodersbreakfast.net/ - * ?post/2011/05/12/Serialization-and-magic-methods - */ - CertificateOwner co = getById(this.getId()); - - if (null == co) { - throw new Error("Unknown Certificate Owner"); - } - - return co; - } - -}