Partial HTML implementation, partial GUI support
[fanfix.git] / src / be / nikiroo / fanfix / Library.java
index 304f19f462e1a05a899e4b01de430e6c283abfef..15b81e44db7aca3caf8869f8f0b53539e1ddb8aa 100644 (file)
@@ -75,6 +75,26 @@ public class Library {
                return list;
        }
 
+       /**
+        * Retrieve a {@link File} corresponding to the given {@link Story}.
+        * 
+        * @param luid
+        *            the Library UID of the story
+        * 
+        * @return the corresponding {@link Story}
+        */
+       public MetaData getInfo(String luid) {
+               if (luid != null) {
+                       for (Entry<MetaData, File> entry : getStories().entrySet()) {
+                               if (luid.equals(entry.getKey().getLuid())) {
+                                       return entry.getKey();
+                               }
+                       }
+               }
+
+               return null;
+       }
+
        /**
         * Retrieve a {@link File} corresponding to the given {@link Story}.
         * 
@@ -174,6 +194,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);
        }
 
@@ -207,7 +232,9 @@ public class Library {
         *             in case of I/O error
         */
        private Story save(Story story, String luid) throws IOException {
-               MetaData key = story.getMeta();
+               // 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