X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FEmailAddress.java;h=b945f9eecc23028575b8d4368738ecd5d652c42e;hb=8d98e8c550a5fc426d7efbd57436dcb61bd41243;hp=f91881800e919acda4a0978f2d7e1c9a5d935aac;hpb=e87392fd58e9152531a8d1cb34cb46e370062108;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index f9188180..b945f9ee 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -22,7 +22,7 @@ public class EmailAddress implements IdCachable { private String hash = null; private EmailAddress(int id) { - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT memid, email, hash FROM `emails` WHERE id=? AND deleted=0"); + GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT memid, email, hash FROM `emails` WHERE id=? AND deleted is NULL"); ps.setInt(1, id); GigiResultSet rs = ps.executeQuery(); @@ -45,16 +45,22 @@ public class EmailAddress implements IdCachable { this.hash = RandomToken.generateToken(16); } - public void insert(Language l) { + public void insert(Language l) throws GigiApiException { if (id != 0) { throw new IllegalStateException("already inserted."); } try { + GigiPreparedStatement psCheck = DatabaseConnection.getInstance().prepare("SELECT 1 FROM `emails` WHERE email=? AND deleted is NULL"); GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `emails` SET memid=?, hash=?, email=?"); ps.setInt(1, owner.getId()); ps.setString(2, hash); ps.setString(3, address); + psCheck.setString(1, address); synchronized (EmailAddress.class) { + GigiResultSet res = psCheck.executeQuery(); + if (res.next()) { + throw new GigiApiException("The email is currently valid"); + } ps.execute(); id = ps.lastInsertId(); myCache.put(this);