]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/output/DateSelector.java
UPD: Details display assured
[gigi.git] / src / org / cacert / gigi / output / DateSelector.java
index 43654b7a9451c2aaf021d9aaee9bc7dc21711fb4..f98ec8fa6993e9e349848c8f40e02f13a827adb6 100644 (file)
@@ -11,6 +11,7 @@ import java.util.TimeZone;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.localisation.Language;
 
 public class DateSelector implements Outputable {
@@ -40,7 +41,15 @@ public class DateSelector implements Outputable {
 
     @Override
     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
-        out.print("<nobr><select name=\"");
+        out.print("<nobr>");
+        outputYear(out);
+        outputMonth(out, l);
+        outputDay(out);
+        out.print("</nobr>");
+    }
+
+    private void outputDay(PrintWriter out) {
+        out.print("<select name=\"");
         out.print(names[0]);
         out.println("\">");
         for (int i = 1; i <= 31; i++) {
@@ -51,6 +60,9 @@ public class DateSelector implements Outputable {
             out.println(">" + i + "</option>");
         }
         out.println("</select>");
+    }
+
+    private void outputMonth(PrintWriter out, Language l) {
         SimpleDateFormat sdf = new SimpleDateFormat("MMMM", l.getLocale());
         out.print("<select name=\"");
         out.print(names[1]);
@@ -65,39 +77,37 @@ public class DateSelector implements Outputable {
             out.println(">" + sdf.format(c.getTime()) + " (" + i + ")</option>");
         }
         out.println("</select>");
+    }
+
+    private void outputYear(PrintWriter out) {
         out.print("<input type=\"text\" name=\"");
         out.print(names[2]);
         out.print("\" value=\"");
         if (year != 0) {
             out.print(year);
         }
-        out.print("\" size=\"4\" autocomplete=\"off\"></nobr>");
+        out.print("\" size=\"4\" autocomplete=\"off\">");
     }
 
-    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);
-        }
+    public void update(HttpServletRequest r) throws GigiApiException {
+        try {
+            String dayS = r.getParameter(names[0]);
+            if (dayS != null) {
+                day = Integer.parseInt(dayS);
+            }
 
-        String yearS = r.getParameter(names[2]);
-        if (yearS != null) {
-            year = parseIntSafe(yearS);
-        }
-    }
+            String monthS = r.getParameter(names[1]);
+            if (monthS != null) {
+                month = Integer.parseInt(monthS);
+            }
 
-    private int parseIntSafe(String dayS) {
-        try {
-            return Integer.parseInt(dayS);
+            String yearS = r.getParameter(names[2]);
+            if (yearS != null) {
+                year = Integer.parseInt(yearS);
+            }
         } catch (NumberFormatException e) {
-
+            throw new GigiApiException("Unparsable date.");
         }
-        return 0;
     }
 
     public boolean isValid() {