]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/domain/DomainPinglogForm.java
fix: ResultSet.getDate is often wrong as it fetches day-precision times
[gigi.git] / src / org / cacert / gigi / pages / account / domain / DomainPinglogForm.java
1 package org.cacert.gigi.pages.account.domain;
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.CertificateOwner;
10 import org.cacert.gigi.dbObjects.Domain;
11 import org.cacert.gigi.dbObjects.DomainPingConfiguration;
12 import org.cacert.gigi.dbObjects.DomainPingExecution;
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.LoginPage;
18
19 public class DomainPinglogForm extends Form {
20
21     private static final Template t = new Template(DomainPinglogForm.class.getResource("DomainPinglogForm.templ"));
22
23     Domain target;
24
25     public DomainPinglogForm(HttpServletRequest hsr, Domain target) {
26         super(hsr);
27         this.target = target;
28     }
29
30     @Override
31     public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
32         CertificateOwner u = LoginPage.getAuthorizationContext(req).getTarget();
33
34         int i = Integer.parseInt(req.getPathInfo().substring(DomainOverview.PATH.length() + 1));
35         Domain d = Domain.getById(i);
36         if (u.getId() != d.getOwner().getId()) {
37             throw new GigiApiException("Error, owner mismatch.");
38         }
39         int reping = Integer.parseInt(req.getParameter("configId"));
40         DomainPingConfiguration dpc = DomainPingConfiguration.getById(reping);
41         if (dpc.getTarget() != d) {
42             throw new GigiApiException("Error, target mismatch.");
43         }
44         dpc.requestReping();
45         return new RedirectResult(req.getPathInfo());
46     }
47
48     @Override
49     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
50         final DomainPingExecution[] pings;
51         try {
52             pings = target.getPings();
53         } catch (GigiApiException e) {
54             e.format(out, l);
55             return;
56         }
57         vars.put("domainname", target.getSuffix());
58         vars.put("pings", new IterableDataset() {
59
60             int counter = 0;
61
62             @Override
63             public boolean next(Language l, Map<String, Object> vars) {
64                 if (counter >= pings.length) {
65                     return false;
66                 }
67                 vars.put("state", pings[counter].getState());
68                 vars.put("type", pings[counter].getType());
69                 vars.put("config", pings[counter].getInfo());
70                 vars.put("date", pings[counter].getDate());
71                 String ping3 = pings[counter].getResult();
72                 if (ping3 == null) {
73                     vars.put("result", "");
74                 } else {
75                     vars.put("result", ping3);
76                 }
77                 DomainPingConfiguration dpc = pings[counter].getConfig();
78                 if (dpc != null) {
79                     vars.put("configId", Integer.toString(dpc.getId()));
80                 }
81                 counter++;
82                 return true;
83             }
84         });
85         t.output(out, l, vars);
86     }
87 }