♻️ Convert Performace to Kotlin data class
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 8 Mar 2024 11:21:26 +0000 (12:21 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Fri, 8 Mar 2024 11:21:26 +0000 (12:21 +0100)
src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.java [deleted file]
src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/MovieState.kt
src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.kt [new file with mode: 0644]

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
deleted file mode 100644 (file)
index dd4c165..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-package net.pterodactylus.rhynodge.filters.webpages.savoy;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import java.time.LocalDateTime;
-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 type;
-
-       @JsonProperty
-       private final String link;
-
-       public Performance() {
-               this(null, null, null);
-       }
-
-       public Performance(LocalDateTime time, String type, String link) {
-               this.time = time;
-               this.type = type;
-               this.link = link;
-       }
-
-       public LocalDateTime getTime() {
-               return time;
-       }
-
-       public String getType() {
-               return type;
-       }
-
-       public String getLink() {
-               return link;
-       }
-
-       @Override
-       public int hashCode() {
-               return Objects.hash(time, type, 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(type, that.type) && Objects.equals(link, that.link);
-       }
-
-}
index fa8a9c0..8d84b4f 100644 (file)
@@ -84,7 +84,7 @@ class MovieState(@JsonProperty val movies: Collection<Movie>, val newMovies: Col
                        section("daily-programmes") {
 
                                ol("days") {
-                                       movies.flatMap { it.performances.map(Performance::getTime).map(LocalDateTime::toLocalDate) }.distinct().sorted().forEach { date ->
+                                       movies.flatMap { it.performances.map(Performance::time).map(LocalDateTime::toLocalDate) }.distinct().sorted().forEach { date ->
                                                li("day") {
                                                        attributes += "data-date" to "%tY-%<tm-%<td".format(date)
                                                        div("label") {
@@ -125,6 +125,6 @@ class MovieState(@JsonProperty val movies: Collection<Movie>, val newMovies: Col
        override fun triggered() = newMovies.isNotEmpty() || triggered
 
        private val earliestMovie = movies.minByOrNull { it.earliestPerformance ?: LocalDateTime.MAX }
-       private val Movie.earliestPerformance: LocalDateTime? get() = performances.minOfOrNull(Performance::getTime)
+       private val Movie.earliestPerformance: LocalDateTime? get() = performances.minOfOrNull(Performance::time)
 
 }
diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.kt b/src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/Performance.kt
new file mode 100644 (file)
index 0000000..66ddacf
--- /dev/null
@@ -0,0 +1,14 @@
+package net.pterodactylus.rhynodge.filters.webpages.savoy
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import java.time.LocalDateTime
+import java.util.Objects
+
+/**
+ * Information about a performance and a link to buy a ticket.
+ */
+data class Performance @JvmOverloads constructor(
+       @field:JsonProperty val time: LocalDateTime = LocalDateTime.now(),
+       @field:JsonProperty val type: String = "",
+       @field:JsonProperty val link: String = ""
+)