*
* @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.
/**
* The included paragraphs.
*
- * @param paragraphes
+ * @param paragraphs
* the paragraphs to set
*/
public void setParagraphs(List<Paragraph> paragraphs) {
/**
* Get an iterator on the {@link Paragraph}s.
*/
+ @Override
public Iterator<Paragraph> iterator() {
return paragraphs == null ? empty.iterator() : paragraphs.iterator();
}
+ /**
+ * The number of words (or images) in this {@link Chapter}.
+ *
+ * @return the number of words
+ */
+ public long getWords() {
+ return words;
+ }
+
+ /**
+ * The number of words (or images) in this {@link Chapter}.
+ *
+ * @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.
*/
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;
+ }
}