1 package org.cacert.gigi.pages.account.mail;
3 import java.io.IOException;
4 import java.io.PrintWriter;
6 import java.util.Map.Entry;
8 import javax.servlet.http.HttpServletRequest;
10 import org.cacert.gigi.GigiApiException;
11 import org.cacert.gigi.dbObjects.EmailAddress;
12 import org.cacert.gigi.dbObjects.User;
13 import org.cacert.gigi.localisation.Language;
14 import org.cacert.gigi.output.template.Form;
15 import org.cacert.gigi.output.template.IterableDataset;
16 import org.cacert.gigi.output.template.Template;
17 import org.cacert.gigi.pages.Page;
19 public class MailManagementForm extends Form {
21 private static Template t;
25 t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
28 public MailManagementForm(HttpServletRequest hsr, User target) {
34 public boolean submit(PrintWriter out, HttpServletRequest req) {
35 Map<String, String[]> map = req.getParameterMap();
37 for (Entry<String, String[]> e : map.entrySet()) {
38 String k = e.getKey();
39 String[] p = k.split(":", 2);
40 if (p[0].equals("default")) {
41 target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(p[1])));
43 if (p[0].equals("delete")) {
44 target.deleteEmail(EmailAddress.getById(Integer.parseInt(p[1])));
46 if (p[0].equals("reping")) {
47 EmailAddress.getById(Integer.parseInt(p[1])).requestReping(Page.getLanguage(req));
50 } catch (GigiApiException e) {
51 e.format(out, Page.getLanguage(req));
53 } catch (IOException e1) {
54 new GigiApiException("Error while doing reping.").format(out, Page.getLanguage(req));
61 protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
62 final EmailAddress[] emails = target.getEmails();
63 IterableDataset ds = new IterableDataset() {
65 private int point = 0;
68 public boolean next(Language l, Map<String, Object> vars) {
69 if (point >= emails.length) {
72 EmailAddress emailAddress = emails[point];
73 int mailID = emailAddress.getId();
74 vars.put("id", mailID);
75 if (emailAddress.getAddress().equals(target.getEmail())) {
76 vars.put("default", " disabled");
78 vars.put("default", "");
80 if (emailAddress.isVerified()) {
81 vars.put("verification", l.getTranslation("Verified"));
83 vars.put("verification", l.getTranslation("Unverified"));
85 if (target.getEmail().equals(emailAddress.getAddress())) {
86 vars.put("delete", "N/A");
88 vars.put("delete", "<input type=\"checkbox\" name=\"delid[]\" value=\"" + mailID + "\"/>");
90 vars.put("address", emailAddress.getAddress());
96 vars.put("emails", ds);
97 t.output(out, l, vars);