]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/DomainOverview.java
UPD: Factor out PingConfig objects and pingconfig-form.
[gigi.git] / src / org / cacert / gigi / pages / account / DomainOverview.java
1 package org.cacert.gigi.pages.account;
2
3 import java.io.IOException;
4 import java.util.HashMap;
5 import java.util.Map;
6
7 import javax.servlet.http.HttpServletRequest;
8 import javax.servlet.http.HttpServletResponse;
9
10 import org.cacert.gigi.GigiApiException;
11 import org.cacert.gigi.dbObjects.Domain;
12 import org.cacert.gigi.dbObjects.Domain.DomainPingExecution;
13 import org.cacert.gigi.dbObjects.DomainPingConfiguration;
14 import org.cacert.gigi.dbObjects.User;
15 import org.cacert.gigi.localisation.Language;
16 import org.cacert.gigi.output.Form;
17 import org.cacert.gigi.output.template.IterableDataset;
18 import org.cacert.gigi.output.template.Template;
19 import org.cacert.gigi.pages.Page;
20
21 public class DomainOverview extends Page {
22
23     public static final String PATH = "/account/domains/";
24
25     private Template domainDetails = new Template(DomainOverview.class.getResource("DomainDetails.templ"));
26
27     public DomainOverview(String title) {
28         super(title);
29     }
30
31     @Override
32     public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
33         User u = getUser(req);
34         String pi = req.getPathInfo();
35         if (pi.length() - PATH.length() > 0) {
36             int i = Integer.parseInt(pi.substring(PATH.length()));
37             Domain d = Domain.getById(i);
38             if (u.getId() != d.getOwner().getId()) {
39                 System.out.println(u.getId());
40                 System.out.println(d.getOwner().getId());
41                 return;
42             }
43             try {
44                 final DomainPingExecution[] pings = d.getPings();
45                 HashMap<String, Object> vars = new HashMap<>();
46                 vars.put("domainname", d.getSuffix());
47                 vars.put("pingconfig", new PingconfigForm(req, d));
48                 vars.put("pings", new IterableDataset() {
49
50                     int counter = 0;
51
52                     @Override
53                     public boolean next(Language l, Map<String, Object> vars) {
54                         if (counter >= pings.length) {
55                             return false;
56                         }
57                         vars.put("state", pings[counter].getState());
58                         vars.put("type", pings[counter].getType());
59                         vars.put("config", pings[counter].getInfo());
60                         String ping3 = pings[counter].getResult();
61                         if (ping3 == null) {
62                             vars.put("result", "");
63                         } else {
64                             vars.put("result", ping3);
65                         }
66                         DomainPingConfiguration dpc = pings[counter].getConfig();
67                         if (dpc != null) {
68                             vars.put("configId", Integer.toString(dpc.getId()));
69                         }
70                         counter++;
71                         return true;
72                     }
73                 });
74                 domainDetails.output(resp.getWriter(), getLanguage(req), vars);
75                 return;
76             } catch (GigiApiException e) {
77                 e.format(resp.getWriter(), getLanguage(req));
78             }
79
80         }
81         try {
82             DomainManagementForm domMan = new DomainManagementForm(req, u);
83             DomainAddForm domAdd = new DomainAddForm(req, u);
84             HashMap<String, Object> vars = new HashMap<>();
85             vars.put("doms", u.getDomains());
86             vars.put("domainman", domMan);
87             vars.put("domainadd", domAdd);
88             getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars);
89         } catch (GigiApiException e) {
90             e.format(resp.getWriter(), getLanguage(req));
91         }
92     }
93
94     @Override
95     public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
96         if (req.getParameter("adddomain") != null) {
97             DomainAddForm f = Form.getForm(req, DomainAddForm.class);
98             if (f.submit(resp.getWriter(), req)) {
99                 resp.sendRedirect(PATH);
100             }
101         } else if (req.getParameter("domdel") != null) {
102             DomainManagementForm f = Form.getForm(req, DomainManagementForm.class);
103             if (f.submit(resp.getWriter(), req)) {
104                 resp.sendRedirect(PATH);
105             }
106         }
107         super.doPost(req, resp);
108     }
109 }