1 package net.pterodactylus.rhynodge.webpages.weather.wettercom
3 import com.fasterxml.jackson.annotation.JsonProperty
4 import net.pterodactylus.rhynodge.webpages.weather.WindDirection
7 * Container for weather conditions of a single hour.
9 * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
12 @JsonProperty("hourIndex") val hourIndex: Int,
13 @JsonProperty("temperature") val temperature: Double,
14 @JsonProperty("rainProbability") val rainProbability: Double,
15 @JsonProperty("rainAmount") val rainAmount: Double,
16 @JsonProperty("windDirection") val windDirection: WindDirection,
17 @JsonProperty("windSpeed") val windSpeed: Double,
18 @JsonProperty("description") val description: String,
19 @JsonProperty("image") val image: String) {
21 class Builder(private val hourIndex: Int) {
23 fun temperature(temperature: Double) = _1(temperature)
25 inner class _1(private val temperature: Double) {
27 fun rainProbability(rainProbability: Double) = _2(rainProbability)
29 inner class _2(private val rainProbability: Double) {
31 fun rainAmount(rainAmount: Double) = _3(rainAmount)
33 inner class _3(private val rainAmount: Double) {
35 fun windFrom(windDirection: WindDirection) = _4(windDirection);
37 inner class _4(private val windDirection: WindDirection) {
39 fun at(windSpeed: Double) = _5(windSpeed)
41 inner class _5(private val windSpeed: Double) {
43 fun describedAs(description: String) = _6(description)
45 inner class _6(private val description: String) {
47 fun withImage(imageUrl: String) = _7(imageUrl)
49 inner class _7(private val imageUrl: String) {
51 fun build(): HourState {
52 return HourState(hourIndex, temperature, rainProbability, rainAmount, windDirection, windSpeed, description, imageUrl)
73 fun atHour(hourIndex: Int) = Builder(hourIndex)