throw new NetatmoException("home should not be null");
}
- public List<HomeEvent> getHomeEvents(String homeId, @Nullable ZonedDateTime freshestEventTime)
- throws NetatmoException {
+ public List<HomeEvent> getHomeEvents(String homeId, ZonedDateTime freshestEventTime) throws NetatmoException {
List<HomeEvent> events = getEvents(PARAM_HOME_ID, homeId);
- // we have to rewind to the latest event just after oldestKnown
- HomeEvent oldestRetrieved = events.get(events.size() - 1);
- while (freshestEventTime != null && oldestRetrieved.getTime().isAfter(freshestEventTime)) {
- events.addAll(getEvents(PARAM_HOME_ID, homeId, PARAM_EVENT_ID, oldestRetrieved.getId()));
- oldestRetrieved = events.get(events.size() - 1);
+ // we have to rewind to the latest event just after freshestEventTime
+ if (events.size() > 0) {
+ HomeEvent oldestRetrieved = events.get(events.size() - 1);
+ while (oldestRetrieved.getTime().isAfter(freshestEventTime)) {
+ events.addAll(getEvents(PARAM_HOME_ID, homeId, PARAM_EVENT_ID, oldestRetrieved.getId()));
+ oldestRetrieved = events.get(events.size() - 1);
+ }
}
- // Remove unneeded events being before oldestKnown
- return events.stream().filter(event -> freshestEventTime == null || event.getTime().isAfter(freshestEventTime))
+ // Remove unneeded events being before freshestEventTime
+ return events.stream().filter(event -> event.getTime().isAfter(freshestEventTime))
.sorted(Comparator.comparing(HomeEvent::getTime).reversed()).toList();
}
*/
package org.openhab.binding.netatmo.internal.handler.capability;
+import java.time.Instant;
+import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Collection;
*/
@NonNullByDefault
class SecurityCapability extends RestCapability<SecurityApi> {
- private final Logger logger = LoggerFactory.getLogger(SecurityCapability.class);
+ private final static ZonedDateTime ZDT_REFERENCE = ZonedDateTime.ofInstant(Instant.ofEpochMilli(0),
+ ZoneId.systemDefault());
+ private final Logger logger = LoggerFactory.getLogger(SecurityCapability.class);
private final Map<String, HomeEvent> eventBuffer = new HashMap<>();
- private @Nullable ZonedDateTime freshestEventTime;
+ private ZonedDateTime freshestEventTime = ZDT_REFERENCE;
private NAObjectMap<HomeDataPerson> persons = new NAObjectMap<>();
private NAObjectMap<HomeDataModule> modules = new NAObjectMap<>();
private String securityId = "";
@Override
public void initialize() {
super.initialize();
- freshestEventTime = null;
+ freshestEventTime = ZDT_REFERENCE;
securityId = handler.getThingConfigAs(HomeConfiguration.class).getIdForArea(FeatureArea.SECURITY);
}
eventBuffer.put(personId, event);
}
}
- if (freshestEventTime == null || event.getTime().isAfter(freshestEventTime)) {
+ if (event.getTime().isAfter(freshestEventTime)) {
freshestEventTime = event.getTime();
}
}