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