From 65ea9a5bde3922ab14edda0deb8f8350e89f37c6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sat, 24 Feb 2024 23:19:32 +0100 Subject: [PATCH] =?utf8?q?=F0=9F=9A=A7=20Make=20Movie=20and=20Performance?= =?utf8?q?=20JSON-serializable?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../rhynodge/filters/webpages/savoy/Movie.java | 28 ++++++++++++++++++---- .../filters/webpages/savoy/Performance.java | 24 +++++++++++++++++-- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Movie.java b/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Movie.java index 42480f9..0844b7c 100644 --- a/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Movie.java +++ b/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Movie.java @@ -1,13 +1,14 @@ package net.pterodactylus.rhynodge.filters.webpages.savoy; -import static java.lang.String.format; +import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; -import java.util.function.Predicate; +import java.util.Objects; import java.util.stream.Collectors; +import static java.lang.String.format; + /** * Information about a movie. * @@ -15,11 +16,15 @@ import java.util.stream.Collectors; */ public class Movie { + @JsonProperty private final String name; + + @JsonProperty private final List performances = new ArrayList<>(); - public static final Predicate withPerformances = movie -> !movie.getPerformances().isEmpty(); - public static final Comparator byName = (leftMovie, rightMovie) -> leftMovie.getName().compareToIgnoreCase(rightMovie.getName()); + public Movie() { + this(""); + } public Movie(String name) { this.name = name; @@ -42,4 +47,17 @@ public class Movie { return format("%s (%s)", name, performances.stream().map(link -> String.format("%s: %s", link.getTime(), link.getLink())).collect(Collectors.joining(", "))); } + @Override + public int hashCode() { + return Objects.hash(name, performances); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Movie movie = (Movie) o; + return Objects.equals(name, movie.name) && Objects.equals(performances, movie.performances); + } + } diff --git a/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.java b/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.java index 4585e6e..c50dd31 100644 --- a/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.java +++ b/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.java @@ -1,17 +1,24 @@ package net.pterodactylus.rhynodge.filters.webpages.savoy; +import com.fasterxml.jackson.annotation.JsonProperty; + import java.time.LocalDateTime; -import java.util.Comparator; +import java.util.Objects; /** * Information about a performance and a link to buy a ticket. */ public class Performance { + @JsonProperty private final LocalDateTime time; + + @JsonProperty private final String link; - public static final Comparator byTime = (leftPerformance, rightPerformance) -> leftPerformance.getTime().compareTo(rightPerformance.getTime()); + public Performance() { + this(null, null); + } public Performance(LocalDateTime time, String link) { this.time = time; @@ -26,4 +33,17 @@ public class Performance { return link; } + @Override + public int hashCode() { + return Objects.hash(time, link); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Performance that = (Performance) o; + return Objects.equals(time, that.time) && Objects.equals(link, that.link); + } + } -- 2.7.4