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

diff --git a/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyTicketsFilter.java b/src/main/java/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyTicketsFilter.java
deleted file mode 100644 (file)
index 5fa2fff..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-package net.pterodactylus.rhynodge.filters.webpages.savoy;
-
-import net.pterodactylus.rhynodge.Filter;
-import net.pterodactylus.rhynodge.State;
-import net.pterodactylus.rhynodge.states.HtmlState;
-import org.apache.log4j.Logger;
-import org.jetbrains.annotations.NotNull;
-
-import java.util.Collection;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static java.util.Collections.emptySet;
-
-/**
- * {@link Filter} implementation that creates a list of movies running at the
- * Savoy theatre in Hamburg.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
- */
-public class SavoyTicketsFilter implements Filter {
-
-       private static final MovieExtractor movieExtractor = new MovieExtractor();
-
-       @NotNull
-       @Override
-       public State filter(@NotNull State state) {
-               checkArgument(state instanceof HtmlState, "state must be HTML");
-
-               HtmlState htmlState = (HtmlState) state;
-               Collection<Movie> movies = movieExtractor.getMovies(htmlState.document());
-               Logger.getLogger(SavoyTicketsFilter.class).debug("Parsed Movies: " + movies);
-               return new MovieState(movies, emptySet(), false);
-       }
-
-}
diff --git a/src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyTicketsFilter.kt b/src/main/kotlin/net/pterodactylus/rhynodge/filters/webpages/savoy/SavoyTicketsFilter.kt
new file mode 100644 (file)
index 0000000..10ab93c
--- /dev/null
@@ -0,0 +1,24 @@
+package net.pterodactylus.rhynodge.filters.webpages.savoy
+
+import net.pterodactylus.rhynodge.Filter
+import net.pterodactylus.rhynodge.State
+import net.pterodactylus.rhynodge.states.HtmlState
+import org.apache.log4j.Logger
+
+/**
+ * [Filter] implementation that creates a list of movies running at the
+ * Savoy theatre in Hamburg.
+ */
+class SavoyTicketsFilter : Filter {
+
+       override fun filter(state: State) =
+               requireNotNull(state as? HtmlState) { "state must be HTML" }
+                       .document()
+                       .let(movieExtractor::getMovies)
+                       .also { logger.debug("Parsed Movies: $it") }
+                       .let { MovieState(it, emptySet(), false) }
+
+}
+
+private val logger = Logger.getLogger(SavoyTicketsFilter::class.java)
+private val movieExtractor = MovieExtractor()