Add logging to the StartLevelService (#4577)
Signed-off-by: Jörg Sautter <joerg.sautter@gmx.net>pull/4605/head
parent
d5590ff87c
commit
a94908c305
|
@ -13,12 +13,14 @@
|
||||||
package org.openhab.core.service;
|
package org.openhab.core.service;
|
||||||
|
|
||||||
import java.util.AbstractMap;
|
import java.util.AbstractMap;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.SequencedMap;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeMap;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
|
@ -98,7 +100,7 @@ public class StartLevelService {
|
||||||
|
|
||||||
private int openHABStartLevel = 0;
|
private int openHABStartLevel = 0;
|
||||||
|
|
||||||
private Map<Integer, Set<ReadyMarker>> startlevels = Map.of();
|
private SequencedMap<Integer, Set<ReadyMarker>> startlevels = Collections.emptySortedMap();
|
||||||
|
|
||||||
@Activate
|
@Activate
|
||||||
public StartLevelService(BundleContext bundleContext, @Reference ReadyService readyService,
|
public StartLevelService(BundleContext bundleContext, @Reference ReadyService readyService,
|
||||||
|
@ -116,9 +118,11 @@ public class StartLevelService {
|
||||||
handleOSGiStartlevel();
|
handleOSGiStartlevel();
|
||||||
|
|
||||||
if (openHABStartLevel >= 10) {
|
if (openHABStartLevel >= 10) {
|
||||||
for (Integer level : new TreeSet<>(startlevels.keySet())) {
|
for (Entry<Integer, Set<ReadyMarker>> entry : startlevels.entrySet()) {
|
||||||
|
Integer level = entry.getKey();
|
||||||
if (openHABStartLevel < level) {
|
if (openHABStartLevel < level) {
|
||||||
boolean reached = isStartLevelReached(startlevels.get(level));
|
Set<ReadyMarker> markerSet = entry.getValue();
|
||||||
|
boolean reached = isStartLevelReached(level, markerSet);
|
||||||
if (reached) {
|
if (reached) {
|
||||||
setStartLevel(level);
|
setStartLevel(level);
|
||||||
} else {
|
} else {
|
||||||
|
@ -142,12 +146,13 @@ public class StartLevelService {
|
||||||
return openHABStartLevel;
|
return openHABStartLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isStartLevelReached(@Nullable Set<ReadyMarker> markerSet) {
|
private boolean isStartLevelReached(Integer level, @Nullable Set<ReadyMarker> markerSet) {
|
||||||
if (markerSet == null) {
|
if (markerSet == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
for (ReadyMarker m : markerSet) {
|
for (ReadyMarker m : markerSet) {
|
||||||
if (!markers.contains(m)) {
|
if (!markers.contains(m)) {
|
||||||
|
logger.debug("Missing marker {} for start level {}", m, level);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -173,7 +178,7 @@ public class StartLevelService {
|
||||||
trackers.clear();
|
trackers.clear();
|
||||||
|
|
||||||
// set up trackers and markers
|
// set up trackers and markers
|
||||||
startlevels = parseConfig(configuration);
|
startlevels = Collections.unmodifiableSequencedMap(new TreeMap<>(parseConfig(configuration)));
|
||||||
startlevels.keySet()
|
startlevels.keySet()
|
||||||
.forEach(sl -> slmarker.put(sl, new ReadyMarker(STARTLEVEL_MARKER_TYPE, Integer.toString(sl))));
|
.forEach(sl -> slmarker.put(sl, new ReadyMarker(STARTLEVEL_MARKER_TYPE, Integer.toString(sl))));
|
||||||
slmarker.put(STARTLEVEL_COMPLETE,
|
slmarker.put(STARTLEVEL_COMPLETE,
|
||||||
|
|
Loading…
Reference in New Issue