package be.nikiroo.fanfix.library;
-import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;
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;
/**
*
* @return the cover image
*/
- public abstract BufferedImage getCover(String luid);
+ public abstract Image getCover(String luid);
/**
* Return the cover image associated to this source.
*
* @return the cover image or NULL
*/
- public BufferedImage getSourceCover(String source) {
+ public Image getSourceCover(String source) {
List<MetaData> metas = getListBySource(source);
if (metas.size() > 0) {
return getCover(metas.get(0).getLuid());
* 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).
+ * <p>
+ * 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.
.getType());
URL url = file.toURI().toURL();
if (type != null) {
- story = BasicSupport.getSupport(type).process(url,
- pgProcess);
+ 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);
throw new UnknownHostException("" + url);
}
- return save(support.process(url, pg), null);
+ return save(support.process(pg), null);
}
/**
*/
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);
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;
}
*/
public synchronized void delete(String luid) throws IOException {
doDelete(luid);
- clearCache();
+ deleteInfo(luid);
}
/**