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;
import be.nikiroo.fanfix.supported.BasicSupport;
import be.nikiroo.fanfix.supported.BasicSupport.SupportType;
import be.nikiroo.fanfix.supported.InfoReader;
+import be.nikiroo.utils.IOUtils;
import be.nikiroo.utils.Progress;
/**
public synchronized List<String> getTypes() {
List<String> list = new ArrayList<String>();
for (Entry<MetaData, File> 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<String> getAuthors() {
+ List<String> list = new ArrayList<String>();
+ for (Entry<MetaData, File> 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<MetaData> getListByAuthor(String author) {
+ List<MetaData> list = new ArrayList<MetaData>();
+ for (Entry<MetaData, File> entry : getStories().entrySet()) {
+ String storyAuthor = entry.getKey().getAuthor();
+ if (author == null || author.equalsIgnoreCase(storyAuthor)) {
+ list.add(entry.getKey());
+ }
+ }
+
+ Collections.sort(list);
return list;
}
*
* @return the stories
*/
- public synchronized List<MetaData> getList(String type) {
+ public synchronized List<MetaData> getListByType(String type) {
List<MetaData> list = new ArrayList<MetaData>();
for (Entry<MetaData, File> entry : getStories().entrySet()) {
String storyType = entry.getValue().getParentFile().getName();
}
}
+ Collections.sort(list);
return list;
}
if (file != null) {
if (file.delete()) {
- String newExt = getOutputType(meta).getDefaultExtension(false);
+ String readerExt = getOutputType(meta)
+ .getDefaultExtension(true);
+ String fileExt = getOutputType(meta).getDefaultExtension(false);
String path = file.getAbsolutePath();
+ if (readerExt != null && !readerExt.equals(fileExt)) {
+ path = path
+ .substring(0, path.length() - readerExt.length())
+ + fileExt;
+ file = new File(path);
+ IOUtils.deltree(file);
+ }
+
File infoFile = new File(path + ".info");
if (!infoFile.exists()) {
infoFile = new File(path.substring(0, path.length()
- - newExt.length())
+ - fileExt.length())
+ ".info");
}
infoFile.delete();
File coverFile = new File(path + coverExt);
if (!coverFile.exists()) {
coverFile = new File(path.substring(0, path.length()
- - newExt.length()));
+ - fileExt.length()));
}
coverFile.delete();
* @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);
}