X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Ffanfix%2FLibrary.java;h=ccbd7d40b67b7e6e78c8b43fd95a999c9eb49285;hb=4310bae9326894d9a9f5c7d34e552437e1156ddb;hp=eb9c9a39f3d4ae76298fd636c0e3e6ad43a962cc;hpb=9843a5e5c44825ac404f45ddccd6f63e554567a4;p=fanfix.git diff --git a/src/be/nikiroo/fanfix/Library.java b/src/be/nikiroo/fanfix/Library.java index eb9c9a3..ccbd7d4 100644 --- a/src/be/nikiroo/fanfix/Library.java +++ b/src/be/nikiroo/fanfix/Library.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.IOException; import java.net.URL; import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -63,12 +64,53 @@ public class Library { public synchronized List getTypes() { List list = new ArrayList(); for (Entry entry : getStories().entrySet()) { - String storyType = entry.getValue().getParentFile().getName(); + String storyType = entry.getKey().getSource(); if (!list.contains(storyType)) { list.add(storyType); } } + Collections.sort(list); + return list; + } + + /** + * List all the known authors of stories. + * + * @return the authors + */ + public synchronized List getAuthors() { + List list = new ArrayList(); + for (Entry entry : getStories().entrySet()) { + String storyAuthor = entry.getKey().getAuthor(); + if (!list.contains(storyAuthor)) { + list.add(storyAuthor); + } + } + + Collections.sort(list); + return list; + } + + /** + * List all the stories of the given author in the {@link Library}, or all + * the stories if NULL is passed as an author. + * + * @param author + * the author of the stories to retrieve, or NULL for all + * + * @return the stories + */ + public synchronized List getListByAuthor(String author) { + List list = new ArrayList(); + for (Entry entry : getStories().entrySet()) { + String storyAuthor = entry.getKey().getAuthor(); + if (author == null || author.equalsIgnoreCase(storyAuthor)) { + list.add(entry.getKey()); + } + } + + Collections.sort(list); return list; } @@ -81,7 +123,7 @@ public class Library { * * @return the stories */ - public synchronized List getList(String type) { + public synchronized List getListByType(String type) { List list = new ArrayList(); for (Entry entry : getStories().entrySet()) { String storyType = entry.getValue().getParentFile().getName(); @@ -90,6 +132,7 @@ public class Library { } } + Collections.sort(list); return list; } @@ -388,7 +431,11 @@ public class Library { * @return the target */ private File getFile(MetaData key) { - String title = key.getTitle().replaceAll("[^a-zA-Z0-9._+-]", "_"); + String title = key.getTitle(); + if (title == null) { + title = ""; + } + title = title.replaceAll("[^a-zA-Z0-9._+-]", "_"); return new File(getDir(key), key.getLuid() + "_" + title); }