import static java.util.Optional.empty;
import static java.util.Optional.of;
import static net.pterodactylus.rhynodge.filters.webpages.savoy.Movie.byName;
-import static net.pterodactylus.rhynodge.filters.webpages.savoy.Movie.withPresentations;
-import static net.pterodactylus.rhynodge.filters.webpages.savoy.TicketLink.byPresentationTime;
+import static net.pterodactylus.rhynodge.filters.webpages.savoy.Movie.withPerformances;
+import static net.pterodactylus.rhynodge.filters.webpages.savoy.Performance.byTime;
import static org.jsoup.nodes.Document.createShell;
import static org.jsoup.parser.Tag.valueOf;
document.head().appendElement("style").attr("type", "text/css").text(generateStyleSheet());
document.body().appendElement("h1").text("Kinoprogramm: Savoy");
document.body().appendElement("h2").text("Filme");
- movies.stream().filter(withPresentations).sorted(byName).forEach(movie -> {
+ movies.stream().filter(withPerformances).sorted(byName).forEach(movie -> {
document.body().appendChild(createMovieNode(movie));
});
document.body().appendElement("h2").text("Zeiten");
- movies.stream().flatMap(movie -> movie.getTicketLinks().stream().map(ticketLink -> new Presentation(movie, ticketLink))).sorted((leftPresentation, rightPresentation) -> leftPresentation.getTicketLink().getPresentationTime().compareTo(rightPresentation.getTicketLink().getPresentationTime())).collect(Collectors.<Presentation, LocalDate>groupingBy(presentation -> presentation.getTicketLink().getPresentationTime().toLocalDate())).entrySet().stream().sorted((leftEntry, rightEntry) -> leftEntry.getKey().compareTo(rightEntry.getKey())).forEach(dateEntry -> {
+ movies.stream().flatMap(movie -> movie.getPerformances().stream().map(performance -> new Presentation(movie, performance))).sorted((leftPresentation, rightPresentation) -> leftPresentation.getTicketLink().getTime().compareTo(rightPresentation.getTicketLink().getTime())).collect(Collectors.<Presentation, LocalDate>groupingBy(presentation -> presentation.getTicketLink().getTime().toLocalDate())).entrySet().stream().sorted((leftEntry, rightEntry) -> leftEntry.getKey().compareTo(rightEntry.getKey())).forEach(dateEntry -> {
document.body().appendChild(createDayNode(dateEntry.getKey(), dateEntry.getValue()));
});
document.body().appendElement("h2").text("Vorschau");
- movies.stream().filter(withPresentations.negate()).sorted(byName).forEach(movie -> {
+ movies.stream().filter(withPerformances.negate()).sorted(byName).forEach(movie -> {
document.body().appendElement("div").attr("class", "name").text(movie.getName());
});
return of(document.toString());
Element movieNode = new Element(valueOf("div"), "");
movieNode.attr("class", "movie");
movieNode.appendElement("div").attr("class", "name").text(movie.getName());
- movie.getTicketLinks().stream().sorted(byPresentationTime).forEach(ticketLink -> {
+ movie.getPerformances().stream().sorted(byTime).forEach(performance -> {
Element presentationNode = movieNode.appendElement("div").attr("class", "presentation");
- presentationNode.appendElement("div").attr("class", "time").text("» ").appendElement("a").attr("href", ticketLink.getLink()).text(ticketLink.getPresentationTime().format(dateTimeFormatter));
+ presentationNode.appendElement("div").attr("class", "time").text("» ").appendElement("a").attr("href", performance.getLink()).text(performance.getTime().format(dateTimeFormatter));
});
return movieNode;
}
dayNode.appendElement("div").attr("class", "date").text(date.format(dateFormatter));
presentations.stream().forEach(presentation -> {
Element presentationNode = dayNode.appendElement("div").attr("class", "presentation");
- presentationNode.appendElement("div").attr("class", "time").text("» " + presentation.getTicketLink().getPresentationTime().format(timeFormatter));
+ presentationNode.appendElement("div").attr("class", "time").text("» " + presentation.getTicketLink().getTime().format(timeFormatter));
presentationNode.appendElement("div").attr("class", "movie").appendElement("a").attr("href", presentation.getTicketLink().getLink()).text(presentation.getMovie().getName());
});
return dayNode;
private static class Presentation {
private final Movie movie;
- private final TicketLink ticketLink;
+ private final Performance performance;
- private Presentation(Movie movie, TicketLink ticketLink) {
+ private Presentation(Movie movie, Performance performance) {
this.movie = movie;
- this.ticketLink = ticketLink;
+ this.performance = performance;
}
private Movie getMovie() {
return movie;
}
- private TicketLink getTicketLink() {
- return ticketLink;
+ private Performance getTicketLink() {
+ return performance;
}
}