Add more warnings source to 1.6) and fix warnings
[nikiroo-utils.git] / src / be / nikiroo / fanfix / reader / BasicReader.java
index cbd4e0308a4584895b805d7ed3ac8bbdaf2c3732..a261c04b4db36c2bd9a7c366b24b25ff0b09e2eb 100644 (file)
@@ -29,7 +29,9 @@ public abstract class BasicReader implements Reader {
        private static ReaderType defaultType = ReaderType.GUI;
 
        private BasicLibrary lib;
+       private MetaData meta;
        private Story story;
+       private int chapter;
 
        /**
         * Take the default reader type configuration from the config file.
@@ -46,10 +48,16 @@ public abstract class BasicReader implements Reader {
                }
        }
 
-       public Story getStory() {
+       @Override
+       public synchronized Story getStory(Progress pg) {
+               if (story == null) {
+                       story = getLibrary().getStory(meta.getLuid(), pg);
+               }
+
                return story;
        }
 
+       @Override
        public BasicLibrary getLibrary() {
                if (lib == null) {
                        lib = defaultLibrary;
@@ -58,18 +66,34 @@ public abstract class BasicReader implements Reader {
                return lib;
        }
 
-       public void setLibrary(LocalLibrary lib) {
+       @Override
+       public void setLibrary(BasicLibrary lib) {
                this.lib = lib;
        }
 
-       public void setStory(String luid, Progress pg) throws IOException {
-               story = lib.getStory(luid, pg);
-               if (story == null) {
+       @Override
+       public MetaData getMeta() {
+               return meta;
+       }
+
+       @Override
+       public synchronized void setMeta(MetaData meta) throws IOException {
+               setMeta(meta == null ? null : meta.getLuid()); // must check the library
+       }
+
+       @Override
+       public synchronized void setMeta(String luid) throws IOException {
+               story = null;
+               meta = getLibrary().getInfo(luid);
+
+               if (meta == null) {
                        throw new IOException("Cannot retrieve story from library: " + luid);
                }
        }
 
-       public void setStory(URL source, Progress pg) throws IOException {
+       @Override
+       public synchronized void setMeta(URL source, Progress pg)
+                       throws IOException {
                BasicSupport support = BasicSupport.getSupport(source);
                if (support == null) {
                        throw new IOException("URL not supported: " + source.toString());
@@ -80,8 +104,19 @@ public abstract class BasicReader implements Reader {
                        throw new IOException(
                                        "Cannot retrieve story from external source: "
                                                        + source.toString());
-
                }
+
+               meta = story.getMeta();
+       }
+
+       @Override
+       public int getChapter() {
+               return chapter;
+       }
+
+       @Override
+       public void setChapter(int chapter) {
+               this.chapter = chapter;
        }
 
        /**
@@ -106,7 +141,7 @@ public abstract class BasicReader implements Reader {
        }
 
        /**
-        * The default {@link ReaderType} used when calling
+        * The default {@link Reader.ReaderType} used when calling
         * {@link BasicReader#getReader()}.
         * 
         * @return the default type
@@ -116,7 +151,7 @@ public abstract class BasicReader implements Reader {
        }
 
        /**
-        * The default {@link ReaderType} used when calling
+        * The default {@link Reader.ReaderType} used when calling
         * {@link BasicReader#getReader()}.
         * 
         * @param defaultType
@@ -177,11 +212,12 @@ public abstract class BasicReader implements Reader {
         * @throws IOException
         *             in case of I/O error
         */
-       public static void open(BasicLibrary lib, String luid) throws IOException {
+       public static void openExternal(BasicLibrary lib, String luid)
+                       throws IOException {
                MetaData meta = lib.getInfo(luid);
                File target = lib.getFile(luid);
 
-               open(meta, target);
+               openExternal(meta, target);
        }
 
        /**
@@ -196,7 +232,8 @@ public abstract class BasicReader implements Reader {
         * @throws IOException
         *             in case of I/O error
         */
-       protected static void open(MetaData meta, File target) throws IOException {
+       protected static void openExternal(MetaData meta, File target)
+                       throws IOException {
                String program = null;
                if (meta.isImageDocument()) {
                        program = Instance.getUiConfig().getString(