Fixes, new version number: 0.9.2
[fanfix.git] / src / be / nikiroo / fanfix / data / MetaData.java
index 3980e96bc77b8ad359bee903381633daf832e3f4..55c18de7d0596d0ba43b925ae00c0773100806a8 100644 (file)
@@ -1,6 +1,7 @@
 package be.nikiroo.fanfix.data;
 
 import java.awt.image.BufferedImage;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -8,7 +9,7 @@ import java.util.List;
  * 
  * @author niki
  */
-public class MetaData {
+public class MetaData implements Cloneable {
        private String title;
        private String author;
        private String date;
@@ -17,10 +18,12 @@ public class MetaData {
        private BufferedImage cover;
        private String subject;
        private String source;
+       private String url;
        private String uuid;
        private String luid;
        private String lang;
        private String publisher;
+       private String type;
        private boolean imageDocument;
 
        /**
@@ -161,7 +164,7 @@ public class MetaData {
        }
 
        /**
-        * The source of this story (where it was downloaded from).
+        * The source of this story (which online library it was downloaded from).
         * 
         * @return the source
         */
@@ -170,7 +173,7 @@ public class MetaData {
        }
 
        /**
-        * The source of this story (where it was downloaded from).
+        * The source of this story (which online library it was downloaded from).
         * 
         * @param source
         *            the source to set
@@ -180,7 +183,26 @@ public class MetaData {
        }
 
        /**
-        * A unique value representing the story (it is often an URL).
+        * The original URL from which this {@link Story} was imported.
+        * 
+        * @return the url
+        */
+       public String getUrl() {
+               return url;
+       }
+
+       /**
+        * The original URL from which this {@link Story} was imported.
+        * 
+        * @param url
+        *            the new url to set
+        */
+       public void setUrl(String url) {
+               this.url = url;
+       }
+
+       /**
+        * A unique value representing the story (it is often a URL).
         * 
         * @return the uuid
         */
@@ -189,7 +211,7 @@ public class MetaData {
        }
 
        /**
-        * A unique value representing the story (it is often an URL).
+        * A unique value representing the story (it is often a URL).
         * 
         * @param uuid
         *            the uuid to set
@@ -255,6 +277,25 @@ public class MetaData {
                this.publisher = publisher;
        }
 
+       /**
+        * The output type this {@link Story} is in.
+        * 
+        * @return the type the type
+        */
+       public String getType() {
+               return type;
+       }
+
+       /**
+        * The output type this {@link Story} is in.
+        * 
+        * @param type
+        *            the new type to set
+        */
+       public void setType(String type) {
+               this.type = type;
+       }
+
        /**
         * Document catering mostly to image files.
         * 
@@ -273,4 +314,28 @@ public class MetaData {
        public void setImageDocument(boolean imageDocument) {
                this.imageDocument = imageDocument;
        }
+
+       @Override
+       public MetaData clone() {
+               MetaData meta = null;
+               try {
+                       meta = (MetaData) super.clone();
+               } catch (CloneNotSupportedException e) {
+                       // Did the clones rebel?
+                       System.err.println(e);
+               }
+
+               if (tags != null) {
+                       meta.tags = new ArrayList<String>();
+                       meta.tags.addAll(tags);
+               }
+               if (resume != null) {
+                       meta.resume = new Chapter(resume.getNumber(), resume.getName());
+                       for (Paragraph para : resume) {
+                               meta.resume.getParagraphs().add(para);
+                       }
+               }
+
+               return meta;
+       }
 }