X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FLocalLibrary.java;h=54ad1d66769d8962cf5516a2bc5c6302e04e0ac6;hb=aac7079dc723e0c03a6c6f58a81d4ef756811fa2;hp=041db1013dbf85bfd0a41112676dcc6e4f31c055;hpb=16a81ef7656c5c692fb831927e75edde25dd77a0;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/library/LocalLibrary.java b/src/be/nikiroo/fanfix/library/LocalLibrary.java index 041db10..54ad1d6 100644 --- a/src/be/nikiroo/fanfix/library/LocalLibrary.java +++ b/src/be/nikiroo/fanfix/library/LocalLibrary.java @@ -20,7 +20,6 @@ import be.nikiroo.fanfix.output.InfoCover; import be.nikiroo.fanfix.supported.InfoReader; import be.nikiroo.utils.IOUtils; import be.nikiroo.utils.Image; -import be.nikiroo.utils.MarkableFileInputStream; import be.nikiroo.utils.Progress; /** @@ -128,7 +127,12 @@ public class LocalLibrary extends BasicLibrary { } @Override - protected void invalidateInfo(String luid) { + protected synchronized void updateInfo(MetaData meta) { + deleteInfo(); + } + + @Override + protected void deleteInfo(String luid) { stories = null; sourceCovers = new HashMap(); } @@ -190,7 +194,7 @@ public class LocalLibrary extends BasicLibrary { } } - invalidateInfo(); + deleteInfo(); } @Override @@ -205,7 +209,7 @@ public class LocalLibrary extends BasicLibrary { @Override public void setSourceCover(String source, String luid) { sourceCovers.put(source, getCover(luid)); - File cover = new File(getExpectedDir(source), ".cover.png"); + File cover = new File(getExpectedDir(source), ".cover"); try { Instance.getCache().saveAsImage(sourceCovers.get(source), cover, true); @@ -262,7 +266,7 @@ public class LocalLibrary extends BasicLibrary { pg.add(1); } - invalidateInfo(); + deleteInfo(); pg.done(); return; } @@ -270,7 +274,7 @@ public class LocalLibrary extends BasicLibrary { super.imprt(other, luid, pg); - invalidateInfo(); + deleteInfo(); } /** @@ -405,7 +409,7 @@ public class LocalLibrary extends BasicLibrary { * {@link LocalLibrary#baseDir}. *

* Will use a cached list when possible (see - * {@link BasicLibrary#invalidateInfo()}). + * {@link BasicLibrary#deleteInfo()}). * * @param pg * the optional {@link Progress} @@ -431,77 +435,79 @@ public class LocalLibrary extends BasicLibrary { } }); - Progress pgDirs = new Progress(0, 100 * dirs.length); - pg.addProgress(pgDirs, 100); + if (dirs != null) { + Progress pgDirs = new Progress(0, 100 * dirs.length); + pg.addProgress(pgDirs, 100); + + for (File dir : dirs) { + File[] infoFiles = dir.listFiles(new FileFilter() { + @Override + public boolean accept(File file) { + return file != null + && file.getPath().toLowerCase() + .endsWith(".info"); + } + }); + + Progress pgFiles = new Progress(0, infoFiles.length); + pgDirs.addProgress(pgFiles, 100); + pgDirs.setName("Loading from: " + dir.getName()); - for (File dir : dirs) { - File[] infoFiles = dir.listFiles(new FileFilter() { - @Override - public boolean accept(File file) { - return file != null - && file.getPath().toLowerCase() - .endsWith(".info"); - } - }); - - Progress pgFiles = new Progress(0, infoFiles.length); - pgDirs.addProgress(pgFiles, 100); - pgDirs.setName("Loading from: " + dir.getName()); - - String source = null; - for (File infoFile : infoFiles) { - pgFiles.setName(infoFile.getName()); - try { - MetaData meta = InfoReader.readMeta(infoFile, false); - source = meta.getSource(); + String source = null; + for (File infoFile : infoFiles) { + pgFiles.setName(infoFile.getName()); try { - int id = Integer.parseInt(meta.getLuid()); - if (id > lastId) { - lastId = id; - } + MetaData meta = InfoReader + .readMeta(infoFile, false); + source = meta.getSource(); + try { + int id = Integer.parseInt(meta.getLuid()); + if (id > lastId) { + lastId = id; + } - stories.put(meta, new File[] { infoFile, - getTargetFile(meta, infoFile) }); - } catch (Exception e) { - // not normal!! - throw new IOException( - "Cannot understand the LUID of " - + infoFile - + ": " - + (meta == null ? "[meta is NULL]" - : meta.getLuid()), e); + stories.put(meta, new File[] { infoFile, + getTargetFile(meta, infoFile) }); + } catch (Exception e) { + // not normal!! + throw new IOException( + "Cannot understand the LUID of " + + infoFile + ": " + + meta.getLuid(), e); + } + } catch (IOException e) { + // We should not have not-supported files in the + // library + Instance.getTraceHandler().error( + new IOException( + "Cannot load file from library: " + + infoFile, e)); } - } catch (IOException e) { - // We should not have not-supported files in the - // library - Instance.getTraceHandler().error( - new IOException( - "Cannot load file from library: " - + infoFile, e)); + pgFiles.add(1); } - pgFiles.add(1); - } - File cover = new File(dir, ".cover.png"); - if (cover.exists()) { - try { - InputStream in = new FileInputStream(cover); + File cover = new File(dir, ".cover.png"); + if (cover.exists()) { try { - sourceCovers.put(source, new Image(in)); - } finally { - in.close(); + InputStream in = new FileInputStream(cover); + try { + sourceCovers.put(source, new Image(in)); + } finally { + in.close(); + } + } catch (IOException e) { + Instance.getTraceHandler().error(e); } - } catch (IOException e) { - Instance.getTraceHandler().error(e); } + + pgFiles.setName(null); } - pgFiles.setName(null); + pgDirs.setName("Loading directories"); } - - pgDirs.setName("Loading directories"); } + pg.done(); return stories; } @@ -515,7 +521,7 @@ public class LocalLibrary extends BasicLibrary { */ void setSourceCover(String source, Image coverImage) { sourceCovers.put(source, coverImage); - File cover = new File(getExpectedDir(source), ".cover.png"); + File cover = new File(getExpectedDir(source), ".cover"); try { Instance.getCache().saveAsImage(sourceCovers.get(source), cover, true);