*
* @author niki
*/
-public class Chapter implements Iterable<Paragraph> {
+public class Chapter implements Iterable<Paragraph>, Cloneable {
private String name;
private int number;
private List<Paragraph> paragraphs = new ArrayList<Paragraph>();
private List<Paragraph> empty = new ArrayList<Paragraph>();
private long words;
+ /**
+ * Empty constructor, not to use.
+ */
+ @SuppressWarnings("unused")
+ private Chapter() {
+ // for serialisation purposes
+ }
+
/**
* Create a new {@link Chapter} with the given information.
*
/**
* Get an iterator on the {@link Paragraph}s.
*/
+ @Override
public Iterator<Paragraph> iterator() {
return paragraphs == null ? empty.iterator() : paragraphs.iterator();
}
/**
- * The number of words in this {@link Chapter}.
+ * The number of words (or images) in this {@link Chapter}.
*
* @return the number of words
*/
}
/**
- * The number of words in this {@link Chapter}.
+ * The number of words (or images) in this {@link Chapter}.
*
* @param words
* the number of words to set
public String toString() {
return "Chapter " + number + ": " + name;
}
+
+ @Override
+ public Chapter clone() {
+ Chapter chap = null;
+ try {
+ chap = (Chapter) super.clone();
+ } catch (CloneNotSupportedException e) {
+ // Did the clones rebel?
+ System.err.println(e);
+ }
+
+ if (paragraphs != null) {
+ chap.paragraphs = new ArrayList<Paragraph>();
+ for (Paragraph para : paragraphs) {
+ chap.paragraphs.add(para.clone());
+ }
+ }
+
+ return chap;
+ }
}