]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/output/DateSelector.java
UPD: Implicit mail validity check
[gigi.git] / src / org / cacert / gigi / output / DateSelector.java
index ba39b3422442cca72a660c2325979b142a2d0aec..4c162cfc7408f95c69d681be403bfcc86e51366e 100644 (file)
@@ -2,19 +2,26 @@ package org.cacert.gigi.output;
 
 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=\"");
@@ -50,10 +57,50 @@ public class DateSelector implements Outputable {
                }
                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());
+       }
+
 }