From cfccf094c856476a7618edfe4dc8ff1c2e198b1a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Sun, 31 Aug 2014 19:49:00 +0200 Subject: [PATCH] UPD: Details display assured --- src/org/cacert/gigi/User.java | 1 - src/org/cacert/gigi/output/DateSelector.java | 36 +++++++--------- .../gigi/pages/account/MyDetailsForm.java | 34 ++++++++------- .../pages/account/MyDetailsFormAssured.templ | 42 +++++++++++++++++++ src/org/cacert/gigi/pages/main/Signup.java | 6 ++- .../gigi/pages/account/TestMyDetailsEdit.java | 4 +- 6 files changed, 84 insertions(+), 39 deletions(-) create mode 100644 src/org/cacert/gigi/pages/account/MyDetailsFormAssured.templ diff --git a/src/org/cacert/gigi/User.java b/src/org/cacert/gigi/User.java index 76487381..842f2f20 100644 --- a/src/org/cacert/gigi/User.java +++ b/src/org/cacert/gigi/User.java @@ -443,7 +443,6 @@ public class User { 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=?"); diff --git a/src/org/cacert/gigi/output/DateSelector.java b/src/org/cacert/gigi/output/DateSelector.java index e4e66f6f..f98ec8fa 100644 --- a/src/org/cacert/gigi/output/DateSelector.java +++ b/src/org/cacert/gigi/output/DateSelector.java @@ -11,6 +11,7 @@ import java.util.TimeZone; import javax.servlet.http.HttpServletRequest; +import org.cacert.gigi.GigiApiException; import org.cacert.gigi.localisation.Language; public class DateSelector implements Outputable { @@ -88,30 +89,25 @@ public class DateSelector implements Outputable { out.print("\" size=\"4\" autocomplete=\"off\">"); } - public void update(HttpServletRequest r) { - String dayS = r.getParameter(names[0]); - if (dayS != null) { - day = parseIntSafe(dayS); - } - - String monthS = r.getParameter(names[1]); - if (monthS != null) { - month = parseIntSafe(monthS); - } + public void update(HttpServletRequest r) throws GigiApiException { + try { + String dayS = r.getParameter(names[0]); + if (dayS != null) { + day = Integer.parseInt(dayS); + } - String yearS = r.getParameter(names[2]); - if (yearS != null) { - year = parseIntSafe(yearS); - } - } + String monthS = r.getParameter(names[1]); + if (monthS != null) { + month = Integer.parseInt(monthS); + } - private int parseIntSafe(String dayS) { - try { - return Integer.parseInt(dayS); + String yearS = r.getParameter(names[2]); + if (yearS != null) { + year = Integer.parseInt(yearS); + } } catch (NumberFormatException e) { - + throw new GigiApiException("Unparsable date."); } - return 0; } public boolean isValid() { diff --git a/src/org/cacert/gigi/pages/account/MyDetailsForm.java b/src/org/cacert/gigi/pages/account/MyDetailsForm.java index 32e275fb..4faa6627 100644 --- a/src/org/cacert/gigi/pages/account/MyDetailsForm.java +++ b/src/org/cacert/gigi/pages/account/MyDetailsForm.java @@ -2,17 +2,14 @@ package org.cacert.gigi.pages.account; import java.io.InputStreamReader; import java.io.PrintWriter; -import java.sql.Date; import java.sql.SQLException; -import java.util.Calendar; import java.util.Map; -import java.util.TimeZone; - import javax.servlet.http.HttpServletRequest; import org.cacert.gigi.GigiApiException; import org.cacert.gigi.User; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.CertificateValiditySelector; import org.cacert.gigi.output.DateSelector; import org.cacert.gigi.output.Form; import org.cacert.gigi.output.template.Template; @@ -21,6 +18,8 @@ import org.cacert.gigi.util.HTMLEncoder; public class MyDetailsForm extends Form { + private static Template assured = new Template(MyDetails.class.getResource("MyDetailsFormAssured.templ")); + private static Template templ; static { templ = new Template(new InputStreamReader(MyDetailsForm.class.getResourceAsStream("MyDetailsForm.templ"))); @@ -28,9 +27,12 @@ public class MyDetailsForm extends Form { private User target; + private DateSelector ds; + public MyDetailsForm(HttpServletRequest hsr, User target) { super(hsr); this.target = target; + this.ds = new DateSelector("day", "month", "year", target.getDob()); } @Override @@ -48,14 +50,8 @@ public class MyDetailsForm extends Form { target.setLname(newLname); target.setMname(newMname); target.setSuffix(newSuffix); - int newYear = Integer.parseInt(req.getParameter("year")); - int newMonth = Integer.parseInt(req.getParameter("month")); - int newDay = Integer.parseInt(req.getParameter("day")); - Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); - cal.set(Calendar.YEAR, newYear); - cal.set(Calendar.MONTH, newMonth); - cal.set(Calendar.DAY_OF_MONTH, newDay); - target.setDob(new Date(cal.getTimeInMillis())); + ds.update(req); + target.setDob(ds.getDate()); target.updateUserData(); } else { throw new GigiApiException("No change after assurance allowed."); @@ -79,10 +75,18 @@ public class MyDetailsForm extends Form { vars.put("mname", target.getMname() == null ? "" : HTMLEncoder.encodeHTML(target.getMname())); vars.put("lname", HTMLEncoder.encodeHTML(target.getLname())); vars.put("suffix", target.getSuffix() == null ? "" : HTMLEncoder.encodeHTML(target.getSuffix())); - DateSelector ds = new DateSelector("day", "month", "year", target.getDob()); - vars.put("DoB", ds); vars.put("details", ""); - templ.output(out, l, vars); + try { + if (target.getAssurancePoints() == 0) { + vars.put("DoB", ds); + templ.output(out, l, vars); + } else { + vars.put("DoB", CertificateValiditySelector.getDateFormat().format(target.getDob())); + assured.output(out, l, vars); + } + } catch (SQLException e) { + e.printStackTrace(); + } } } diff --git a/src/org/cacert/gigi/pages/account/MyDetailsFormAssured.templ b/src/org/cacert/gigi/pages/account/MyDetailsFormAssured.templ new file mode 100644 index 00000000..898f6f37 --- /dev/null +++ b/src/org/cacert/gigi/pages/account/MyDetailsFormAssured.templ @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:

+ () +
:

+ ()

+ ()
diff --git a/src/org/cacert/gigi/pages/main/Signup.java b/src/org/cacert/gigi/pages/main/Signup.java index 35b8344b..4fca9450 100644 --- a/src/org/cacert/gigi/pages/main/Signup.java +++ b/src/org/cacert/gigi/pages/main/Signup.java @@ -14,6 +14,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.cacert.gigi.EmailAddress; +import org.cacert.gigi.GigiApiException; import org.cacert.gigi.User; import org.cacert.gigi.database.DatabaseConnection; import org.cacert.gigi.email.EmailProvider; @@ -85,7 +86,10 @@ public class Signup extends Form { country = "1".equals(r.getParameter("country")); regional = "1".equals(r.getParameter("regional")); radius = "1".equals(r.getParameter("radius")); - myDoB.update(r); + try { + myDoB.update(r); + } catch (GigiApiException e) { + } } @Override diff --git a/tests/org/cacert/gigi/pages/account/TestMyDetailsEdit.java b/tests/org/cacert/gigi/pages/account/TestMyDetailsEdit.java index 458d982b..7aa33290 100644 --- a/tests/org/cacert/gigi/pages/account/TestMyDetailsEdit.java +++ b/tests/org/cacert/gigi/pages/account/TestMyDetailsEdit.java @@ -112,11 +112,11 @@ public class TestMyDetailsEdit extends ManagedTest { String email = createUniqueName() + "@e.de"; int id = createVerifiedUser("Kurti", "Hansel", email, TEST_PASSWORD); String cookie = login(email, TEST_PASSWORD); - assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "lname=Hansel&fname=Kurti&mname=&suffix=&day=1&month=1&year=2000&processDetails", 0)); + assertNull(executeBasicWebInteraction(cookie, MyDetails.PATH, "lname=Hansel&fname=Kurti&mname=&suffix=&day=1&month=2&year=2000&processDetails", 0)); User u = User.getById(id); Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); cal.set(Calendar.YEAR, 2000); - cal.set(Calendar.DAY_OF_MONTH, 1); + cal.set(Calendar.DAY_OF_MONTH, Calendar.FEBRUARY); cal.set(Calendar.MONTH, 1); Date d = new Date(cal.getTimeInMillis()); assertEquals(d.toString(), u.getDob().toString()); -- 2.39.2