1 package net.pterodactylus.rhynodge.webpages.weather.wettercom
3 import com.fasterxml.jackson.annotation.JsonProperty
6 * Container for weather conditions of a single hour.
8 * @author [David ‘Bombe’ Roden](mailto:bombe@pterodactylus.net)
11 @JsonProperty("hourIndex") val hourIndex: Int,
12 @JsonProperty("temperature") val temperature: Double,
13 @JsonProperty("rainProbability") val rainProbability: Double,
14 @JsonProperty("rainAmount") val rainAmount: Double,
15 @JsonProperty("windDirection") val windDirection: WindDirection,
16 @JsonProperty("windSpeed") val windSpeed: Double,
17 @JsonProperty("description") val description: String,
18 @JsonProperty("image") val image: String) {
20 class Builder(private val hourIndex: Int) {
22 fun temperature(temperature: Double) = _1(temperature)
24 inner class _1(private val temperature: Double) {
26 fun rainProbability(rainProbability: Double) = _2(rainProbability)
28 inner class _2(private val rainProbability: Double) {
30 fun rainAmount(rainAmount: Double) = _3(rainAmount)
32 inner class _3(private val rainAmount: Double) {
34 fun windFrom(windDirection: WindDirection) = _4(windDirection);
36 inner class _4(private val windDirection: WindDirection) {
38 fun at(windSpeed: Double) = _5(windSpeed)
40 inner class _5(private val windSpeed: Double) {
42 fun describedAs(description: String) = _6(description)
44 inner class _6(private val description: String) {
46 fun withImage(imageUrl: String) = _7(imageUrl)
48 inner class _7(private val imageUrl: String) {
50 fun build(): HourState {
51 return HourState(hourIndex, temperature, rainProbability, rainAmount, windDirection, windSpeed, description, imageUrl)
72 fun atHour(hourIndex: Int) = Builder(hourIndex)