<%@ page import="java.io.*, java.util.*, java.util.regex.*, java.text.*" %> <%! class DirFilter implements FilenameFilter { private Pattern pattern; public DirFilter(String regex) { pattern = Pattern.compile(regex); } public boolean accept(File dir, String name) { // Strip path information, search for regex: return pattern.matcher(new File(name).getName()).matches(); } } class DateComparator implements Comparator { public int compare(Object o1, Object o2) { File f1 = (File) o1; File f2 = (File) o2; Pattern p = Pattern.compile("\\d{4}-\\d{2}-\\d{2}"); Matcher m1 = p.matcher(f1.getName()); Matcher m2 = p.matcher(f2.getName()); DateFormat df = DateFormat.getDateInstance(); Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); try { cal1.setTime(df.parse(m1.group())); cal2.setTime(df.parse(m2.group())); } catch (Exception e) {} return cal1.before(cal2) ? -1 : 1; } } %> PDF <% String fn = request.getParameter("pdf"); String lang = request.getParameter("lang"); if (lang == null) lang = "en"; lang = lang.compareToIgnoreCase("fr") != 0 ? "_e" : "_f"; if (fn == null) return; String filter = fn +"_\\d{4}-\\d{2}-\\d{2}"+ lang +".pdf"; File curPage = new File(request.getSession().getServletContext().getRealPath(request.getServletPath())); File dir = curPage.getParentFile(); File[] list = dir.listFiles(new DirFilter(filter)); Arrays.sort(list, new DateComparator()); // the_playbook_\\d{4}-\\d{2}-\\d{2}_e.pdf /*for (int i=0; i"); }*/ if (list.length > 0) { //out.println("language: " + lang); //out.println("Here's the latest PDF you requested: " + list[0].getName()); pageContext.forward(list[0].getName()); } else { %>

The following PDF cannot be found:

<%=dir%>/<%=fn%>_yyyy-mm-dd<%=lang%>.pdf
<% } %>