X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FUser.java;h=e251a987a036c98008a79ccf0088a09e8e76ea95;hb=f667542e89607f5612e1ba6915e4dce4c950c175;hp=eebf9317e2b4839aadc894fd0f86363787e17ab2;hpb=d895448cb685adc4c2bfac8d92759252d2ce8c36;p=gigi.git diff --git a/src/org/cacert/gigi/User.java b/src/org/cacert/gigi/User.java index eebf9317..e251a987 100644 --- a/src/org/cacert/gigi/User.java +++ b/src/org/cacert/gigi/User.java @@ -7,6 +7,7 @@ import java.sql.SQLException; import java.util.Calendar; import org.cacert.gigi.database.DatabaseConnection; +import org.cacert.gigi.util.Notary; import org.cacert.gigi.util.PasswordHash; import org.cacert.gigi.util.PasswordStrengthChecker; @@ -20,8 +21,14 @@ public class User { private String email; + private Assurance[] receivedAssurances, madeAssurances; + public User(int id) { this.id = id; + updateName(id); + } + + private void updateName(int id) { try { PreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT `fname`, `lname`,`mname`, `suffix`, `dob`, `email` FROM `users` WHERE id=?"); ps.setInt(1, id); @@ -377,4 +384,65 @@ public class User { } throw new GigiApiException("Email not one of user's email addresses."); } + + public Assurance[] getReceivedAssurances() throws SQLException { + if (receivedAssurances == null) { + PreparedStatement query = DatabaseConnection.getInstance().prepare("SELECT * FROM notary WHERE `to`=? AND deleted=0"); + query.setInt(1, getId()); + ResultSet res = query.executeQuery(); + res.last(); + Assurance[] assurances = new Assurance[res.getRow()]; + res.beforeFirst(); + for (int i = 0; i < assurances.length; i++) { + res.next(); + assurances[i] = new Assurance(res); + } + this.receivedAssurances = assurances; + return assurances; + } + return receivedAssurances; + } + + public Assurance[] getMadeAssurances() throws SQLException { + if (madeAssurances == null) { + PreparedStatement query = DatabaseConnection.getInstance().prepare("SELECT * FROM notary WHERE `from`=? AND deleted=0"); + query.setInt(1, getId()); + ResultSet res = query.executeQuery(); + res.last(); + Assurance[] assurances = new Assurance[res.getRow()]; + res.beforeFirst(); + for (int i = 0; i < assurances.length; i++) { + res.next(); + assurances[i] = new Assurance(res); + } + this.madeAssurances = assurances; + return assurances; + } + return madeAssurances; + } + + public void invalidateMadeAssurances() { + madeAssurances = null; + } + + public void invalidateReceivedAssurances() { + receivedAssurances = null; + } + + public void updateUserData() throws SQLException, GigiApiException { + synchronized (Notary.class) { + if (getAssurancePoints() != 0) { + updateUserData(); + throw new GigiApiException("No change after assurance allowed."); + } + PreparedStatement update = DatabaseConnection.getInstance().prepare("UPDATE users SET fname=?, lname=?, mname=?, suffix=?, dob=? WHERE id=?"); + update.setString(1, getFname()); + update.setString(2, getLname()); + update.setString(3, getMname()); + update.setString(4, getSuffix()); + update.setDate(5, getDob()); + update.setInt(6, getId()); + update.executeUpdate(); + } + } }