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;
7 import java.util.GregorianCalendar;
10 import javax.servlet.http.HttpServletRequest;
12 import org.cacert.gigi.Language;
14 public class DateSelector implements Outputable {
16 public DateSelector(String day, String month, String year) {
17 this.names = new String[]{day, month, year};
23 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
24 out.print("<nobr><select name=\"");
27 for (int i = 1; i <= 31; i++) {
30 out.print(" selected=\"selected\"");
32 out.println(">" + i + "</option>");
34 out.println("</select>");
35 SimpleDateFormat sdf = new SimpleDateFormat("MMMM", l.getLocale());
36 out.print("<select name=\"");
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 + "'");
44 out.print(" selected=\"selected\"");
46 out.println(">" + sdf.format(c.getTime()) + " (" + i + ")</option>");
48 out.println("</select>");
49 out.print("<input type=\"text\" name=\"");
51 out.print("\" value=\"");
55 out.print("\" size=\"4\" autocomplete=\"off\"></nobr>");
58 public void update(HttpServletRequest r) {
59 String dayS = r.getParameter(names[0]);
61 day = parseIntSafe(dayS);
64 String monthS = r.getParameter(names[1]);
66 month = parseIntSafe(monthS);
69 String yearS = r.getParameter(names[2]);
71 year = parseIntSafe(yearS);
74 private int parseIntSafe(String dayS) {
76 return Integer.parseInt(dayS);
77 } catch (NumberFormatException e) {
82 public boolean isValid() {
83 if (!(1900 < year && 1 <= month && month <= 12 && 1 <= day && day <= 32)) {
86 return true; // TODO checkdate
90 public String toString() {
91 return "DateSelector [names=" + Arrays.toString(names) + ", day=" + day
92 + ", month=" + month + ", year=" + year + "]";
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());