Merge branch 'subtree'
[fanfix.git] / src / be / nikiroo / fanfix / library / BasicLibrary.java
index b92e5b078b01047e4e40375ec401f47b4f6bfe73..7f286079ed1fe87c88f2ec798a85c26774950089 100644 (file)
@@ -149,7 +149,7 @@ abstract public class BasicLibrary {
                        return custom;
                }
 
-               List<MetaData> metas = getListBySource(source);
+               List<MetaData> metas = getList().filter(source, null, null);
                if (metas.size() > 0) {
                        return getCover(metas.get(0).getLuid());
                }
@@ -177,7 +177,7 @@ abstract public class BasicLibrary {
                        return custom;
                }
 
-               List<MetaData> metas = getListByAuthor(author);
+               List<MetaData> metas = getList().filter(null, author, null);
                if (metas.size() > 0) {
                        return getCover(metas.get(0).getLuid());
                }
@@ -338,13 +338,43 @@ abstract public class BasicLibrary {
         * @param pg
         *            the optional progress reporter
         */
-       public void refresh(Progress pg) {
+       public synchronized void refresh(Progress pg) {
                try {
                        getMetas(pg);
                } catch (IOException e) {
                        // We will let it fail later
                }
        }
+       
+       /**
+        * Check if the {@link Story} denoted by this Library UID is present in the
+        * cache (if we have no cache, we default to </t>true</tt>).
+        * 
+        * @param luid
+        *            the Library UID
+        * 
+        * @return TRUE if it is
+        */
+       public boolean isCached(String luid) {
+               // By default, everything is cached
+               return true;
+       }
+       
+       /**
+        * Clear the {@link Story} from the cache, if needed.
+        * <p>
+        * The next time we try to retrieve the {@link Story}, it may be required to
+        * cache it again.
+        * 
+        * @param luid
+        *            the story to clear
+        * 
+        * @throws IOException
+        *             in case of I/O error
+        */
+       public void clearFromCache(String luid) throws IOException {
+               // By default, this is a noop.
+       }
 
        /**
         * List all the known types (sources) of stories.
@@ -567,61 +597,8 @@ abstract public class BasicLibrary {
         * @throws IOException
         *             in case of IOException
         */
-       public synchronized List<MetaData> getList() throws IOException {
-               return getMetas(null);
-       }
-
-       /**
-        * List all the stories of the given source type in the {@link BasicLibrary} ,
-        * or all the stories if NULL is passed as a type.
-        * <p>
-        * Cover images not included.
-        * 
-        * @param source the type of story to retrieve, or NULL for all
-        * 
-        * @return the stories
-        * 
-        * @throws IOException in case of IOException
-        * 
-        * @deprecated use {@link BasicLibrary#getList(Progress)} and
-        *             {@link MetaResultList#filter(List, List, List)}
-        */
-       @Deprecated
-       public synchronized List<MetaData> getListBySource(String source) throws IOException {
-               List<String> sources = null;
-               if (source != null) {
-                       sources = new ArrayList<String>();
-                       sources.add(source);
-               }
-
-               return getList(null).filter(sources, null, null);
-       }
-
-       /**
-        * List all the stories of the given author in the {@link BasicLibrary}, or
-        * all the stories if NULL is passed as an author.
-        * <p>
-        * Cover images not included.
-        * 
-        * @param author
-        *            the author of the stories to retrieve, or NULL for all
-        * 
-        * @return the stories
-        * 
-        * @throws IOException
-        *             in case of IOException
-        *             
-        *             @deprecated use {@link BasicLibrary#getList(Progress)} and
-        *             {@link MetaResultList#filter(List, List, List)}
-        */
-       public synchronized List<MetaData> getListByAuthor(String author) throws IOException {
-               List<String> authors = null;
-               if (author != null) {
-                       authors = new ArrayList<String>();
-                       authors.add(author);
-               }
-
-               return getList(null).filter(null, authors, null);
+       public MetaResultList getList() throws IOException {
+               return getList(null);
        }
 
        /**
@@ -778,6 +755,7 @@ abstract public class BasicLibrary {
                }
 
                Story story = save(support.process(pgProcess), pgSave);
+               pg.setName(story.getMeta().getTitle());
                pg.done();
 
                return story.getMeta();
@@ -895,13 +873,18 @@ abstract public class BasicLibrary {
         */
        public synchronized Story save(Story story, String luid, Progress pg)
                        throws IOException {
-
+               if (pg == null) {
+                       pg = new Progress();
+               }
+               
                Instance.getInstance().getTraceHandler().trace(this.getClass().getSimpleName() + ": saving story " + luid);
 
                // Do not change the original metadata, but change the original story
                MetaData meta = story.getMeta().clone();
                story.setMeta(meta);
 
+               pg.setName("Saving story");
+               
                if (luid == null || luid.isEmpty()) {
                        meta.setLuid(String.format("%03d", getNextId()));
                } else {
@@ -919,6 +902,8 @@ abstract public class BasicLibrary {
                Instance.getInstance().getTraceHandler()
                                .trace(this.getClass().getSimpleName() + ": story saved (" + luid + ")");
 
+               pg.setName(meta.getTitle());
+               pg.done();
                return story;
        }
 
@@ -1040,8 +1025,6 @@ abstract public class BasicLibrary {
                meta.setTitle(newTitle);
                meta.setAuthor(newAuthor);
                saveMeta(meta, pg);
-
-               invalidateInfo(luid);
        }
 
        /**