From 577348ca263421c5df84f2bbbe2d62275572a102 Mon Sep 17 00:00:00 2001 From: Knut Forkalsrud Date: Fri, 28 Nov 2014 19:45:24 -0800 Subject: [PATCH] Adding debug extension to see cache entries. --- .../forkalsrud/album/exif/DirectoryEntry.java | 7 ++++- .../forkalsrud/album/web/AlbumServlet.java | 28 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/forkalsrud/album/exif/DirectoryEntry.java b/src/main/java/org/forkalsrud/album/exif/DirectoryEntry.java index cb9488a..47cd769 100644 --- a/src/main/java/org/forkalsrud/album/exif/DirectoryEntry.java +++ b/src/main/java/org/forkalsrud/album/exif/DirectoryEntry.java @@ -23,7 +23,6 @@ import org.forkalsrud.album.db.DirectoryProps; */ public class DirectoryEntry extends EntryWithChildren { - final static String CACHE_FILE = "cache.properties"; final static String OVERRIDE_FILE = "album.properties"; public interface ServiceApi { @@ -122,6 +121,7 @@ public class DirectoryEntry extends EntryWithChildren { DirectoryProps props = services.getMetadataGenerator().generate(file); services.getDirectoryDatabase().store(file.getAbsolutePath(), props); + cache = props; return props; } @@ -214,4 +214,9 @@ public class DirectoryEntry extends EntryWithChildren { public boolean groupByYear() { return parent == null; } + + + public DirectoryProps getCache() { + return cache; + } } diff --git a/src/main/java/org/forkalsrud/album/web/AlbumServlet.java b/src/main/java/org/forkalsrud/album/web/AlbumServlet.java index 484b05d..b559f3d 100644 --- a/src/main/java/org/forkalsrud/album/web/AlbumServlet.java +++ b/src/main/java/org/forkalsrud/album/web/AlbumServlet.java @@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.log4j.PropertyConfigurator; import org.forkalsrud.album.db.DirectoryDatabase; +import org.forkalsrud.album.db.DirectoryProps; import org.forkalsrud.album.db.MovieDatabase; import org.forkalsrud.album.db.ThumbnailDatabase; import org.forkalsrud.album.exif.DirectoryEntry; @@ -277,6 +278,12 @@ public class AlbumServlet return; } + if (pathInfo.endsWith(".cache")) { + pathInfo = pathInfo.substring(0, pathInfo.length() - ".cache".length()); + handleCache(req, res, (DirectoryEntry)resolveEntry(pathInfo)); + return; + } + File file = new File(base, pathInfo); if (!file.canRead()) { res.setStatus(HttpServletResponse.SC_FORBIDDEN); @@ -449,6 +456,27 @@ public class AlbumServlet return in == null ? "null" : "\"" + in.replace("\\", "\\\\").replace("\"", "\\\"").replace("\n", "\\n") + "\""; } + void handleCache(HttpServletRequest req, HttpServletResponse res, DirectoryEntry entry) { + if (entry == null) { + res.setStatus(HttpServletResponse.SC_NOT_FOUND); + return; + } + DirectoryProps props = entry.getCache(); + if (props == null) { + props = new DirectoryProps(); + } + try { + res.setContentType("text/plain"); + res.setCharacterEncoding("UTF-8"); + PrintWriter out = res.getWriter(); + out.println("# cache timestamp: " + props.getTimestamp()); + out.println("# dir timestamp: " + entry.getPath().lastModified()); + out.println(); + props.store(out, ""); + } catch (Exception e) { + throw new RuntimeException("sadness", e); + } + } void handleEdit(HttpServletRequest req, HttpServletResponse res, FileEntry entry) throws Exception { String value = req.getParameter("value"); if (value != null) {