X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Foutput%2FCertificateValiditySelector.java;fp=src%2Forg%2Fcacert%2Fgigi%2Foutput%2FCertificateValiditySelector.java;h=a58ca87302424a1769f896abb22eff2fafaea530;hp=95eaa09e53b6d970d68f5bfa0c71ae74383b6106;hb=0b0af7389db0efd9cc72f74fb69f4a2a304563ae;hpb=25310a5d257de7c257e270b5ce467b9ac42a3498 diff --git a/src/org/cacert/gigi/output/CertificateValiditySelector.java b/src/org/cacert/gigi/output/CertificateValiditySelector.java index 95eaa09e..a58ca873 100644 --- a/src/org/cacert/gigi/output/CertificateValiditySelector.java +++ b/src/org/cacert/gigi/output/CertificateValiditySelector.java @@ -3,31 +3,40 @@ package org.cacert.gigi.output; import java.io.PrintWriter; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; +import java.sql.Date; import java.util.Map; import java.util.TimeZone; import javax.servlet.http.HttpServletRequest; +import org.cacert.gigi.GigiApiException; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.util.HTMLEncoder; public class CertificateValiditySelector implements Outputable { - SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); + private static ThreadLocal fmt = new ThreadLocal<>(); private static final int DAY = 1000 * 60 * 60 * 24; - Date from; + private Date from; - String val; + private String val = "2y"; public CertificateValiditySelector() { - fmt.setTimeZone(TimeZone.getTimeZone("UTC")); } + public static SimpleDateFormat getDateFormat() { + SimpleDateFormat local = fmt.get(); + if (local == null) { + local = new SimpleDateFormat("yyyy-MM-dd"); + local.setTimeZone(TimeZone.getTimeZone("UTC")); + fmt.set(local); + } + return local; + } + @Override public void output(PrintWriter out, Language l, Map vars) { out.print(""); - out.print(""); - - out.print(""); - - out.print(""); - out.println(""); + out.print(""); if (from == null) { return; } - // debug dummy output - Calendar c = GregorianCalendar.getInstance(); - c.setTime(from); - if ("6m".equals(val)) { - c.add(Calendar.MONTH, 6); - } else if ("1y".equals(val)) { - c.add(Calendar.YEAR, 1); - } else if ("2y".equals(val)) { - c.add(Calendar.YEAR, 2); - } - out.println("From: " + fmt.format(from)); - out.println("To: " + fmt.format(c.getTime())); + } private long getCurrentDayBase() { @@ -97,19 +79,71 @@ public class CertificateValiditySelector implements Outputable { return base; } - public void update(HttpServletRequest r) { + public void update(HttpServletRequest r) throws GigiApiException { String from = r.getParameter("validFrom"); + + GigiApiException gae = new GigiApiException(); + try { + saveStartDate(from); + } catch (GigiApiException e) { + gae.mergeInto(e); + } + try { + String validity = r.getParameter("validity"); + if (validity != null) { + checkValidityLength(validity); + val = validity; + } + } catch (GigiApiException e) { + gae.mergeInto(e); + } + if ( !gae.isEmpty()) { + throw gae; + } + + } + + public static void checkValidityLength(String newval) throws GigiApiException { + if (newval.endsWith("y") || newval.endsWith("m")) { + if (newval.length() > 10) { // for database + throw new GigiApiException("The validity interval entered is invalid."); + } + String num = newval.substring(0, newval.length() - 1); + try { + int len = Integer.parseInt(num); + if (len <= 0) { + throw new GigiApiException("The validity interval entered is invalid."); + } + } catch (NumberFormatException e) { + throw new GigiApiException("The validity interval entered is invalid."); + } + } else { + try { + getDateFormat().parse(newval); + } catch (ParseException e) { + throw new GigiApiException("The validity interval entered is invalid."); + } + } + } + + private void saveStartDate(String from) throws GigiApiException { if (from == null || "now".equals(from)) { this.from = null; } else { try { - this.from = fmt.parse(from); + this.from = new Date(getDateFormat().parse(from).getTime()); } catch (ParseException e) { - e.printStackTrace(); + throw new GigiApiException("The validity start date entered is invalid."); } } - val = r.getParameter("validity"); + } + + public Date getFrom() { + return from; + } + public String getTo() { + return val; } }