]> git.basschouten.com Git - openhab-addons.git/blob
4cbae11721db0347535d174dd2ce5416d59b8947
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.energidataservice.internal.api.dto;
14
15 import java.math.BigDecimal;
16 import java.time.LocalDateTime;
17 import java.time.LocalTime;
18 import java.util.HashMap;
19 import java.util.Map;
20 import java.util.Objects;
21
22 import org.eclipse.jdt.annotation.NonNullByDefault;
23
24 import com.google.gson.annotations.SerializedName;
25
26 /**
27  * Record as part of {@link DatahubPricelistRecords} from Energi Data Service.
28  *
29  * @author Jacob Laursen - Initial contribution
30  */
31 @NonNullByDefault
32 public record DatahubPricelistRecord(@SerializedName("ValidFrom") LocalDateTime validFrom,
33         @SerializedName("ValidTo") LocalDateTime validTo, @SerializedName("ChargeTypeCode") String chargeTypeCode,
34         @SerializedName("Price1") BigDecimal price1, @SerializedName("Price2") BigDecimal price2,
35         @SerializedName("Price3") BigDecimal price3, @SerializedName("Price4") BigDecimal price4,
36         @SerializedName("Price5") BigDecimal price5, @SerializedName("Price6") BigDecimal price6,
37         @SerializedName("Price7") BigDecimal price7, @SerializedName("Price8") BigDecimal price8,
38         @SerializedName("Price9") BigDecimal price9, @SerializedName("Price10") BigDecimal price10,
39         @SerializedName("Price11") BigDecimal price11, @SerializedName("Price12") BigDecimal price12,
40         @SerializedName("Price13") BigDecimal price13, @SerializedName("Price14") BigDecimal price14,
41         @SerializedName("Price15") BigDecimal price15, @SerializedName("Price16") BigDecimal price16,
42         @SerializedName("Price17") BigDecimal price17, @SerializedName("Price18") BigDecimal price18,
43         @SerializedName("Price19") BigDecimal price19, @SerializedName("Price20") BigDecimal price20,
44         @SerializedName("Price21") BigDecimal price21, @SerializedName("Price22") BigDecimal price22,
45         @SerializedName("Price23") BigDecimal price23, @SerializedName("Price24") BigDecimal price24) {
46
47     @Override
48     public LocalDateTime validTo() {
49         return Objects.isNull(validTo) ? LocalDateTime.MAX : validTo;
50     }
51
52     @Override
53     public BigDecimal price2() {
54         return Objects.requireNonNullElse(price2, price1());
55     }
56
57     @Override
58     public BigDecimal price3() {
59         return Objects.requireNonNullElse(price3, price1());
60     }
61
62     @Override
63     public BigDecimal price4() {
64         return Objects.requireNonNullElse(price4, price1());
65     }
66
67     @Override
68     public BigDecimal price5() {
69         return Objects.requireNonNullElse(price5, price1());
70     }
71
72     @Override
73     public BigDecimal price6() {
74         return Objects.requireNonNullElse(price6, price1());
75     }
76
77     @Override
78     public BigDecimal price7() {
79         return Objects.requireNonNullElse(price7, price1());
80     }
81
82     @Override
83     public BigDecimal price8() {
84         return Objects.requireNonNullElse(price8, price1());
85     }
86
87     @Override
88     public BigDecimal price9() {
89         return Objects.requireNonNullElse(price9, price1());
90     }
91
92     @Override
93     public BigDecimal price10() {
94         return Objects.requireNonNullElse(price10, price1());
95     }
96
97     @Override
98     public BigDecimal price11() {
99         return Objects.requireNonNullElse(price11, price1());
100     }
101
102     @Override
103     public BigDecimal price12() {
104         return Objects.requireNonNullElse(price12, price1());
105     }
106
107     @Override
108     public BigDecimal price13() {
109         return Objects.requireNonNullElse(price13, price1());
110     }
111
112     @Override
113     public BigDecimal price14() {
114         return Objects.requireNonNullElse(price14, price1());
115     }
116
117     @Override
118     public BigDecimal price15() {
119         return Objects.requireNonNullElse(price15, price1());
120     }
121
122     @Override
123     public BigDecimal price16() {
124         return Objects.requireNonNullElse(price16, price1());
125     }
126
127     @Override
128     public BigDecimal price17() {
129         return Objects.requireNonNullElse(price17, price1());
130     }
131
132     @Override
133     public BigDecimal price18() {
134         return Objects.requireNonNullElse(price18, price1());
135     }
136
137     @Override
138     public BigDecimal price19() {
139         return Objects.requireNonNullElse(price19, price1());
140     }
141
142     @Override
143     public BigDecimal price20() {
144         return Objects.requireNonNullElse(price20, price1());
145     }
146
147     @Override
148     public BigDecimal price21() {
149         return Objects.requireNonNullElse(price21, price1());
150     }
151
152     @Override
153     public BigDecimal price22() {
154         return Objects.requireNonNullElse(price22, price1());
155     }
156
157     @Override
158     public BigDecimal price23() {
159         return Objects.requireNonNullElse(price23, price1());
160     }
161
162     @Override
163     public BigDecimal price24() {
164         return Objects.requireNonNullElse(price24, price1());
165     }
166
167     /**
168      * Get {@link Map} of tariffs with hour start as key.
169      *
170      * @return map with hourly tariffs
171      */
172     public Map<LocalTime, BigDecimal> getTariffMap() {
173         Map<LocalTime, BigDecimal> tariffMap = new HashMap<>();
174
175         tariffMap.put(LocalTime.of(0, 0), price1());
176         tariffMap.put(LocalTime.of(1, 0), price2());
177         tariffMap.put(LocalTime.of(2, 0), price3());
178         tariffMap.put(LocalTime.of(3, 0), price4());
179         tariffMap.put(LocalTime.of(4, 0), price5());
180         tariffMap.put(LocalTime.of(5, 0), price6());
181         tariffMap.put(LocalTime.of(6, 0), price7());
182         tariffMap.put(LocalTime.of(7, 0), price8());
183         tariffMap.put(LocalTime.of(8, 0), price9());
184         tariffMap.put(LocalTime.of(9, 0), price10());
185         tariffMap.put(LocalTime.of(10, 0), price11());
186         tariffMap.put(LocalTime.of(11, 0), price12());
187         tariffMap.put(LocalTime.of(12, 0), price13());
188         tariffMap.put(LocalTime.of(13, 0), price14());
189         tariffMap.put(LocalTime.of(14, 0), price15());
190         tariffMap.put(LocalTime.of(15, 0), price16());
191         tariffMap.put(LocalTime.of(16, 0), price17());
192         tariffMap.put(LocalTime.of(17, 0), price18());
193         tariffMap.put(LocalTime.of(18, 0), price19());
194         tariffMap.put(LocalTime.of(19, 0), price20());
195         tariffMap.put(LocalTime.of(20, 0), price21());
196         tariffMap.put(LocalTime.of(21, 0), price22());
197         tariffMap.put(LocalTime.of(22, 0), price23());
198         tariffMap.put(LocalTime.of(23, 0), price24());
199
200         return tariffMap;
201     }
202 }