X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2FCache.java;h=bba88bb4b48f7e970039002393a72a47d50081cf;hb=e704a41477b85b6bb76dff4181df132176aec112;hp=393f634dc5a2b011f88b5e1103ab26d6293e8641;hpb=d827da2aba3d8b0e4a76426b5a76a9045ca584b2;p=nikiroo-utils.git diff --git a/src/be/nikiroo/utils/Cache.java b/src/be/nikiroo/utils/Cache.java index 393f634..bba88bb 100644 --- a/src/be/nikiroo/utils/Cache.java +++ b/src/be/nikiroo/utils/Cache.java @@ -21,6 +21,12 @@ public class Cache { private long tooOldStable; private TraceHandler tracer = new TraceHandler(); + /** + * Only for inheritance. + */ + protected Cache() { + } + /** * Create a new {@link Cache} object. * @@ -70,9 +76,31 @@ public class Cache { * the new traces handler */ public void setTraceHandler(TraceHandler tracer) { + if (tracer == null) { + tracer = new TraceHandler(false, false, false); + } + this.tracer = tracer; } + /** + * Check the resource to see if it is in the cache. + * + * @param uniqueID + * the resource to check + * @param allowTooOld + * allow files even if they are considered too old + * @param stable + * a stable file (that dones't change too often) -- parameter + * used to check if the file is too old to keep or not + * + * @return TRUE if it is + * + */ + public boolean check(String uniqueID, boolean allowTooOld, boolean stable) { + return check(getCached(uniqueID), allowTooOld, stable); + } + /** * Check the resource to see if it is in the cache. * @@ -88,9 +116,31 @@ public class Cache { * */ public boolean check(URL url, boolean allowTooOld, boolean stable) { - File file = getCached(url); - if (file.exists()) { - if (allowTooOld || !isOld(file, stable)) { + return check(getCached(url), allowTooOld, stable); + } + + /** + * Check the resource to see if it is in the cache. + * + * @param cached + * the resource to check + * @param allowTooOld + * allow files even if they are considered too old + * @param stable + * a stable file (that dones't change too often) -- parameter + * used to check if the file is too old to keep or not + * + * @return TRUE if it is + * + */ + private boolean check(File cached, boolean allowTooOld, boolean stable) { + if (cached.exists() && cached.isFile()) { + if (!allowTooOld && isOld(cached, stable)) { + if (!cached.delete()) { + tracer.error("Cannot delete temporary file: " + + cached.getAbsolutePath()); + } + } else { return true; } } @@ -190,7 +240,8 @@ public class Cache { * @return the opened resource if found, NULL if not */ private InputStream load(File cached, boolean allowTooOld, boolean stable) { - if (cached.exists() && (allowTooOld || !isOld(cached, stable))) { + if (cached.exists() && cached.isFile() + && (allowTooOld || !isOld(cached, stable))) { try { return new MarkableFileInputStream(new FileInputStream(cached)); } catch (FileNotFoundException e) { @@ -209,15 +260,13 @@ public class Cache { * @param uniqueID * a unique ID used to locate the cached resource * - * @return the resulting {@link File} - * * @throws IOException * in case of I/O error */ - public File save(InputStream in, String uniqueID) throws IOException { + public void save(InputStream in, String uniqueID) throws IOException { File cached = getCached(uniqueID); cached.getParentFile().mkdirs(); - return save(in, cached); + save(in, cached); } /** @@ -228,14 +277,12 @@ 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 */ - public File save(InputStream in, URL url) throws IOException { + public void save(InputStream in, URL url) throws IOException { File cached = getCached(url); - return save(in, cached); + save(in, cached); } /** @@ -246,14 +293,11 @@ 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 */ - private File save(InputStream in, File cached) throws IOException { + private void save(InputStream in, File cached) throws IOException { IOUtils.write(in, cached); - return cached; } /**