1 package org.cacert.gigi.output;
3 import java.io.PrintWriter;
4 import java.text.SimpleDateFormat;
5 import java.util.Arrays;
6 import java.util.Calendar;
9 import javax.servlet.http.HttpServletRequest;
11 import org.cacert.gigi.Language;
13 public class DateSelector implements Outputable {
15 public DateSelector(String day, String month, String year) {
16 this.names = new String[]{day, month, year};
22 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
23 out.print("<nobr><select name=\"");
26 for (int i = 1; i <= 31; i++) {
29 out.print(" selected=\"selected\"");
31 out.println(">" + i + "</option>");
33 out.println("</select>");
34 SimpleDateFormat sdf = new SimpleDateFormat("MMMM", l.getLocale());
35 out.print("<select name=\"");
38 Calendar c = sdf.getCalendar();
39 for (int i = 1; i <= 12; i++) {
40 c.set(Calendar.MONTH, i - 1);
41 out.print("<option value='" + i + "'");
43 out.print(" selected=\"selected\"");
45 out.println(">" + sdf.format(c.getTime()) + " (" + i + ")</option>");
47 out.println("</select>");
48 out.print("<input type=\"text\" name=\"");
50 out.print("\" value=\"");
54 out.print("\" size=\"4\" autocomplete=\"off\"></nobr>");
57 public void update(HttpServletRequest r) {
58 String dayS = r.getParameter(names[0]);
60 day = parseIntSafe(dayS);
63 String monthS = r.getParameter(names[1]);
65 month = parseIntSafe(monthS);
68 String yearS = r.getParameter(names[2]);
70 year = parseIntSafe(yearS);
73 private int parseIntSafe(String dayS) {
75 return Integer.parseInt(dayS);
76 } catch (NumberFormatException e) {
81 public boolean isValid() {
82 if (!(1900 < year && 1 <= month && month <= 12 && 1 <= day && day <= 32)) {
85 return true; // TODO checkdate
89 public String toString() {
90 return "DateSelector [names=" + Arrays.toString(names) + ", day=" + day
91 + ", month=" + month + ", year=" + year + "]";