X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2FCache.java;h=dcbde74ea4b053ae512c7ed9149114af5f4aa77e;hb=530d4062471346d6ececf76d74a0358c91323998;hp=60cd74e961514c5af5957d76018dde0f098f707d;hpb=8816d2f781492532ecdbdee8241f53017b44daba;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/Cache.java b/src/be/nikiroo/utils/Cache.java index 60cd74e..dcbde74 100644 --- a/src/be/nikiroo/utils/Cache.java +++ b/src/be/nikiroo/utils/Cache.java @@ -19,6 +19,7 @@ public class Cache { private File dir; private long tooOldChanging; private long tooOldStable; + private TraceHandler tracer = new TraceHandler(); /** * Create a new {@link Cache} object. @@ -53,6 +54,25 @@ public class Cache { } } + /** + * The traces handler for this {@link Cache}. + * + * @return the traces handler + */ + public TraceHandler getTraceHandler() { + return tracer; + } + + /** + * The traces handler for this {@link Cache}. + * + * @param tracer + * the new traces handler + */ + public void setTraceHandler(TraceHandler tracer) { + this.tracer = tracer; + } + /** * Check the resource to see if it is in the cache. * @@ -91,24 +111,6 @@ public class Cache { return clean(onlyOld, dir); } - /** - * Trace information (info/error) generated by this class. - *

- * You can override it if you don't want the default sysout/syserr. - * - * @param message - * the message - * @param error - * TRUE for error messages, FALSE for information messages - */ - protected void trace(String message, boolean error) { - if (error) { - System.err.println(message); - } else { - System.out.println(message); - } - } - /** * Clean the cache (delete the cached items) in the given cache directory. * @@ -130,8 +132,8 @@ public class Cache { if (file.delete()) { num++; } else { - trace("Cannot delete temporary file: " - + file.getAbsolutePath(), true); + tracer.error("Cannot delete temporary file: " + + file.getAbsolutePath()); } } } @@ -152,9 +154,6 @@ public class Cache { * used to check if the file is too old to keep or not * * @return the opened resource if found, NULL if not - * - * @throws IOException - * in case of I/O error */ public InputStream load(String uniqueID, boolean allowTooOld, boolean stable) { return load(getCached(uniqueID), allowTooOld, stable); @@ -172,19 +171,15 @@ public class Cache { * used to check if the file is too old to keep or not * * @return the opened resource if found, NULL if not - * - * @throws IOException - * in case of I/O error */ - public InputStream load(URL url, boolean allowTooOld, boolean stable) - throws IOException { + public InputStream load(URL url, boolean allowTooOld, boolean stable) { return load(getCached(url), allowTooOld, stable); } /** * Open a resource from the cache if it exists. * - * @param url + * @param cached * the resource to open * @param allowTooOld * allow files even if they are considered too old @@ -193,9 +188,6 @@ public class Cache { * used to check if the file is too old to keep or not * * @return the opened resource if found, NULL if not - * - * @throws IOException - * in case of I/O error */ private InputStream load(File cached, boolean allowTooOld, boolean stable) { if (cached.exists() && (allowTooOld || !isOld(cached, stable))) { @@ -236,6 +228,8 @@ public class Cache { * @param url * the {@link URL} used to locate the cached resource * + * @return the actual cache file + * * @throws IOException * in case of I/O error */ @@ -252,6 +246,8 @@ public class Cache { * @param cached * the cached {@link File} to save to * + * @return the actual cache file + * * @throws IOException * in case of I/O error */ @@ -260,6 +256,32 @@ public class Cache { return cached; } + /** + * Remove the given resource from the cache. + * + * @param uniqueID + * a unique ID used to locate the cached resource + * + * @return TRUE if it was removed + */ + public boolean remove(String uniqueID) { + File cached = getCached(uniqueID); + return cached.delete(); + } + + /** + * Remove the given resource from the cache. + * + * @param url + * the {@link URL} used to locate the cached resource + * + * @return TRUE if it was removed + */ + public boolean remove(URL url) { + File cached = getCached(url); + return cached.delete(); + } + /** * Check if the {@link File} is too old according to * {@link Cache#tooOldChanging}. @@ -284,8 +306,8 @@ public class Cache { long time = new Date().getTime() - file.lastModified(); if (time < 0) { - trace("Timestamp in the future for file: " + file.getAbsolutePath(), - true); + tracer.error("Timestamp in the future for file: " + + file.getAbsolutePath()); } return time < 0 || time > max;