X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FBasicLibrary.java;h=e62416bcca9fd1112bbf8ade0175dc008dcd142d;hb=0bf8264eecb834dd7ca75d30db0980bcb825284b;hp=42c6c9d843063dc64956dc90e285ac476e068b1d;hpb=fd1d31c20100442f3c2480b8177a2df761613a15;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/library/BasicLibrary.java b/src/be/nikiroo/fanfix/library/BasicLibrary.java index 42c6c9d..e62416b 100644 --- a/src/be/nikiroo/fanfix/library/BasicLibrary.java +++ b/src/be/nikiroo/fanfix/library/BasicLibrary.java @@ -1,6 +1,5 @@ package be.nikiroo.fanfix.library; -import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; @@ -15,7 +14,8 @@ import be.nikiroo.fanfix.data.Story; import be.nikiroo.fanfix.output.BasicOutput; import be.nikiroo.fanfix.output.BasicOutput.OutputType; import be.nikiroo.fanfix.supported.BasicSupport; -import be.nikiroo.fanfix.supported.BasicSupport.SupportType; +import be.nikiroo.fanfix.supported.SupportType; +import be.nikiroo.utils.Image; import be.nikiroo.utils.Progress; /** @@ -89,7 +89,7 @@ abstract public class BasicLibrary { * * @return the cover image */ - public abstract BufferedImage getCover(String luid); + public abstract Image getCover(String luid); /** * Return the cover image associated to this source. @@ -101,7 +101,7 @@ abstract public class BasicLibrary { * * @return the cover image or NULL */ - public BufferedImage getSourceCover(String source) { + public Image getSourceCover(String source) { List metas = getListBySource(source); if (metas.size() > 0) { return getCover(metas.get(0).getLuid()); @@ -135,7 +135,29 @@ abstract public class BasicLibrary { * Invalidate the {@link Story} cache (when the content should be re-read * because it was changed). */ - protected abstract void clearCache(); + protected void deleteInfo() { + deleteInfo(null); + } + + /** + * 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 + * for all stories + */ + 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. @@ -331,8 +353,10 @@ abstract public class BasicLibrary { .getType()); URL url = file.toURI().toURL(); if (type != null) { - story = BasicSupport.getSupport(type).process(url, - pgProcess); + story = BasicSupport.getSupport(type, url) // + .process(pgProcess); + System.out.println("orig meta: "+meta); + System.out.println("story retrieved: "+story); // Because we do not want to clear the meta cache: meta.setCover(story.getMeta().getCover()); story.setMeta(meta); @@ -380,7 +404,7 @@ abstract public class BasicLibrary { throw new UnknownHostException("" + url); } - return save(support.process(url, pg), null); + return save(support.process(pg), null); } /** @@ -445,7 +469,7 @@ abstract public class BasicLibrary { pg.addProgress(pgOut, 1); } - BasicOutput out = BasicOutput.getOutput(type, false); + BasicOutput out = BasicOutput.getOutput(type, false, false); if (out == null) { throw new IOException("Output type not supported: " + type); } @@ -495,6 +519,7 @@ abstract public class BasicLibrary { */ public synchronized Story save(Story story, String luid, Progress pg) throws IOException { + // Do not change the original metadata, but change the original story MetaData meta = story.getMeta().clone(); story.setMeta(meta); @@ -505,13 +530,13 @@ abstract public class BasicLibrary { meta.setLuid(luid); } - if (getInfo(luid) != null) { + if (luid != null && getInfo(luid) != null) { delete(luid); } - doSave(story, pg); + story = doSave(story, pg); - clearCache(); + updateInfo(story.getMeta()); return story; } @@ -527,7 +552,7 @@ abstract public class BasicLibrary { */ public synchronized void delete(String luid) throws IOException { doDelete(luid); - clearCache(); + deleteInfo(luid); } /**