move isCache/cleanCache to BasicLibrary, improve filter()
authorNiki Roo <niki@nikiroo.be>
Tue, 7 Apr 2020 21:54:05 +0000 (23:54 +0200)
committerNiki Roo <niki@nikiroo.be>
Tue, 7 Apr 2020 21:54:05 +0000 (23:54 +0200)
src/be/nikiroo/fanfix/library/BasicLibrary.java
src/be/nikiroo/fanfix/library/CacheLibrary.java
src/be/nikiroo/fanfix/library/MetaResultList.java

index b92e5b078b01047e4e40375ec401f47b4f6bfe73..c6ce22dd24c1c4fa85f60edfdcea7bd5f8de1b05 100644 (file)
@@ -345,6 +345,36 @@ abstract public class BasicLibrary {
                        // 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.
@@ -584,17 +614,11 @@ abstract public class BasicLibrary {
         * @throws IOException in case of IOException
         * 
         * @deprecated use {@link BasicLibrary#getList(Progress)} and
-        *             {@link MetaResultList#filter(List, List, List)}
+        *             {@link MetaResultList#filter(String, String, String)}
         */
        @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);
+               return getList(null).filter(source, null, null);
        }
 
        /**
@@ -612,16 +636,10 @@ abstract public class BasicLibrary {
         *             in case of IOException
         *             
         *             @deprecated use {@link BasicLibrary#getList(Progress)} and
-        *             {@link MetaResultList#filter(List, List, List)}
+        *             {@link MetaResultList#filter(String, String, String)}
         */
        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);
+               return getList(null).filter(null, author, null);
        }
 
        /**
index 14d28cf14f7b1fbe1782d012d3d70203fec07958..9c83e62f76ceb388125cbc73d8769b296513b211 100644 (file)
@@ -317,15 +317,7 @@ public class CacheLibrary extends BasicLibrary {
                invalidateInfo(luid);
        }
 
-       /**
-        * Check if the {@link Story} denoted by this Library UID is present in the
-        * cache.
-        * 
-        * @param luid
-        *            the Library UID
-        * 
-        * @return TRUE if it is
-        */
+       @Override
        public boolean isCached(String luid) {
                try {
                        return cacheLib.getInfo(luid) != null;
@@ -334,18 +326,7 @@ public class CacheLibrary extends BasicLibrary {
                }
        }
 
-       /**
-        * Clear the {@link Story} from the cache.
-        * <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
-        */
+       @Override
        public void clearFromCache(String luid) throws IOException {
                if (isCached(luid)) {
                        cacheLib.delete(luid);
index 3aa167f99e16e44ce8fd36d51362bfbf3269a029..886defe8b1c6a9df42639f04c82ebd87d5396bbd 100644 (file)
@@ -1,6 +1,7 @@
 package be.nikiroo.fanfix.library;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -88,6 +89,15 @@ public class MetaResultList {
                return authors;
        }
 
+       // helper
+       public List<MetaData> filter(String source, String author, String tag) {
+               List<String> sources = source == null ? null : Arrays.asList(source);
+               List<String> authors = author == null ? null : Arrays.asList(author);
+               List<String> tags = tag == null ? null : Arrays.asList(tag);
+
+               return filter(sources, authors, tags);
+       }
+
        // null or empty -> no check, rest = must be included
        // source: a source ending in "/" means "this or any source starting with this",
        // i;e., to enable source hierarchy