Fixes:
[fanfix.git] / src / be / nikiroo / fanfix / library / LocalLibrary.java
index 54ad1d66769d8962cf5516a2bc5c6302e04e0ac6..bdded01810ebedc0452867175da9eb1b3899ffdb 100644 (file)
@@ -86,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();
        }
@@ -98,12 +98,25 @@ public class LocalLibrary extends BasicLibrary {
 
        @Override
        public File getFile(String luid, Progress pg) {
-               File[] files = getStories(pg).get(getInfo(luid));
+               Instance.getTraceHandler().trace(
+                               this.getClass().getSimpleName() + ": get file for " + luid);
+
+               File file = null;
+               String mess = "no file found for ";
+
+               MetaData meta = getInfo(luid);
+               Instance.getTraceHandler().trace("(info is: " + meta + ")");
+
+               File[] files = getStories(pg).get(meta);
                if (files != null) {
-                       return files[1];
+                       mess = "file retrieved for ";
+                       file = files[1];
                }
 
-               return null;
+               Instance.getTraceHandler().trace(
+                               this.getClass().getSimpleName() + ": " + mess + luid);
+
+               return file;
        }
 
        @Override
@@ -134,7 +147,7 @@ public class LocalLibrary extends BasicLibrary {
        @Override
        protected void deleteInfo(String luid) {
                stories = null;
-               sourceCovers = new HashMap<String, Image>();
+               sourceCovers = null;
        }
 
        @Override
@@ -199,6 +212,10 @@ public class LocalLibrary extends BasicLibrary {
 
        @Override
        public Image getSourceCover(String source) {
+               if (sourceCovers == null) {
+                       getStories(null);
+               }
+
                if (!sourceCovers.containsKey(source)) {
                        sourceCovers.put(source, super.getSourceCover(source));
                }
@@ -208,6 +225,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 {
@@ -273,8 +294,6 @@ public class LocalLibrary extends BasicLibrary {
                }
 
                super.imprt(other, luid, pg);
-
-               deleteInfo();
        }
 
        /**
@@ -414,7 +433,8 @@ public class LocalLibrary extends BasicLibrary {
         * @param pg
         *            the optional {@link Progress}
         * 
-        * @return the list of stories
+        * @return the list of stories (for each item, the first {@link File} is the info file, the
+        *         second file is the target {@link File})
         */
        private synchronized Map<MetaData, File[]> getStories(Progress pg) {
                if (pg == null) {
@@ -425,6 +445,7 @@ public class LocalLibrary extends BasicLibrary {
 
                if (stories == null) {
                        stories = new HashMap<MetaData, File[]>();
+                       sourceCovers = new HashMap<String, Image>();
 
                        lastId = 0;
 
@@ -520,6 +541,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 {