X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fstates%2FComicState.java;h=7e806860a563373ecdb5fbf288c4efafea92b11b;hb=e426b888068677738269eb378c24a6f62db3614d;hp=6bfd06be970f65af735f038c6e28782c9295d8a9;hpb=38f549e2cbf330ff5dce9dce6f81481f548c6427;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/states/ComicState.java b/src/main/java/net/pterodactylus/rhynodge/states/ComicState.java index 6bfd06b..7e80686 100644 --- a/src/main/java/net/pterodactylus/rhynodge/states/ComicState.java +++ b/src/main/java/net/pterodactylus/rhynodge/states/ComicState.java @@ -22,6 +22,7 @@ import java.util.List; import net.pterodactylus.rhynodge.states.ComicState.Comic; +import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.collect.Lists; /** @@ -32,43 +33,28 @@ import com.google.common.collect.Lists; */ public class ComicState extends AbstractState implements Iterable { - /** The comics in this state. */ - private List comics = Lists.newArrayList(); + @JsonProperty + private final List comics = Lists.newArrayList(); + + @Override + public boolean isEmpty() { + return comics.isEmpty(); + } - /** - * Returns the list of comics contained in this state. - * - * @return The list of comics in this state - */ public List comics() { return comics; } - /** - * Adds the given comic to this state. - * - * @param comic - * The comic to add - * @return This comic state - */ public ComicState add(Comic comic) { comics.add(comic); return this; } - // - // ITERABLE METHODS - // - @Override public Iterator iterator() { return comics.iterator(); } - // - // OBJECT METHODS - // - @Override public String toString() { return String.format("ComicState[comics=%s]", comics()); @@ -79,70 +65,39 @@ public class ComicState extends AbstractState implements Iterable { * * @author David ‘Bombe’ Roden */ - public static class Comic implements Iterable { + public static class Comic implements Iterable { - /** The title of the comic. */ + @JsonProperty private final String title; - /** The URLs of the comic’s images. */ - private final List imageUrls = Lists.newArrayList(); + @JsonProperty + private final List strips = Lists.newArrayList(); - /** - * Creates a new comic with the given title. - * - * @param title - * The title of the comic - */ - public Comic(String title) { + public Comic(@JsonProperty("title") String title) { this.title = title; } - /** - * Returns the title of this comic. - * - * @return The title of this comic - */ public String title() { return title; } - /** - * Returns the URLs of this comic’s images. - * - * @return The URLs of this comic’s images - */ - public List imageUrls() { - return imageUrls(); + public List strips() { + return strips; } - /** - * Adds an image URL to this comic. - * - * @param imageUrl - * The URL of the comic image to add - * @return This comic - */ - public Comic addImageUrl(String imageUrl) { - imageUrls.add(imageUrl); + public Comic add(Strip strip) { + strips.add(strip); return this; } - // - // ITERABLE METHODS - // - @Override - public Iterator iterator() { - return imageUrls.iterator(); + public Iterator iterator() { + return strips.iterator(); } - // - // OBJECT METHODS - // - @Override public int hashCode() { - return title.hashCode() ^ imageUrls().hashCode(); + return title.hashCode() ^ strips().hashCode(); } @Override @@ -151,12 +106,59 @@ public class ComicState extends AbstractState implements Iterable { return false; } Comic comic = (Comic) object; - return title().equals(comic.title()) && imageUrls().equals(comic.imageUrls()); + return title().equals(comic.title()) && strips().equals(comic.strips()); + } + + @Override + public String toString() { + return String.format("Comic[title=%s,strips=%s]", title(), strips()); + } + + } + + /** + * A strip is a single image that belongs to a comic. + * + * @author David ‘Bombe’ Roden + */ + public static class Strip { + + @JsonProperty + private final String imageUrl; + + @JsonProperty + private final String comment; + + public Strip(@JsonProperty("imageUrl") String imageUrl, @JsonProperty("comment") String comment) { + this.imageUrl = imageUrl; + this.comment = comment; + } + + public String imageUrl() { + return imageUrl; + } + + public String comment() { + return comment; + } + + @Override + public int hashCode() { + return imageUrl().hashCode() ^ comment().hashCode(); + } + + @Override + public boolean equals(Object object) { + if (!(object instanceof Strip)) { + return false; + } + Strip strip = (Strip) object; + return imageUrl().equals(strip.imageUrl()) && comment().equals(strip.comment()); } @Override public String toString() { - return String.format("Comic[title=%s,imageUrls=%s]", title(), imageUrls()); + return String.format("Strip[imageUrl=%s,comment=%s]", imageUrl(), comment()); } }