]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/MyDetailsForm.java
upd: tighten synchronizeation on User Objects while assuring
[gigi.git] / src / org / cacert / gigi / pages / account / MyDetailsForm.java
index efff2f0e82ebf92e7def05f177c544fda6acf3a9..9ea66b359965f8ba0142b1ca4cbcced21f252335 100644 (file)
@@ -6,6 +6,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 
 import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.Name;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.DateSelector;
@@ -30,29 +31,29 @@ public class MyDetailsForm extends Form {
     public MyDetailsForm(HttpServletRequest hsr, User target) {
         super(hsr);
         this.target = target;
-        this.ds = new DateSelector("day", "month", "year", target.getDob());
+        this.ds = new DateSelector("day", "month", "year", target.getDoB());
     }
 
     @Override
     public boolean submit(PrintWriter out, HttpServletRequest req) {
         try {
-            if (target.getAssurancePoints() == 0) {
-                String newFname = req.getParameter("fname").trim();
-                String newLname = req.getParameter("lname").trim();
-                String newMname = req.getParameter("mname").trim();
-                String newSuffix = req.getParameter("suffix").trim();
-                if (newLname.isEmpty()) {
-                    throw new GigiApiException("Last name cannot be empty.");
+            synchronized (target) {
+                if (target.getAssurancePoints() == 0) {
+                    String newFname = req.getParameter("fname").trim();
+                    String newLname = req.getParameter("lname").trim();
+                    String newMname = req.getParameter("mname").trim();
+                    String newSuffix = req.getParameter("suffix").trim();
+                    if (newLname.isEmpty()) {
+                        throw new GigiApiException("Last name cannot be empty.");
+                    }
+
+                    target.setName(new Name(newFname, newLname, newMname, newSuffix));
+                    ds.update(req);
+                    target.setDoB(ds.getDate());
+                    target.updateUserData();
+                } else {
+                    throw new GigiApiException("No change after assurance allowed.");
                 }
-                target.setFname(newFname);
-                target.setLname(newLname);
-                target.setMname(newMname);
-                target.setSuffix(newSuffix);
-                ds.update(req);
-                target.setDob(ds.getDate());
-                target.updateUserData();
-            } else {
-                throw new GigiApiException("No change after assurance allowed.");
             }
         } catch (GigiApiException e) {
             e.format(out, Page.getLanguage(req));
@@ -66,16 +67,17 @@ public class MyDetailsForm extends Form {
 
     @Override
     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
-        vars.put("fname", HTMLEncoder.encodeHTML(target.getFname()));
-        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()));
+        Name name = target.getName();
+        vars.put("fname", HTMLEncoder.encodeHTML(name.getFname()));
+        vars.put("mname", name.getMname() == null ? "" : HTMLEncoder.encodeHTML(name.getMname()));
+        vars.put("lname", HTMLEncoder.encodeHTML(name.getLname()));
+        vars.put("suffix", name.getSuffix() == null ? "" : HTMLEncoder.encodeHTML(name.getSuffix()));
         vars.put("details", "");
         if (target.getAssurancePoints() == 0) {
             vars.put("DoB", ds);
             templ.output(out, l, vars);
         } else {
-            vars.put("DoB", DateSelector.getDateFormat().format(target.getDob()));
+            vars.put("DoB", target.getDoB());
             assured.output(out, l, vars);
         }
     }