]> WPIA git - gigi.git/blob - src/org/cacert/gigi/output/CertificateValiditySelector.java
Adding a form element for selecting the certificate-valid-period.
[gigi.git] / src / org / cacert / gigi / output / CertificateValiditySelector.java
1 package org.cacert.gigi.output;
2
3 import java.io.PrintWriter;
4 import java.text.ParseException;
5 import java.text.SimpleDateFormat;
6 import java.util.Calendar;
7 import java.util.Date;
8 import java.util.GregorianCalendar;
9 import java.util.Map;
10 import java.util.TimeZone;
11
12 import javax.servlet.http.HttpServletRequest;
13
14 import org.cacert.gigi.localisation.Language;
15
16 public class CertificateValiditySelector implements Outputable {
17
18     SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
19
20     private static final int DAY = 1000 * 60 * 60 * 24;
21
22     Date from;
23
24     String val;
25
26     public CertificateValiditySelector() {
27         fmt.setTimeZone(TimeZone.getTimeZone("UTC"));
28
29     }
30
31     @Override
32     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
33         out.print("<select name='validFrom'><option value='now'");
34         if (from == null) {
35             out.print(" selected='selected'");
36         }
37         out.print(">");
38         out.print(l.getTranslation("now"));
39         out.print("</option>");
40         long base = getCurrentDayBase();
41         for (int i = 0; i < 14; i++) {
42             long date = base + DAY * i;
43             String d = fmt.format(new Date(date));
44             out.print("<option value='");
45             out.print(d);
46             out.print("'");
47             if (from != null && from.getTime() == date) {
48                 out.print(" selected='selected'");
49             }
50             out.print(">");
51             out.print(d);
52             out.println("</option>");
53         }
54         out.println("</select>");
55
56         out.print("<select name='validity'>");
57         out.print("<option value='6m'");
58         if ("0.5m".equals(val)) {
59             out.print(" selected='selected'");
60         }
61         out.println(">6 months</option>");
62
63         out.print("<option value='1y'");
64         if ("1y".equals(val)) {
65             out.print(" selected='selected'");
66         }
67         out.println(">1 year</option>");
68
69         out.print("<option value='2y'");
70         if ("2y".equals(val)) {
71             out.print(" selected='selected'");
72         }
73         out.println(">2 years</option>");
74         out.println("</select>");
75
76         if (from == null) {
77             return;
78         }
79         // debug dummy output
80         Calendar c = GregorianCalendar.getInstance();
81         c.setTime(from);
82         if ("6m".equals(val)) {
83             c.add(Calendar.MONTH, 6);
84         } else if ("1y".equals(val)) {
85             c.add(Calendar.YEAR, 1);
86         } else if ("2y".equals(val)) {
87             c.add(Calendar.YEAR, 2);
88         }
89         out.println("From: " + fmt.format(from));
90         out.println("To: " + fmt.format(c.getTime()));
91     }
92
93     private long getCurrentDayBase() {
94         long base = System.currentTimeMillis();
95         base -= base % DAY;
96         base += DAY;
97         return base;
98     }
99
100     public void update(HttpServletRequest r) {
101         String from = r.getParameter("validFrom");
102         if (from == null || "now".equals(from)) {
103             this.from = null;
104         } else {
105             try {
106                 this.from = fmt.parse(from);
107             } catch (ParseException e) {
108                 e.printStackTrace();
109             }
110         }
111         val = r.getParameter("validity");
112
113     }
114
115 }