X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Futil%2FNotary.java;h=144bf6d88a464a0ffa9a8367dc6435992b06b1fb;hb=0a3573572ed9f1838d6c937b209f85111d2c4f5c;hp=aa806fa929ce2b06ee4d4f31c5ce837213cddeae;hpb=0176ca7cda25ad88e9faa116ffa139ca926de273;p=gigi.git diff --git a/src/org/cacert/gigi/util/Notary.java b/src/org/cacert/gigi/util/Notary.java index aa806fa9..144bf6d8 100644 --- a/src/org/cacert/gigi/util/Notary.java +++ b/src/org/cacert/gigi/util/Notary.java @@ -1,6 +1,7 @@ package org.cacert.gigi.util; import java.text.ParseException; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -13,6 +14,7 @@ import org.cacert.gigi.dbObjects.Group; import org.cacert.gigi.dbObjects.Name; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.output.DateSelector; +import org.cacert.gigi.output.template.SprintfCommand; public class Notary { @@ -72,7 +74,7 @@ public class Notary { * @throws GigiApiException * if the assurance fails (for various reasons) */ - public synchronized static void assure(User assurer, User assuree, Name assureeName, Date dob, int awarded, String location, String date, AssuranceType type) throws GigiApiException { + public synchronized static void assure(User assurer, User assuree, Name assureeName, DayDate dob, int awarded, String location, String date, AssuranceType type) throws GigiApiException { may(assurer, assuree, AssuranceType.FACE_TO_FACE); GigiApiException gae = new GigiApiException(); if ( !gae.isEmpty()) { @@ -99,45 +101,47 @@ public class Notary { } else if (location.length() <= 2) { gae.mergeInto(new GigiApiException("You must enter a location with at least 3 characters eg town and country.")); } + synchronized (assuree) { - try { - checkAssuranceIsPossible(assurer, assuree); - } catch (GigiApiException e) { - gae.mergeInto(e); - } + try { + checkAssuranceIsPossible(assurer, assuree); + } catch (GigiApiException e) { + gae.mergeInto(e); + } - if ( !assuree.getName().equals(assureeName) || !assuree.getDoB().equals(dob)) { - gae.mergeInto(new GigiApiException("The person you are assuring changed his personal details.")); - } - if (awarded < 0) { - gae.mergeInto(new GigiApiException("The points you are trying to award are out of range.")); - } else { - if (type == AssuranceType.NUCLEUS) { - if (awarded > 50) { - gae.mergeInto(new GigiApiException("The points you are trying to award are out of range.")); - } + if ( !assuree.getName().equals(assureeName) || !assuree.getDoB().equals(dob)) { + gae.mergeInto(new GigiApiException("The person you are assuring changed his personal details.")); + } + if (awarded < 0) { + gae.mergeInto(new GigiApiException("The points you are trying to award are out of range.")); } else { - if (awarded > assurer.getMaxAssurePoints()) { - gae.mergeInto(new GigiApiException("The points you are trying to award are out of range.")); + if (type == AssuranceType.NUCLEUS) { + if (awarded > 50) { + gae.mergeInto(new GigiApiException("The points you are trying to award are out of range.")); + } + } else { + if (awarded > assurer.getMaxAssurePoints()) { + gae.mergeInto(new GigiApiException("The points you are trying to award are out of range.")); + } } } - } - if ( !gae.isEmpty()) { - throw gae; - } + if ( !gae.isEmpty()) { + throw gae; + } - if (type == AssuranceType.FACE_TO_FACE) { - assureF2F(assurer, assuree, awarded, location, date); - } else if (type == AssuranceType.NUCLEUS) { - assureNucleus(assurer, assuree, awarded, location, date); - } else if (type == AssuranceType.TTP_ASSISTED) { - assureTTP(assurer, assuree, awarded, location, date); - } else { - throw new GigiApiException("Unknown Assurance type: " + type); + if (type == AssuranceType.FACE_TO_FACE) { + assureF2F(assurer, assuree, awarded, location, date); + } else if (type == AssuranceType.NUCLEUS) { + assureNucleus(assurer, assuree, awarded, location, date); + } else if (type == AssuranceType.TTP_ASSISTED) { + assureTTP(assurer, assuree, awarded, location, date); + } else { + throw new GigiApiException(new SprintfCommand("Unknown Assurance type: %s", Arrays.asList(type.toString()))); + } + assurer.invalidateMadeAssurances(); + assuree.invalidateReceivedAssurances(); } - assurer.invalidateMadeAssurances(); - assuree.invalidateReceivedAssurances(); } private static void assureF2F(User assurer, User assuree, int awarded, String location, String date) throws GigiApiException { @@ -195,7 +199,7 @@ public class Notary { private static void assureNucleus(User assurer, User assuree, int awarded, String location, String date) throws GigiApiException { may(assurer, assuree, AssuranceType.NUCLEUS); // Do up to 35 points as f2f - int f2fPoints = Math.min(35, awarded); + int f2fPoints = Math.min(assurer.getMaxAssurePoints(), awarded); assureF2F(assurer, assuree, f2fPoints, location, date); awarded -= f2fPoints;