X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FEmailAddress.java;h=afd7f2c1fa13321e2beee95e1f063f03b02d8b1e;hb=6d41f0b3cd6f0cda6cd99d0757734b36d8dc2a95;hp=964d1b68ec8dda6cb2afb7685d43c46415f303d7;hpb=aa5723dbb64ec8efa63909d39ff72364f0a5ee96;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index 964d1b68..afd7f2c1 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -2,6 +2,7 @@ package org.cacert.gigi.dbObjects; import java.io.IOException; import java.util.Date; +import java.util.LinkedList; import java.util.Locale; import org.cacert.gigi.GigiApiException; @@ -39,7 +40,7 @@ public class EmailAddress implements IdCachable, Verifyable { public EmailAddress(User owner, String address, Locale mailLocale) throws GigiApiException { address = address.toLowerCase(); - if ( !EmailProvider.MAIL.matcher(address).matches()) { + if ( !EmailProvider.isValidMailAddress(address)) { throw new IllegalArgumentException("Invalid email."); } this.address = address; @@ -53,14 +54,16 @@ public class EmailAddress implements IdCachable, Verifyable { if (id != 0) { throw new IllegalStateException("already inserted."); } - try (GigiPreparedStatement psCheck = new GigiPreparedStatement("SELECT 1 FROM `emails` WHERE email=? AND deleted is NULL"); GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `emails` SET memid=?, email=?")) { - ps.setInt(1, owner.getId()); - ps.setString(2, address); + try (GigiPreparedStatement psCheck = new GigiPreparedStatement("SELECT 1 FROM `emails` WHERE email=? AND deleted is NULL")) { psCheck.setString(1, address); GigiResultSet res = psCheck.executeQuery(); if (res.next()) { throw new GigiApiException("The email address is already known to the system."); } + } + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `emails` SET memid=?, email=?")) { + ps.setInt(1, owner.getId()); + ps.setString(2, address); ps.execute(); id = ps.lastInsertId(); } @@ -149,4 +152,20 @@ public class EmailAddress implements IdCachable, Verifyable { } return em; } + + public User getOwner() { + return owner; + } + + public static EmailAddress[] findByAllEmail(String mail) { + LinkedList results = new LinkedList(); + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT `emails`.`id` FROM `emails` INNER JOIN `users` ON `users`.`id` = `emails`.`memid` INNER JOIN `certOwners` ON `certOwners`.`id` = `users`.`id` WHERE `emails`.`email` LIKE ? AND `emails`.`deleted` IS NULL AND `certOwners`.`deleted` IS NULL ORDER BY `users`.`id`, `emails`.`email` LIMIT 100")) { + ps.setString(1, mail); + GigiResultSet rs = ps.executeQuery(); + while (rs.next()) { + results.add(EmailAddress.getById(rs.getInt(1))); + } + return results.toArray(new EmailAddress[results.size()]); + } + } }