]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/mail/MailManagementForm.java
upd: use a more strict pattern for handling forms
[gigi.git] / src / org / cacert / gigi / pages / account / mail / MailManagementForm.java
index 9be2bf528132044ed4132b331a39631b5fa3a554..2287a015fd533ba6706daeaef1e387b345731fda 100644 (file)
@@ -3,7 +3,6 @@ package org.cacert.gigi.pages.account.mail;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Map;
-import java.util.Map.Entry;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -18,12 +17,9 @@ import org.cacert.gigi.pages.Page;
 
 public class MailManagementForm extends Form {
 
-    private static Template t;
+    private static final Template t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
 
     private User target;
-    static {
-        t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
-    }
 
     public MailManagementForm(HttpServletRequest hsr, User target) {
         super(hsr);
@@ -31,30 +27,20 @@ public class MailManagementForm extends Form {
     }
 
     @Override
-    public boolean submit(PrintWriter out, HttpServletRequest req) {
-        Map<String, String[]> map = req.getParameterMap();
+    public boolean submit(HttpServletRequest req) throws GigiApiException {
         try {
-            for (Entry<String, String[]> e : map.entrySet()) {
-                String k = e.getKey();
-                String[] p = k.split(":", 2);
-                if (p[0].equals("default")) {
-                    target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(p[1])));
-                }
-                if (p[0].equals("delete")) {
-                    target.deleteEmail(EmailAddress.getById(Integer.parseInt(p[1])));
-                }
-                if (p[0].equals("reping")) {
-                    EmailAddress.getById(Integer.parseInt(p[1])).requestReping(Page.getLanguage(req));
-                }
+            String d;
+            if ((d = req.getParameter("default")) != null) {
+                target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(d)));
+            } else if ((d = req.getParameter("delete")) != null) {
+                target.deleteEmail(EmailAddress.getById(Integer.parseInt(d)));
+            } else if ((d = req.getParameter("reping")) != null) {
+                EmailAddress.getById(Integer.parseInt(d)).requestReping(Page.getLanguage(req));
             }
-        } catch (GigiApiException e) {
-            e.format(out, Page.getLanguage(req));
-            return false;
+            return true;
         } catch (IOException e1) {
-            new GigiApiException("Error while doing reping.").format(out, Page.getLanguage(req));
-            return false;
+            throw new GigiApiException("Error while doing reping.");
         }
-        return true;
     }
 
     @Override
@@ -74,12 +60,17 @@ public class MailManagementForm extends Form {
                 vars.put("id", mailID);
                 if (emailAddress.getAddress().equals(target.getEmail())) {
                     vars.put("default", " disabled");
+                    vars.put("deletable", " disabled");
                 } else {
+                    vars.put("deletable", "");
                     vars.put("default", "");
                 }
                 if (emailAddress.isVerified()) {
                     vars.put("verification", l.getTranslation("Verified"));
                 } else {
+                    // only verified emails may become the default email
+                    // address.
+                    vars.put("default", " disabled");
                     vars.put("verification", l.getTranslation("Unverified"));
                 }
                 vars.put("last_verification", emailAddress.getLastPing(true));