]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/Certificate.java
Move Template to another package for moving AST-classes out.
[gigi.git] / src / org / cacert / gigi / Certificate.java
index 71fb5b72fb37453b09293ad6cf8d92f000f5c012..693ef31c14e3b29e08dc54f0b9b271f718c8b9d3 100644 (file)
@@ -18,7 +18,7 @@ import org.cacert.gigi.util.KeyStorage;
 public class Certificate {
        private int id;
        private int ownerId;
-       private int serial;
+       private String serial;
        private String dn;
        private String md;
        private String csrName;
@@ -32,14 +32,14 @@ public class Certificate {
                this.csr = csr;
        }
 
-       public Certificate(int id) {
+       private Certificate(String serial) {
                try {
                        PreparedStatement ps = DatabaseConnection.getInstance().prepare(
                                "SELECT id,subject, md, csr_name, crt_name,memid FROM `emailcerts` WHERE serial=?");
-                       ps.setInt(1, id);
+                       ps.setString(1, serial);
                        ResultSet rs = ps.executeQuery();
                        if (!rs.next()) {
-                               throw new IllegalArgumentException("Invalid mid " + id);
+                               throw new IllegalArgumentException("Invalid mid " + serial);
                        }
                        this.id = rs.getInt(1);
                        dn = rs.getString(2);
@@ -47,7 +47,7 @@ public class Certificate {
                        csrName = rs.getString(4);
                        crtName = rs.getString(5);
                        ownerId = rs.getInt(6);
-                       serial = id;
+                       this.serial = serial;
                        rs.close();
                } catch (SQLException e) {
                        e.printStackTrace();
@@ -109,7 +109,7 @@ public class Certificate {
                        return CertificateStatus.DRAFT;
                }
                PreparedStatement searcher = DatabaseConnection.getInstance().prepare(
-                       "SELECT crt_name, created, revoked, warning FROM emailcerts WHERE id=?");
+                       "SELECT crt_name, created, revoked, warning, serial FROM emailcerts WHERE id=?");
                searcher.setInt(1, id);
                ResultSet rs = searcher.executeQuery();
                if (!rs.next()) {
@@ -123,6 +123,7 @@ public class Certificate {
                        return CertificateStatus.SIGNING;
                }
                crtName = rs.getString(1);
+               serial = rs.getString(5);
                if (rs.getTime(2) != null && rs.getTime(3) == null) {
                        return CertificateStatus.ISSUED;
                }
@@ -214,7 +215,7 @@ public class Certificate {
                return id;
        }
 
-       public int getSerial() {
+       public String getSerial() {
                return serial;
        }
 
@@ -230,4 +231,14 @@ public class Certificate {
                return ownerId;
        }
 
+       public static Certificate getBySerial(String serial) {
+               // TODO caching?
+               try {
+                       return new Certificate(serial);
+               } catch (IllegalArgumentException e) {
+
+               }
+               return null;
+       }
+
 }