lib: cache not refreshed on changeSTA
[fanfix.git] / src / be / nikiroo / fanfix / library / CacheLibrary.java
index 74af1b682c3ac21a982a7af0407b7e58edb322c4..8f6e9c29a24bfd128c64e5fe69e90c98a53ac4e3 100644 (file)
@@ -66,28 +66,27 @@ public class CacheLibrary extends BasicLibrary {
        }
 
        @Override
-       public synchronized Story getStory(String luid, MetaData meta, Progress pg) {
-               String type = cacheLib.getOutputType(meta.isImageDocument());
-               MetaData cachedMeta = meta.clone();
-               cachedMeta.setType(type);
+       public synchronized MetaData getInfo(String luid) {
+               MetaData info = cacheLib.getInfo(luid);
+               if (info == null) {
+                       info = lib.getInfo(luid);
+               }
 
-               return super.getStory(luid, cachedMeta, pg);
+               return info;
        }
 
        @Override
-       public synchronized File getFile(final String luid, Progress pg) {
+       public synchronized Story getStory(String luid, MetaData meta, Progress pg) {
                if (pg == null) {
                        pg = new Progress();
                }
 
                Progress pgImport = new Progress();
                Progress pgGet = new Progress();
-               Progress pgRecall = new Progress();
 
-               pg.setMinMax(0, 5);
+               pg.setMinMax(0, 4);
                pg.addProgress(pgImport, 3);
                pg.addProgress(pgGet, 1);
-               pg.addProgress(pgRecall, 1);
 
                if (!isCached(luid)) {
                        try {
@@ -102,6 +101,31 @@ public class CacheLibrary extends BasicLibrary {
                        pgGet.done();
                }
 
+               String type = cacheLib.getOutputType(meta.isImageDocument());
+               MetaData cachedMeta = meta.clone();
+               cachedMeta.setType(type);
+
+               return cacheLib.getStory(luid, cachedMeta, pg);
+       }
+
+       @Override
+       public synchronized File getFile(final String luid, Progress pg) {
+               if (pg == null) {
+                       pg = new Progress();
+               }
+
+               Progress pgGet = new Progress();
+               Progress pgRecall = new Progress();
+
+               pg.setMinMax(0, 5);
+               pg.addProgress(pgGet, 4);
+               pg.addProgress(pgRecall, 1);
+
+               if (!isCached(luid)) {
+                       getStory(luid, pgGet);
+                       pgGet.done();
+               }
+
                File file = cacheLib.getFile(luid, pgRecall);
                pgRecall.done();
 
@@ -246,10 +270,7 @@ public class CacheLibrary extends BasicLibrary {
                }
                lib.delete(luid);
 
-               MetaData meta = getInfo(luid);
-               if (meta != null) {
-                       metas.remove(meta);
-               }
+               invalidateInfo(luid);
        }
 
        @Override
@@ -282,6 +303,8 @@ public class CacheLibrary extends BasicLibrary {
                meta.setTitle(newTitle);
                meta.setAuthor(newAuthor);
                pg.done();
+
+               invalidateInfo(luid);
        }
 
        /**