Try 3
[fanfix.git] / src / be / nikiroo / fanfix / library / LocalLibrary.java
index 97863e7b29e7b26f7489895374405c414b5f6847..e531072935764398870355bbd8a1027d368bc9e6 100644 (file)
@@ -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;
 
 /**
@@ -87,7 +86,7 @@ public class LocalLibrary extends BasicLibrary {
 
                this.lastId = 0;
                this.stories = null;
-               this.sourceCovers = new HashMap<String, Image>();
+               this.sourceCovers = null;
 
                baseDir.mkdirs();
        }
@@ -128,9 +127,14 @@ public class LocalLibrary extends BasicLibrary {
        }
 
        @Override
-       protected synchronized void invalidateInfo(String luid) {
+       protected synchronized void updateInfo(MetaData meta) {
+               deleteInfo();
+       }
+
+       @Override
+       protected void deleteInfo(String luid) {
                stories = null;
-               sourceCovers = new HashMap<String, Image>();
+               sourceCovers = null;
        }
 
        @Override
@@ -190,11 +194,15 @@ public class LocalLibrary extends BasicLibrary {
                        }
                }
 
-               invalidateInfo();
+               deleteInfo();
        }
 
        @Override
        public Image getSourceCover(String source) {
+               if (sourceCovers == null) {
+                       getStories(null);
+               }
+
                if (!sourceCovers.containsKey(source)) {
                        sourceCovers.put(source, super.getSourceCover(source));
                }
@@ -204,6 +212,10 @@ public class LocalLibrary extends BasicLibrary {
 
        @Override
        public void setSourceCover(String source, String luid) {
+               if (sourceCovers == null) {
+                       getStories(null);
+               }
+
                sourceCovers.put(source, getCover(luid));
                File cover = new File(getExpectedDir(source), ".cover");
                try {
@@ -262,15 +274,14 @@ public class LocalLibrary extends BasicLibrary {
                                        pg.add(1);
                                }
 
-                               invalidateInfo();
+                               deleteInfo();
                                pg.done();
                                return;
                        }
                }
 
                super.imprt(other, luid, pg);
-
-               invalidateInfo();
+               deleteInfo();
        }
 
        /**
@@ -405,7 +416,7 @@ public class LocalLibrary extends BasicLibrary {
         * {@link LocalLibrary#baseDir}.
         * <p>
         * Will use a cached list when possible (see
-        * {@link BasicLibrary#invalidateInfo()}).
+        * {@link BasicLibrary#deleteInfo()}).
         * 
         * @param pg
         *            the optional {@link Progress}
@@ -421,6 +432,7 @@ public class LocalLibrary extends BasicLibrary {
 
                if (stories == null) {
                        stories = new HashMap<MetaData, File[]>();
+                       sourceCovers = new HashMap<String, Image>();
 
                        lastId = 0;
 
@@ -468,10 +480,8 @@ public class LocalLibrary extends BasicLibrary {
                                                                // not normal!!
                                                                throw new IOException(
                                                                                "Cannot understand the LUID of "
-                                                                                               + infoFile
-                                                                                               + ": "
-                                                                                               + (meta == null ? "[meta is NULL]"
-                                                                                                               : meta.getLuid()), e);
+                                                                                               + infoFile + ": "
+                                                                                               + meta.getLuid(), e);
                                                        }
                                                } catch (IOException e) {
                                                        // We should not have not-supported files in the
@@ -518,6 +528,10 @@ public class LocalLibrary extends BasicLibrary {
         *            the cover image
         */
        void setSourceCover(String source, Image coverImage) {
+               if (sourceCovers == null) {
+                       getStories(null);
+               }
+
                sourceCovers.put(source, coverImage);
                File cover = new File(getExpectedDir(source), ".cover");
                try {