manage remote and io exception in fanfix
[fanfix.git] / src / be / nikiroo / fanfix / library / LocalLibrary.java
index 1752dc7f3e253e57586fdc0e675d380700bc31ee..3b0a8489aae281cd929e4f3de06b5376f73ba677 100644 (file)
@@ -100,7 +100,7 @@ public class LocalLibrary extends BasicLibrary {
        }
 
        @Override
-       public File getFile(String luid, Progress pg) {
+       public File getFile(String luid, Progress pg) throws IOException {
                Instance.getTraceHandler().trace(
                                this.getClass().getSimpleName() + ": get file for " + luid);
 
@@ -122,7 +122,7 @@ public class LocalLibrary extends BasicLibrary {
        }
 
        @Override
-       public Image getCover(String luid) {
+       public Image getCover(String luid) throws IOException {
                MetaData meta = getInfo(luid);
                if (meta != null) {
                        if (meta.getCover() != null) {
@@ -255,6 +255,15 @@ public class LocalLibrary extends BasicLibrary {
 
        @Override
        public synchronized Image getCustomAuthorCover(String author) {
+               if (authorCovers == null) {
+                       authorCovers = new HashMap<String, Image>();
+               }
+
+               Image img = authorCovers.get(author);
+               if (img != null) {
+                       return img;
+               }
+
                File cover = getAuthorCoverFile(author);
                if (cover.exists()) {
                        InputStream in;
@@ -279,12 +288,12 @@ public class LocalLibrary extends BasicLibrary {
        }
 
        @Override
-       public void setSourceCover(String source, String luid) {
+       public void setSourceCover(String source, String luid) throws IOException {
                setSourceCover(source, getCover(luid));
        }
 
        @Override
-       public void setAuthorCover(String author, String luid) {
+       public void setAuthorCover(String author, String luid) throws IOException {
                setAuthorCover(author, getCover(luid));
        }
 
@@ -405,6 +414,22 @@ public class LocalLibrary extends BasicLibrary {
                return text;
        }
 
+       /**
+        * Return the default {@link OutputType} for this kind of {@link Story}.
+        * 
+        * @param imageDocument
+        *            TRUE for images document, FALSE for text documents
+        * 
+        * @return the type
+        */
+       public String getOutputType(boolean imageDocument) {
+               if (imageDocument) {
+                       return image.toString();
+               }
+
+               return text.toString();
+       }
+
        /**
         * Get the target {@link File} related to the given <tt>.info</tt>
         * {@link File} and {@link MetaData}.
@@ -614,7 +639,8 @@ public class LocalLibrary extends BasicLibrary {
                                boolean info = file != null && file.isFile()
                                                && file.getPath().toLowerCase().endsWith(".info");
                                boolean dir = file != null && file.isDirectory();
-                               return info || dir;
+                               boolean isExpandedHtml = new File(file, "index.html").isFile();
+                               return info || (dir && !isExpandedHtml);
                        }
                });