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.
*
*/
public class Movie {
+ @JsonProperty
private final String name;
+
+ @JsonProperty
private final List<Performance> performances = new ArrayList<>();
- public static final Predicate<Movie> withPerformances = movie -> !movie.getPerformances().isEmpty();
- public static final Comparator<Movie> byName = (leftMovie, rightMovie) -> leftMovie.getName().compareToIgnoreCase(rightMovie.getName());
+ public Movie() {
+ this("");
+ }
public Movie(String name) {
this.name = name;
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);
+ }
+
}
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<Performance> byTime = (leftPerformance, rightPerformance) -> leftPerformance.getTime().compareTo(rightPerformance.getTime());
+ public Performance() {
+ this(null, null);
+ }
public Performance(LocalDateTime time, String link) {
this.time = time;
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);
+ }
+
}