From: Felix Dörre Date: Tue, 22 Jul 2014 21:36:47 +0000 (+0200) Subject: Remove "list all emails from user"-queries. X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=09f0476b47711ec02bb96bdd2090ea1930f434a5 Remove "list all emails from user"-queries. --- diff --git a/src/org/cacert/gigi/User.java b/src/org/cacert/gigi/User.java index c3ca2164..d5b0a904 100644 --- a/src/org/cacert/gigi/User.java +++ b/src/org/cacert/gigi/User.java @@ -219,4 +219,27 @@ public class User { return new User(id); } + public EmailAddress[] getEmails() { + try { + PreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT id FROM email WHERE memid=?"); + ps.setInt(1, id); + ResultSet rs = ps.executeQuery(); + rs.last(); + int count = rs.getRow(); + EmailAddress[] data = new EmailAddress[count]; + rs.beforeFirst(); + for (int i = 0; i < data.length; i++) { + if (!rs.next()) { + throw new Error("Internal sql api violation."); + } + data[i] = EmailAddress.getById(rs.getInt(1)); + } + rs.close(); + return data; + } catch (SQLException e) { + e.printStackTrace(); + } + + return null; + } } diff --git a/src/org/cacert/gigi/pages/account/IssueCertificateForm.java b/src/org/cacert/gigi/pages/account/IssueCertificateForm.java index 29565e0e..a0dad7fd 100644 --- a/src/org/cacert/gigi/pages/account/IssueCertificateForm.java +++ b/src/org/cacert/gigi/pages/account/IssueCertificateForm.java @@ -7,19 +7,18 @@ import java.security.PublicKey; import java.security.interfaces.DSAPublicKey; import java.security.interfaces.ECPublicKey; import java.security.interfaces.RSAPublicKey; -import java.sql.PreparedStatement; -import java.sql.ResultSet; import java.sql.SQLException; import java.util.Base64; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; + import org.cacert.gigi.Certificate; import org.cacert.gigi.Digest; +import org.cacert.gigi.EmailAddress; import org.cacert.gigi.Language; import org.cacert.gigi.User; -import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.output.Form; import org.cacert.gigi.output.template.HashAlgorithms; import org.cacert.gigi.output.template.IterableDataset; @@ -128,33 +127,23 @@ public class IssueCertificateForm extends Form { HashMap vars2 = new HashMap(vars); vars2.put("CCA", "CCA"); - try { - PreparedStatement ps = DatabaseConnection.getInstance().prepare( - "SELECT `id`,`email` from `email` WHERE `memid`=? AND `deleted`=0"); - ps.setInt(1, u.getId()); - final ResultSet rs = ps.executeQuery(); - vars2.put("emails", new IterableDataset() { - - @Override - public boolean next(Language l, Map vars) { - try { - if (!rs.next()) { - return false; - } - vars.put("id", rs.getString(1)); - vars.put("value", rs.getString(2)); - return true; - } catch (SQLException e) { - e.printStackTrace(); - } + final EmailAddress[] ea = u.getEmails(); + vars2.put("emails", new IterableDataset() { + int count; + + @Override + public boolean next(Language l, Map vars) { + if (count >= ea.length) { return false; } - }); - vars2.put("hashs", new HashAlgorithms(selectedDigest)); - t.output(out, l, vars2); - } catch (SQLException e) { - e.printStackTrace(); - } + vars.put("id", ea[count].getId()); + vars.put("value", ea[count].getAddress()); + count++; + return true; + } + }); + vars2.put("hashs", new HashAlgorithms(selectedDigest)); + t.output(out, l, vars2); } } diff --git a/src/org/cacert/gigi/pages/account/MailCertificateAdd.java b/src/org/cacert/gigi/pages/account/MailCertificateAdd.java index 3cbb537d..c25db15f 100644 --- a/src/org/cacert/gigi/pages/account/MailCertificateAdd.java +++ b/src/org/cacert/gigi/pages/account/MailCertificateAdd.java @@ -1,21 +1,11 @@ package org.cacert.gigi.pages.account; import java.io.IOException; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; import java.util.Collections; import java.util.HashMap; -import java.util.Map; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.cacert.gigi.Language; -import org.cacert.gigi.User; -import org.cacert.gigi.database.DatabaseConnection; -import org.cacert.gigi.output.template.IterableDataset; -import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.Certificate; import org.cacert.gigi.output.Form; import org.cacert.gigi.output.template.Template; @@ -34,34 +24,7 @@ public class MailCertificateAdd extends Page { HashMap vars = new HashMap(); vars.put("CCA", "CCA"); - User u = LoginPage.getUser(req); - try { - PreparedStatement ps = DatabaseConnection.getInstance().prepare( - "SELECT `id`,`email` from `email` WHERE `memid`=? AND `deleted`=0"); - ps.setInt(1, u.getId()); - final ResultSet rs = ps.executeQuery(); - vars.put("emails", new IterableDataset() { - - @Override - public boolean next(Language l, Map vars) { - try { - if (!rs.next()) { - return false; - } - vars.put("id", rs.getString(1)); - vars.put("value", rs.getString(2)); - return true; - } catch (SQLException e) { - e.printStackTrace(); - } - return false; - } - }); - t.output(resp.getWriter(), getLanguage(req), vars); - rs.close(); - } catch (SQLException e) { - e.printStackTrace(); - } + t.output(resp.getWriter(), getLanguage(req), vars); } @Override