package de.skuzzle.polly.core.internal.status; import java.util.HashMap; import java.util.Map; import java.util.stream.Collectors; import de.skuzzle.polly.sdk.MyPolly; import de.skuzzle.polly.sdk.StatusManager; public class StatusManagerImpl implements StatusManager { private final MyPolly myPolly; private final Map<String, StatusProvider> providers; public StatusManagerImpl(MyPolly myPolly) { this.myPolly = myPolly; this.providers = new HashMap<>(); } @Override public void registerStatusProvider(String statusKey, StatusProvider provider) { if (this.providers.containsKey(statusKey)) { throw new IllegalArgumentException(String.format( "StatusProvider '%s' already exists", statusKey)); //$NON-NLS-1$ } this.providers.put(statusKey, provider); } @Override public void removeStatusProvider(String statusKey) { this.providers.remove(statusKey); } @Override public String getCurrentStatus(String statusKey) { final StatusProvider sp = this.providers.get(statusKey); if (sp != null) { return sp.provide(this.myPolly); } return ""; //$NON-NLS-1$ } @Override public Map<String, String> getCurrentStatusMap() { return this.providers.entrySet().stream() .collect(Collectors.toMap( e-> e.getKey(), e -> e.getValue().provide(myPolly))); } }