X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FBasicLibrary.java;h=56a57070b0e2ab66fb0d78d97a43c847ed2cc06d;hb=9e2fad3600cd08eca73d45cb5c991d98095842aa;hp=350a8cafcc6ecc4ff2eafba768e052fe323db122;hpb=0ffa47548f474c1330d8d723300d9aa7a4894736;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/library/BasicLibrary.java b/src/be/nikiroo/fanfix/library/BasicLibrary.java index 350a8ca..56a5707 100644 --- a/src/be/nikiroo/fanfix/library/BasicLibrary.java +++ b/src/be/nikiroo/fanfix/library/BasicLibrary.java @@ -135,19 +135,29 @@ abstract public class BasicLibrary { * Invalidate the {@link Story} cache (when the content should be re-read * because it was changed). */ - protected void invalidateInfo() { - invalidateInfo(null); + protected void deleteInfo() { + deleteInfo(null); } /** - * Invalidate the {@link Story} cache (when the content should be re-read - * because it was changed). + * Invalidate the {@link Story} cache (when the content is removed). + *

+ * All the cache can be deleted if NULL is passed as meta. * * @param luid - * the luid of the {@link Story} to clear from the cache, or NULL + * the LUID of the {@link Story} to clear from the cache, or NULL * for all stories */ - protected abstract void invalidateInfo(String luid); + protected abstract void deleteInfo(String luid); + + /** + * Invalidate the {@link Story} cache (when the content has changed, but we + * already have it) with the new given meta. + * + * @param meta + * the {@link Story} to clear from the cache + */ + protected abstract void updateInfo(MetaData meta); /** * Return the next LUID that can be used. @@ -345,6 +355,7 @@ abstract public class BasicLibrary { if (type != null) { story = BasicSupport.getSupport(type, url) // .process(pgProcess); + // Because we do not want to clear the meta cache: meta.setCover(story.getMeta().getCover()); story.setMeta(meta); @@ -507,6 +518,10 @@ abstract public class BasicLibrary { */ public synchronized Story save(Story story, String luid, Progress pg) throws IOException { + + Instance.getTraceHandler().trace( + this.getClass().getSimpleName() + ": saving story " + luid); + // Do not change the original metadata, but change the original story MetaData meta = story.getMeta().clone(); story.setMeta(meta); @@ -521,9 +536,13 @@ abstract public class BasicLibrary { delete(luid); } - doSave(story, pg); + story = doSave(story, pg); - invalidateInfo(luid); + updateInfo(story.getMeta()); + + Instance.getTraceHandler().trace( + this.getClass().getSimpleName() + ": story saved (" + luid + + ")"); return story; } @@ -538,8 +557,15 @@ abstract public class BasicLibrary { * in case of I/O error */ public synchronized void delete(String luid) throws IOException { + Instance.getTraceHandler().trace( + this.getClass().getSimpleName() + ": deleting story " + luid); + doDelete(luid); - invalidateInfo(luid); + deleteInfo(luid); + + Instance.getTraceHandler().trace( + this.getClass().getSimpleName() + ": story deleted (" + luid + + ")"); } /**