X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FEmailAddress.java;h=f398087d16bf067213afc0b2507557de10cfc658;hb=701ba7f582c84412cabd47aeb9d785b93a892c07;hp=2acf59006e257f33fd7cf2f9bb493dbd05e23372;hpb=9031f0cf4327eaef9ede27f83cadf0b44833193c;p=gigi.git diff --git a/src/org/cacert/gigi/dbObjects/EmailAddress.java b/src/org/cacert/gigi/dbObjects/EmailAddress.java index 2acf5900..f398087d 100644 --- a/src/org/cacert/gigi/dbObjects/EmailAddress.java +++ b/src/org/cacert/gigi/dbObjects/EmailAddress.java @@ -1,12 +1,11 @@ package org.cacert.gigi.dbObjects; import java.io.IOException; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.database.DatabaseConnection; +import org.cacert.gigi.database.GigiPreparedStatement; +import org.cacert.gigi.database.GigiResultSet; import org.cacert.gigi.email.EmailProvider; import org.cacert.gigi.email.MailProbe; import org.cacert.gigi.localisation.Language; @@ -22,11 +21,11 @@ public class EmailAddress implements IdCachable { private String hash = null; - private EmailAddress(int id) throws SQLException { - PreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT memid, email, hash FROM `emails` WHERE id=? AND deleted=0"); + private EmailAddress(int id) { + GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT memid, email, hash FROM `emails` WHERE id=? AND deleted is NULL"); ps.setInt(1, id); - ResultSet rs = ps.executeQuery(); + GigiResultSet rs = ps.executeQuery(); if ( !rs.next()) { throw new IllegalArgumentException("Invalid email id " + id); } @@ -51,18 +50,16 @@ public class EmailAddress implements IdCachable { throw new IllegalStateException("already inserted."); } try { - PreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `emails` SET memid=?, hash=?, email=?"); + 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); synchronized (EmailAddress.class) { ps.execute(); - id = DatabaseConnection.lastInsertId(ps); + id = ps.lastInsertId(); myCache.put(this); } MailProbe.sendMailProbe(l, "email", id, hash, address); - } catch (SQLException e) { - e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } @@ -78,22 +75,17 @@ public class EmailAddress implements IdCachable { public synchronized void verify(String hash) throws GigiApiException { if (this.hash.equals(hash)) { - - try { - PreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE `emails` SET hash='' WHERE id=?"); - ps.setInt(1, id); - ps.execute(); - hash = ""; - - // Verify user with that primary email - PreparedStatement ps2 = DatabaseConnection.getInstance().prepare("update `users` set `verified`='1' where `id`=? and `email`=? and `verified`='0'"); - ps2.setInt(1, owner.getId()); - ps2.setString(2, address); - ps2.execute(); - this.hash = ""; - } catch (SQLException e) { - throw new GigiApiException(e); - } + GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("UPDATE `emails` SET hash='' WHERE id=?"); + ps.setInt(1, id); + ps.execute(); + hash = ""; + + // Verify user with that primary email + GigiPreparedStatement ps2 = DatabaseConnection.getInstance().prepare("update `users` set `verified`='1' where `id`=? and `email`=? and `verified`='0'"); + ps2.setInt(1, owner.getId()); + ps2.setString(2, address); + ps2.execute(); + this.hash = ""; } else { throw new GigiApiException("Email verification hash is invalid."); @@ -106,16 +98,10 @@ public class EmailAddress implements IdCachable { private static ObjectCache myCache = new ObjectCache<>(); - public static EmailAddress getById(int id) throws IllegalArgumentException { + public static synchronized EmailAddress getById(int id) throws IllegalArgumentException { EmailAddress em = myCache.get(id); if (em == null) { - try { - synchronized (EmailAddress.class) { - myCache.put(em = new EmailAddress(id)); - } - } catch (SQLException e1) { - throw new IllegalArgumentException(e1); - } + myCache.put(em = new EmailAddress(id)); } return em; }