X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Futil%2FNotary.java;h=f229bdd4ac2afd9e2a8f9fc39fded1dab3798109;hp=2b1a2d923997d2b15c016a5a4deed5a1e898b026;hb=a0232b6e40e7e09767f0444d24e18bf12dafc362;hpb=30a66c84a3f33e99bd5cbfe50b25a83acfbf5425 diff --git a/src/org/cacert/gigi/util/Notary.java b/src/org/cacert/gigi/util/Notary.java index 2b1a2d92..f229bdd4 100644 --- a/src/org/cacert/gigi/util/Notary.java +++ b/src/org/cacert/gigi/util/Notary.java @@ -1,10 +1,11 @@ package org.cacert.gigi.util; import java.text.ParseException; +import java.util.Calendar; import java.util.Date; +import java.util.GregorianCalendar; 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.dbObjects.Group; @@ -14,30 +15,31 @@ import org.cacert.gigi.output.DateSelector; public class Notary { - public static void writeUserAgreement(int memid, String document, String method, String comment, boolean active, int secmemid) { - GigiPreparedStatement q = DatabaseConnection.getInstance().prepare("insert into `user_agreements` set `memid`=?, `secmemid`=?," + " `document`=?,`date`=NOW(), `active`=?,`method`=?,`comment`=?"); - q.setInt(1, memid); - q.setInt(2, secmemid); - q.setString(3, document); - q.setInt(4, active ? 1 : 0); - q.setString(5, method); - q.setString(6, comment); - q.execute(); + public static void writeUserAgreement(User member, String document, String method, String comment, boolean active, int secmemid) { + try (GigiPreparedStatement q = new GigiPreparedStatement("INSERT INTO `user_agreements` SET `memid`=?, `secmemid`=?," + " `document`=?,`date`=NOW(), `active`=?,`method`=?,`comment`=?")) { + q.setInt(1, member.getId()); + q.setInt(2, secmemid); + q.setString(3, document); + q.setBoolean(4, active); + q.setString(5, method); + q.setString(6, comment); + q.execute(); + } } public static void checkAssuranceIsPossible(User assurer, User target) throws GigiApiException { if (assurer.getId() == target.getId()) { throw new GigiApiException("You cannot assure yourself."); } - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT 1 FROM `notary` where `to`=? and `from`=? AND `deleted`=0"); - ps.setInt(1, target.getId()); - ps.setInt(2, assurer.getId()); - GigiResultSet rs = ps.executeQuery(); - if (rs.next()) { - rs.close(); - throw new GigiApiException("You have already assured this member."); + try (GigiPreparedStatement ps = new GigiPreparedStatement("SELECT 1 FROM `notary` where `to`=? and `from`=? AND `deleted` IS NULL")) { + ps.setInt(1, target.getId()); + ps.setInt(2, assurer.getId()); + GigiResultSet rs = ps.executeQuery(); + if (rs.next()) { + rs.close(); + throw new GigiApiException("You have already assured this member."); + } } - rs.close(); if ( !assurer.canAssure()) { throw new GigiApiException("You are not an assurer."); } @@ -85,7 +87,10 @@ public class Notary { } else { try { Date d = DateSelector.getDateFormat().parse(date); - if (d.getTime() > System.currentTimeMillis()) { + Calendar gc = GregorianCalendar.getInstance(); + gc.setTimeInMillis(System.currentTimeMillis()); + gc.add(Calendar.HOUR_OF_DAY, 12); + if (d.getTime() > gc.getTimeInMillis()) { gae.mergeInto(new GigiApiException("You must not enter a date in the future.")); } } catch (ParseException e) { @@ -105,7 +110,7 @@ public class Notary { gae.mergeInto(e); } - if ( !assuree.getName().equals(assureeName) || !assuree.getDob().equals(dob)) { + if ( !assuree.getName().equals(assureeName) || !assuree.getDoB().equals(dob)) { gae.mergeInto(new GigiApiException("The person you are assuring changed his personal details.")); } if (awarded > assurer.getMaxAssurePoints() || awarded < 0) { @@ -115,13 +120,14 @@ public class Notary { throw gae; } - GigiPreparedStatement ps = DatabaseConnection.getInstance().prepare("INSERT INTO `notary` SET `from`=?, `to`=?, `points`=?, `location`=?, `date`=?"); - ps.setInt(1, assurer.getId()); - ps.setInt(2, assuree.getId()); - ps.setInt(3, awarded); - ps.setString(4, location); - ps.setString(5, date); - ps.execute(); + try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `notary` SET `from`=?, `to`=?, `points`=?, `location`=?, `date`=?")) { + ps.setInt(1, assurer.getId()); + ps.setInt(2, assuree.getId()); + ps.setInt(3, awarded); + ps.setString(4, location); + ps.setString(5, date); + ps.execute(); + } assurer.invalidateMadeAssurances(); assuree.invalidateReceivedAssurances(); }