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