package be.nikiroo.fanfix.data;
-import java.net.URL;
+import be.nikiroo.utils.Image;
/**
* A paragraph in a chapter of the story.
*
* @author niki
*/
-public class Paragraph {
+public class Paragraph implements Cloneable {
/**
* A paragraph type, that will dictate how the paragraph will be handled.
*
private ParagraphType type;
private String content;
+ private Image contentImage;
+ private long words;
+
+ /**
+ * Empty constructor, not to use.
+ */
+ @SuppressWarnings("unused")
+ private Paragraph() {
+ // for serialisation purposes
+ }
+
+ /**
+ * Create a new {@link Paragraph} with the given image.
+ *
+ * @param contentImage
+ * the image
+ */
+ public Paragraph(Image contentImage) {
+ this(ParagraphType.IMAGE, null, 1);
+ this.contentImage = contentImage;
+ }
/**
* Create a new {@link Paragraph} with the given values.
* the {@link ParagraphType}
* @param content
* the content of this paragraph
+ * @param words
+ * the number of words (or images)
*/
- public Paragraph(ParagraphType type, String content) {
+ public Paragraph(ParagraphType type, String content, long words) {
this.type = type;
this.content = content;
- }
-
- /**
- * Create a new {@link Paragraph} with the given image.
- *
- * @param support
- * the support that will be used to fetch the image via
- * {@link Paragraph#getContentImage()}.
- * @param content
- * the content image of this paragraph
- */
- public Paragraph(URL imageUrl) {
- this.type = ParagraphType.IMAGE;
- this.content = imageUrl.toString();
+ this.words = words;
}
/**
}
/**
- * The content of this {@link Paragraph}.
+ * The content of this {@link Paragraph} if it is not an image.
*
* @return the content
*/
this.content = content;
}
+ /**
+ * The content of this {@link Paragraph} if it is an image.
+ *
+ * @return the content
+ */
+ public Image getContentImage() {
+ return contentImage;
+ }
+
+ /**
+ * The number of words (or images) in this {@link Paragraph}.
+ *
+ * @return the number of words
+ */
+ public long getWords() {
+ return words;
+ }
+
+ /**
+ * The number of words (or images) in this {@link Paragraph}.
+ *
+ * @param words
+ * the number of words to set
+ */
+ public void setWords(long words) {
+ this.words = words;
+ }
+
/**
* Display a DEBUG {@link String} representation of this object.
*/
@Override
public String toString() {
- return String.format("%s: [%s]", "" + type, "" + content);
+ return String.format("%s: [%s]", "" + type, content == null ? "N/A"
+ : content);
+ }
+
+ @Override
+ public Paragraph clone() {
+ Paragraph para = null;
+ try {
+ para = (Paragraph) super.clone();
+ } catch (CloneNotSupportedException e) {
+ // Did the clones rebel?
+ System.err.println(e);
+ }
+
+ return para;
}
}