]> WPIA git - gigi.git/blob - src/org/cacert/gigi/output/DateSelector.java
cf42c220abc782dab32240a4f3846f6287af1dfc
[gigi.git] / src / org / cacert / gigi / output / DateSelector.java
1 package org.cacert.gigi.output;
2
3 import java.io.PrintWriter;
4 import java.text.SimpleDateFormat;
5 import java.util.Arrays;
6 import java.util.Calendar;
7 import java.util.GregorianCalendar;
8 import java.util.Map;
9
10 import javax.servlet.http.HttpServletRequest;
11
12 import org.cacert.gigi.localisation.Language;
13
14 public class DateSelector implements Outputable {
15
16     String[] names;
17
18     public DateSelector(String day, String month, String year) {
19         this.names = new String[] {
20                 day, month, year
21         };
22     }
23
24     int day;
25
26     int month;
27
28     int year;
29
30     @Override
31     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
32         out.print("<nobr><select name=\"");
33         out.print(names[0]);
34         out.println("\">");
35         for (int i = 1; i <= 31; i++) {
36             out.print("<option");
37             if (i == day) {
38                 out.print(" selected=\"selected\"");
39             }
40             out.println(">" + i + "</option>");
41         }
42         out.println("</select>");
43         SimpleDateFormat sdf = new SimpleDateFormat("MMMM", l.getLocale());
44         out.print("<select name=\"");
45         out.print(names[1]);
46         out.println("\">");
47         Calendar c = sdf.getCalendar();
48         for (int i = 1; i <= 12; i++) {
49             c.set(Calendar.MONTH, i - 1);
50             out.print("<option value='" + i + "'");
51             if (i == month) {
52                 out.print(" selected=\"selected\"");
53             }
54             out.println(">" + sdf.format(c.getTime()) + " (" + i + ")</option>");
55         }
56         out.println("</select>");
57         out.print("<input type=\"text\" name=\"");
58         out.print(names[2]);
59         out.print("\" value=\"");
60         if (year != 0) {
61             out.print(year);
62         }
63         out.print("\" size=\"4\" autocomplete=\"off\"></nobr>");
64     }
65
66     public void update(HttpServletRequest r) {
67         String dayS = r.getParameter(names[0]);
68         if (dayS != null) {
69             day = parseIntSafe(dayS);
70         }
71
72         String monthS = r.getParameter(names[1]);
73         if (monthS != null) {
74             month = parseIntSafe(monthS);
75         }
76
77         String yearS = r.getParameter(names[2]);
78         if (yearS != null) {
79             year = parseIntSafe(yearS);
80         }
81     }
82
83     private int parseIntSafe(String dayS) {
84         try {
85             return Integer.parseInt(dayS);
86         } catch (NumberFormatException e) {
87
88         }
89         return 0;
90     }
91
92     public boolean isValid() {
93         if ( !(1900 < year && 1 <= month && month <= 12 && 1 <= day && day <= 32)) {
94             return false;
95         }
96         return true; // TODO checkdate
97     }
98
99     @Override
100     public String toString() {
101         return "DateSelector [names=" + Arrays.toString(names) + ", day=" + day + ", month=" + month + ", year=" + year + "]";
102     }
103
104     public java.sql.Date getDate() {
105         Calendar gc = GregorianCalendar.getInstance();
106         gc.set(year, month - 1, day);
107         return new java.sql.Date(gc.getTime().getTime());
108     }
109
110 }