X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FLocalLibrary.java;h=9ebff72c2151d7d6f6e7e0f6cf86fafc42911aed;hb=c8d48938ca540d7b619a2c19bd76623d689b72cb;hp=584fa1ed2c7b9834d2afba224fef96dad537d95b;hpb=e1de8087ab1623f7624018af905ea3bb0ef45802;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/library/LocalLibrary.java b/src/be/nikiroo/fanfix/library/LocalLibrary.java index 584fa1e..9ebff72 100644 --- a/src/be/nikiroo/fanfix/library/LocalLibrary.java +++ b/src/be/nikiroo/fanfix/library/LocalLibrary.java @@ -123,6 +123,10 @@ public class LocalLibrary extends BasicLibrary { public Image getCover(String luid) { MetaData meta = getInfo(luid); if (meta != null) { + if (meta.getCover() != null) { + return meta.getCover(); + } + File[] files = getStories(null).get(meta); if (files != null) { File infoFile = files[0]; @@ -141,11 +145,11 @@ public class LocalLibrary extends BasicLibrary { @Override protected synchronized void updateInfo(MetaData meta) { - deleteInfo(); + invalidateInfo(); } @Override - protected void deleteInfo(String luid) { + protected void invalidateInfo(String luid) { stories = null; sourceCovers = null; } @@ -195,8 +199,8 @@ public class LocalLibrary extends BasicLibrary { try { String name = relatedFile.getName().replaceFirst( "\\.info$", ""); - InfoCover.writeInfo(newDir, name, meta); relatedFile.delete(); + InfoCover.writeInfo(newDir, name, meta); relatedFile.getParentFile().delete(); } catch (IOException e) { Instance.getTraceHandler().error(e); @@ -207,7 +211,7 @@ public class LocalLibrary extends BasicLibrary { } } - deleteInfo(); + invalidateInfo(); } @Override @@ -224,18 +228,23 @@ public class LocalLibrary extends BasicLibrary { File coverDir = new File(baseDir, source); if (coverDir.isDirectory()) { File cover = new File(coverDir, ".cover.png"); - InputStream in; - try { - in = new FileInputStream(cover); + if (cover.exists()) { + InputStream in; try { - sourceCovers.put(source, new Image(in)); - } finally { - in.close(); + in = new FileInputStream(cover); + try { + sourceCovers.put(source, new Image(in)); + } finally { + in.close(); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + Instance.getTraceHandler().error( + new IOException( + "Cannot load the existing custom source cover: " + + cover, e)); } - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); } } @@ -256,7 +265,9 @@ public class LocalLibrary extends BasicLibrary { * the cover image */ synchronized void setSourceCover(String source, Image coverImage) { - File cover = new File(getExpectedDir(source), ".cover"); + File dir = getExpectedDir(source); + dir.mkdirs(); + File cover = new File(dir, ".cover"); try { Instance.getCache().saveAsImage(coverImage, cover, true); if (sourceCovers != null) { @@ -314,7 +325,7 @@ public class LocalLibrary extends BasicLibrary { pg.add(1); } - deleteInfo(); + invalidateInfo(); pg.done(); return; } @@ -455,7 +466,7 @@ public class LocalLibrary extends BasicLibrary { * {@link LocalLibrary#baseDir}. *

* Will use a cached list when possible (see - * {@link BasicLibrary#deleteInfo()}). + * {@link BasicLibrary#invalidateInfo()}). * * @param pg * the optional {@link Progress}