1 package org.cacert.gigi.pages.account;
3 import java.io.PrintWriter;
6 import javax.servlet.http.HttpServletRequest;
8 import org.cacert.gigi.GigiApiException;
9 import org.cacert.gigi.dbObjects.Name;
10 import org.cacert.gigi.dbObjects.User;
11 import org.cacert.gigi.localisation.Language;
12 import org.cacert.gigi.output.ArrayIterable;
13 import org.cacert.gigi.output.DateSelector;
14 import org.cacert.gigi.output.NameInput;
15 import org.cacert.gigi.output.template.Form;
16 import org.cacert.gigi.output.template.Template;
17 import org.cacert.gigi.pages.Page;
19 public class MyDetailsForm extends Form {
21 private static final Template assured = new Template(MyDetails.class.getResource("MyDetailsFormAssured.templ"));
23 private static final Template templ = new Template(MyDetailsForm.class.getResource("MyDetailsForm.templ"));
25 private static final Template names = new Template(MyDetailsForm.class.getResource("NamesForm.templ"));
29 private DateSelector ds;
33 public MyDetailsForm(HttpServletRequest hsr, User target) {
38 this.ds = new DateSelector("day", "month", "year", target.getDoB());
42 public boolean submit(PrintWriter out, HttpServletRequest req) {
44 String rn = req.getParameter("removeName");
46 Name n = Name.getById(Integer.parseInt(rn));
47 if (n.getOwner() != target) {
48 throw new GigiApiException("Cannot remove a name that does not belong to this account.");
50 if (n.equals(target.getPreferredName())) {
51 throw new GigiApiException("Cannot remove the account's preferred name.");
56 String dn = req.getParameter("deprecateName");
58 Name n = Name.getById(Integer.parseInt(dn));
59 if (n.getOwner() != target) {
60 throw new GigiApiException("Cannot deprecate a name that does not belong to this account.");
62 if (n.equals(target.getPreferredName())) {
63 throw new GigiApiException("Cannot deprecate the account's preferred name.");
68 String pn = req.getParameter("preferred");
70 Name n = Name.getById(Integer.parseInt(pn));
71 target.setPreferredName(n);
75 String action = req.getParameter("action");
76 if ("addName".equals(action)) {
78 ni.createName(target);
81 if ("updateDoB".equals(action)) {
83 target.setDoB(ds.getDate());
85 } catch (GigiApiException e) {
86 e.format(out, Page.getLanguage(req));
88 } catch (NumberFormatException e) {
89 new GigiApiException("Invalid value.").format(out, Page.getLanguage(req));
96 protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
97 vars.put("exNames", new ArrayIterable<Name>(target.getNames()) {
99 Name preferred = target.getPreferredName();
102 public void apply(Name t, Language l, Map<String, Object> vars) {
103 if (t.equals(preferred)) {
104 vars.put("preferred", " disabled");
105 vars.put("deprecated", " disabled");
107 if (t.isDeprecated()) {
108 vars.put("deprecated", " disabled");
110 vars.put("deprecated", "");
112 vars.put("preferred", "");
115 vars.put("id", t.getId());
116 vars.put("npoints", Integer.toString(t.getAssurancePoints()));
120 vars.put("name", ni);
121 names.output(out, l, vars);
122 if (target.getReceivedAssurances().length == 0) {
124 templ.output(out, l, vars);
126 vars.put("DoB", target.getDoB());
127 assured.output(out, l, vars);