X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Futil%2FNotary.java;h=f229bdd4ac2afd9e2a8f9fc39fded1dab3798109;hp=767230b0a82dfd470af7b356500a07dff3b8a056;hb=a0232b6e40e7e09767f0444d24e18bf12dafc362;hpb=4b91927aa8d90226414872ce5b3006d0e0f5d273 diff --git a/src/org/cacert/gigi/util/Notary.java b/src/org/cacert/gigi/util/Notary.java index 767230b0..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; @@ -15,29 +16,30 @@ import org.cacert.gigi.output.DateSelector; public class Notary { public static void writeUserAgreement(User member, 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, member.getId()); - q.setInt(2, secmemid); - q.setString(3, document); - q.setInt(4, active ? 1 : 0); - q.setString(5, method); - q.setString(6, comment); - q.execute(); + 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` 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."); + 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) { @@ -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(); }