X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2Flibrary%2FBasicLibrary.java;h=b92e5b078b01047e4e40375ec401f47b4f6bfe73;hb=1f2a7d5fe14f98b5dd762207eeaff90494fe102e;hp=3e3756fe90d1677ac2b9820bf300b10cc3b484ea;hpb=0bb51c9c66697fe63ba066715207deabbcc1d479;p=nikiroo-utils.git diff --git a/src/be/nikiroo/fanfix/library/BasicLibrary.java b/src/be/nikiroo/fanfix/library/BasicLibrary.java index 3e3756f..b92e5b0 100644 --- a/src/be/nikiroo/fanfix/library/BasicLibrary.java +++ b/src/be/nikiroo/fanfix/library/BasicLibrary.java @@ -122,6 +122,13 @@ abstract public class BasicLibrary { */ public abstract Image getCover(String luid) throws IOException; + // TODO: ensure it is the main used interface + public synchronized MetaResultList getList(Progress pg) throws IOException { + return new MetaResultList(getMetas(pg)); + } + + //TODO: make something for (normal and custom) not-story covers + /** * Return the cover image associated to this source. *

@@ -191,8 +198,8 @@ abstract public class BasicLibrary { * @throws IOException * in case of IOException */ - public Image getCustomSourceCover(@SuppressWarnings("unused") String source) - throws IOException { + @SuppressWarnings("unused") + public Image getCustomSourceCover(String source) throws IOException { return null; } @@ -209,8 +216,8 @@ abstract public class BasicLibrary { * @throws IOException * in case of IOException */ - public Image getCustomAuthorCover(@SuppressWarnings("unused") String author) - throws IOException { + @SuppressWarnings("unused") + public Image getCustomAuthorCover(String author) throws IOException { return null; } @@ -245,6 +252,8 @@ abstract public class BasicLibrary { /** * Return the list of stories (represented by their {@link MetaData}, which * MAY not have the cover included). + *

+ * The returned list MUST be a copy, not the original one. * * @param pg * the optional {@link Progress} @@ -328,9 +337,6 @@ abstract public class BasicLibrary { * * @param pg * the optional progress reporter - * - * @throws IOException - * in case of IOException */ public void refresh(Progress pg) { try { @@ -525,13 +531,9 @@ abstract public class BasicLibrary { * the starting character, *, 0 or a capital * letter * - * @return the authors that fulfill the starting letter - * - * @throws IOException - * in case of IOException + * @return the authors that fulfil the starting letter */ - private List getAuthorsGroup(List authors, char car) - throws IOException { + private List getAuthorsGroup(List authors, char car) { List accepted = new ArrayList(); for (String author : authors) { char first = '*'; @@ -570,31 +572,29 @@ abstract public class BasicLibrary { } /** - * List all the stories of the given source type in the {@link BasicLibrary} - * , or all the stories if NULL is passed as a type. + * List all the stories of the given source type in the {@link BasicLibrary} , + * or all the stories if NULL is passed as a type. *

* Cover images not included. * - * @param type - * the type of story to retrieve, or NULL for all + * @param source the type of story to retrieve, or NULL for all * * @return the stories * - * @throws IOException - * in case of IOException + * @throws IOException in case of IOException + * + * @deprecated use {@link BasicLibrary#getList(Progress)} and + * {@link MetaResultList#filter(List, List, List)} */ - public synchronized List getListBySource(String type) - throws IOException { - List list = new ArrayList(); - for (MetaData meta : getMetas(null)) { - String storyType = meta.getSource(); - if (type == null || type.equalsIgnoreCase(storyType)) { - list.add(meta); - } + @Deprecated + public synchronized List getListBySource(String source) throws IOException { + List sources = null; + if (source != null) { + sources = new ArrayList(); + sources.add(source); } - Collections.sort(list); - return list; + return getList(null).filter(sources, null, null); } /** @@ -610,19 +610,18 @@ abstract public class BasicLibrary { * * @throws IOException * in case of IOException + * + * @deprecated use {@link BasicLibrary#getList(Progress)} and + * {@link MetaResultList#filter(List, List, List)} */ - public synchronized List getListByAuthor(String author) - throws IOException { - List list = new ArrayList(); - for (MetaData meta : getMetas(null)) { - String storyAuthor = meta.getAuthor(); - if (author == null || author.equalsIgnoreCase(storyAuthor)) { - list.add(meta); - } + public synchronized List getListByAuthor(String author) throws IOException { + List authors = null; + if (author != null) { + authors = new ArrayList(); + authors.add(author); } - Collections.sort(list); - return list; + return getList(null).filter(null, authors, null); } /** @@ -737,10 +736,8 @@ abstract public class BasicLibrary { } catch (IOException e) { // We should not have not-supported files in the // library - Instance.getTraceHandler().error( - new IOException(String.format( - "Cannot load file of type '%s' from library: %s", - meta.getType(), file), e)); + Instance.getInstance().getTraceHandler().error(new IOException( + String.format("Cannot load file of type '%s' from library: %s", meta.getType(), file), e)); } finally { pgProcess.done(); pg.done(); @@ -758,14 +755,14 @@ abstract public class BasicLibrary { * @param pg * the optional progress reporter * - * @return the imported {@link Story} + * @return the imported Story {@link MetaData} * * @throws UnknownHostException * if the host is not supported * @throws IOException * in case of I/O error */ - public Story imprt(URL url, Progress pg) throws IOException { + public MetaData imprt(URL url, Progress pg) throws IOException { if (pg == null) pg = new Progress(); @@ -783,7 +780,7 @@ abstract public class BasicLibrary { Story story = save(support.process(pgProcess), pgSave); pg.done(); - return story; + return story.getMeta(); } /** @@ -899,8 +896,7 @@ abstract public class BasicLibrary { public synchronized Story save(Story story, String luid, Progress pg) throws IOException { - Instance.getTraceHandler().trace( - this.getClass().getSimpleName() + ": saving story " + luid); + 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(); @@ -920,9 +916,8 @@ abstract public class BasicLibrary { updateInfo(story.getMeta()); - Instance.getTraceHandler().trace( - this.getClass().getSimpleName() + ": story saved (" + luid - + ")"); + Instance.getInstance().getTraceHandler() + .trace(this.getClass().getSimpleName() + ": story saved (" + luid + ")"); return story; } @@ -937,14 +932,13 @@ abstract public class BasicLibrary { * in case of I/O error */ public synchronized void delete(String luid) throws IOException { - Instance.getTraceHandler().trace( - this.getClass().getSimpleName() + ": deleting story " + luid); + Instance.getInstance().getTraceHandler().trace(this.getClass().getSimpleName() + ": deleting story " + luid); doDelete(luid); invalidateInfo(luid); - Instance.getTraceHandler().trace( - this.getClass().getSimpleName() + ": story deleted (" + luid + Instance.getInstance().getTraceHandler() + .trace(this.getClass().getSimpleName() + ": story deleted (" + luid + ")"); }