import java.io.PrintWriter;
import java.text.SimpleDateFormat;
+import java.util.Arrays;
import java.util.Calendar;
+import java.util.GregorianCalendar;
import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+
import org.cacert.gigi.Language;
public class DateSelector implements Outputable {
String[] names;
+
public DateSelector(String day, String month, String year) {
- this.names = new String[]{day, month, year};
+ this.names = new String[] { day, month, year };
}
+
int day;
int month;
int year;
+
@Override
public void output(PrintWriter out, Language l, Map<String, Object> vars) {
out.print("<nobr><select name=\"");
}
out.print("\" size=\"4\" autocomplete=\"off\"></nobr>");
}
+
+ public void update(HttpServletRequest r) {
+ String dayS = r.getParameter(names[0]);
+ if (dayS != null) {
+ day = parseIntSafe(dayS);
+ }
+
+ String monthS = r.getParameter(names[1]);
+ if (monthS != null) {
+ month = parseIntSafe(monthS);
+ }
+
+ String yearS = r.getParameter(names[2]);
+ if (yearS != null) {
+ year = parseIntSafe(yearS);
+ }
+ }
+
+ private int parseIntSafe(String dayS) {
+ try {
+ return Integer.parseInt(dayS);
+ } catch (NumberFormatException e) {
+
+ }
+ return 0;
+ }
+
public boolean isValid() {
if (!(1900 < year && 1 <= month && month <= 12 && 1 <= day && day <= 32)) {
return false;
}
return true; // TODO checkdate
}
+
+ @Override
+ public String toString() {
+ return "DateSelector [names=" + Arrays.toString(names) + ", day=" + day + ", month=" + month + ", year=" + year
+ + "]";
+ }
+
+ public java.sql.Date getDate() {
+ Calendar gc = GregorianCalendar.getInstance();
+ gc.set(year, month - 1, day);
+ return new java.sql.Date(gc.getTime().getTime());
+ }
+
}