package be.nikiroo.fanfix.data; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * The main data class, where the whole story resides. * * @author niki */ public class Story implements Iterable { private MetaData meta; private List chapters = new ArrayList(); private List empty = new ArrayList(); /** * The metadata about this {@link Story}. * * @return the meta */ public MetaData getMeta() { return meta; } /** * The metadata about this {@link Story}. * * @param meta * the meta to set */ public void setMeta(MetaData meta) { this.meta = meta; } /** * The chapters of the story. * * @return the chapters */ public List getChapters() { return chapters; } /** * The chapters of the story. * * @param chapters * the chapters to set */ public void setChapters(List chapters) { this.chapters = chapters; } /** * Get an iterator on the {@link Chapter}s. */ public Iterator iterator() { return chapters == null ? empty.iterator() : chapters.iterator(); } /** * Display a DEBUG {@link String} representation of this object. *

* This is not efficient, nor intended to be. */ @Override public String toString() { String title = ""; if (meta != null && meta.getTitle() != null) { title = meta.getTitle(); } String tags = ""; if (meta != null && meta.getTags() != null) { for (String tag : meta.getTags()) { if (!tags.isEmpty()) { tags += ", "; } tags += tag; } } String resume = ""; if (meta != null && meta.getResume() != null) { for (Paragraph para : meta.getResume()) { resume += "\n\t"; resume += para.toString().substring(0, Math.min(para.toString().length(), 120)); } resume += "\n"; } String cover = (meta == null || meta.getCover() == null) ? "none" : meta.getCover().getWidth() + "x" + meta.getCover().getHeight(); return String.format( "Title: [%s]\nAuthor: [%s]\nDate: [%s]\nTags: [%s]\n" + "Resume: [%s]\nCover: [%s]", title, meta == null ? "" : meta.getAuthor(), meta == null ? "" : meta.getDate(), tags, resume, cover); } }