Fix UTF-8 and "/" -> "\" issues for Win32
[fanfix.git] / src / be / nikiroo / fanfix / Library.java
index abe760b0d24e31862764093be7bdbcf0b670ce0d..a8d9302bfe15cc05d87fe11345b11e6e3f3c0284 100644 (file)
@@ -52,6 +52,23 @@ public class Library {
                dir.mkdirs();
        }
 
+       /**
+        * List all the known types of stories.
+        * 
+        * @return the types
+        */
+       public List<String> getTypes() {
+               List<String> list = new ArrayList<String>();
+               for (Entry<MetaData, File> entry : getStories().entrySet()) {
+                       String storyType = entry.getValue().getParentFile().getName();
+                       if (!list.contains(storyType)) {
+                               list.add(storyType);
+                       }
+               }
+
+               return list;
+       }
+
        /**
         * List all the stories of the given source type in the {@link Library}, or
         * all the stories if NULL is passed as a type.
@@ -61,13 +78,11 @@ public class Library {
         * 
         * @return the stories
         */
-       public List<MetaData> getList(SupportType type) {
-               String typeString = type == null ? null : type.getSourceName();
-
+       public List<MetaData> getList(String type) {
                List<MetaData> list = new ArrayList<MetaData>();
                for (Entry<MetaData, File> entry : getStories().entrySet()) {
                        String storyType = entry.getValue().getParentFile().getName();
-                       if (typeString == null || typeString.equalsIgnoreCase(storyType)) {
+                       if (type == null || type.equalsIgnoreCase(storyType)) {
                                list.add(entry.getKey());
                        }
                }
@@ -121,7 +136,7 @@ public class Library {
         * @param luid
         *            the Library UID of the story
         * 
-        * @return the corresponding {@link Story}
+        * @return the corresponding {@link Story} or NULL if not found
         */
        public Story getStory(String luid) {
                if (luid != null) {
@@ -194,6 +209,11 @@ public class Library {
                        throw new IOException("Output type not supported: " + type);
                }
 
+               Story story = getStory(luid);
+               if (story == null) {
+                       throw new IOException("Cannot find story to export: " + luid);
+               }
+
                return out.process(getStory(luid), target);
        }
 
@@ -227,7 +247,9 @@ public class Library {
         *             in case of I/O error
         */
        private Story save(Story story, String luid) throws IOException {
+               // Do not change the original metadata, but change the original story
                MetaData key = story.getMeta().clone();
+               story.setMeta(key);
 
                if (luid == null || luid.isEmpty()) {
                        getStories(); // refresh lastId if needed