mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-25 14:55:55 +01:00
Fix last hour not being considered for best price (#17745)
Backport of #17731 Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
This commit is contained in:
parent
b897c959ce
commit
8b2bbfe90c
@ -139,7 +139,7 @@ public class AwattarBestpriceHandler extends BaseThingHandler {
|
||||
}
|
||||
AwattarBestpriceConfiguration config = getConfigAs(AwattarBestpriceConfiguration.class);
|
||||
TimeRange timerange = getRange(config.rangeStart, config.rangeDuration, bridgeHandler.getTimeZone());
|
||||
if (!(bridgeHandler.containsPriceFor(timerange.start()) && bridgeHandler.containsPriceFor(timerange.end()))) {
|
||||
if (!(bridgeHandler.containsPriceFor(timerange))) {
|
||||
updateState(channelUID, state);
|
||||
return;
|
||||
}
|
||||
|
@ -210,8 +210,20 @@ public class AwattarBridgeHandler extends BaseBridgeHandler {
|
||||
|
||||
public boolean containsPriceFor(long timestamp) {
|
||||
SortedSet<AwattarPrice> localPrices = getPrices();
|
||||
return localPrices != null && localPrices.first().timerange().start() <= timestamp
|
||||
&& localPrices.last().timerange().end() > timestamp;
|
||||
if (localPrices == null) {
|
||||
return false;
|
||||
}
|
||||
return new TimeRange(localPrices.first().timerange().start(), localPrices.last().timerange().end())
|
||||
.contains(timestamp);
|
||||
}
|
||||
|
||||
public boolean containsPriceFor(TimeRange timeRange) {
|
||||
SortedSet<AwattarPrice> localPrices = getPrices();
|
||||
if (localPrices == null) {
|
||||
return false;
|
||||
}
|
||||
return new TimeRange(localPrices.first().timerange().start(), localPrices.last().timerange().end())
|
||||
.contains(timeRange);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -48,6 +48,7 @@ public record TimeRange(long start, long end) implements Comparable<TimeRange> {
|
||||
* @param o the object to be compared
|
||||
* @return the result of {@link Long#compare(long, long)} for the {@link #start} timestamps
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(TimeRange o) {
|
||||
return Long.compare(start, o.start);
|
||||
}
|
||||
|
@ -148,9 +148,17 @@ public class AwattarBridgeHandlerTest extends JavaTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testContainsPrizeFor() {
|
||||
void testContainsPriceForTimestamp() {
|
||||
assertThat(bridgeHandler.containsPriceFor(new TimeRange(1618503200000L, 1718316000000L)), is(false));
|
||||
assertThat(bridgeHandler.containsPriceFor(new TimeRange(1618503200000L, 1718503200000L)), is(false));
|
||||
assertThat(bridgeHandler.containsPriceFor(new TimeRange(1718503200000L, 1718575200000L)), is(true));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testContainsPriceForRange() {
|
||||
assertThat(bridgeHandler.containsPriceFor(1618503200000L), is(false));
|
||||
assertThat(bridgeHandler.containsPriceFor(1718503200000L), is(true));
|
||||
assertThat(bridgeHandler.containsPriceFor(1718575200000L), is(false));
|
||||
assertThat(bridgeHandler.containsPriceFor(1818503200000L), is(false));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user