]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/mail/MailManagementForm.java
Convert Pinglog into form.
[gigi.git] / src / org / cacert / gigi / pages / account / mail / MailManagementForm.java
1 package org.cacert.gigi.pages.account.mail;
2
3 import java.io.PrintWriter;
4 import java.util.Map;
5
6 import javax.servlet.http.HttpServletRequest;
7
8 import org.cacert.gigi.GigiApiException;
9 import org.cacert.gigi.dbObjects.EmailAddress;
10 import org.cacert.gigi.dbObjects.User;
11 import org.cacert.gigi.localisation.Language;
12 import org.cacert.gigi.output.Form;
13 import org.cacert.gigi.output.template.IterableDataset;
14 import org.cacert.gigi.output.template.Template;
15 import org.cacert.gigi.pages.Page;
16 import org.cacert.gigi.pages.account.ChangePasswordPage;
17
18 public class MailManagementForm extends Form {
19
20     private static Template t;
21
22     private User target;
23     static {
24         t = new Template(ChangePasswordPage.class.getResource("MailManagementForm.templ"));
25     }
26
27     public MailManagementForm(HttpServletRequest hsr, User target) {
28         super(hsr);
29         this.target = target;
30     }
31
32     @Override
33     public boolean submit(PrintWriter out, HttpServletRequest req) {
34         if (req.getParameter("makedefault") != null) {
35             try {
36                 String mailid = req.getParameter("emailid");
37                 if (mailid == null) {
38                     return false;
39                 }
40                 target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(mailid.trim())));
41             } catch (GigiApiException e) {
42                 e.format(out, Page.getLanguage(req));
43                 return false;
44             }
45             return true;
46         }
47         if (req.getParameter("delete") != null) {
48             String[] toDel = req.getParameterValues("delid[]");
49             if (toDel == null) {
50                 return false;
51             }
52             for (int i = 0; i < toDel.length; i++) {
53                 try {
54                     target.deleteEmail(EmailAddress.getById(Integer.parseInt(toDel[i].trim())));
55                 } catch (GigiApiException e) {
56                     e.format(out, Page.getLanguage(req));
57                     return false;
58                 }
59             }
60             return true;
61
62         }
63         return false;
64     }
65
66     @Override
67     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
68         final EmailAddress[] emails = target.getEmails();
69         IterableDataset ds = new IterableDataset() {
70
71             private int point = 0;
72
73             @Override
74             public boolean next(Language l, Map<String, Object> vars) {
75                 if (point >= emails.length) {
76                     return false;
77                 }
78                 EmailAddress emailAddress = emails[point];
79                 int mailID = emailAddress.getId();
80                 vars.put("id", mailID);
81                 if (emailAddress.getAddress().equals(target.getEmail())) {
82                     vars.put("checked", "checked");
83                 } else {
84                     vars.put("checked", "");
85                 }
86                 if (emailAddress.isVerified()) {
87                     vars.put("verification", "Verified");
88                 } else {
89                     vars.put("verification", "Unverified");
90                 }
91                 if (target.getEmail().equals(emailAddress.getAddress())) {
92                     vars.put("delete", "N/A");
93                 } else {
94                     vars.put("delete", "<input type=\"checkbox\" name=\"delid[]\" value=\"" + mailID + "\"/>");
95                 }
96                 vars.put("address", emailAddress.getAddress());
97                 point++;
98                 return true;
99             }
100
101         };
102         vars.put("emails", ds);
103         t.output(out, l, vars);
104     }
105 }