package org.arbeitspferde.groningen.config; import com.google.common.collect.Lists; import org.arbeitspferde.groningen.Datastore; import org.arbeitspferde.groningen.Datastore.DatastoreException; import org.arbeitspferde.groningen.PipelineId; import org.arbeitspferde.groningen.PipelineState; import java.util.List; /** * {@link ConfigManager } implementation that gets configuration from {@link Datastore}. */ public class DatastoreConfigManager implements ConfigManager { private final Datastore dataStore; private final PipelineId pipelineId; public DatastoreConfigManager(Datastore dataStore, PipelineId pipelineId) { this.dataStore = dataStore; this.pipelineId = pipelineId; } @Override public void initialize() { } @Override public void shutdown() { } @Override public GroningenConfig queryConfig() { List<PipelineState> states; try { states = dataStore.getPipelines(Lists.newArrayList(pipelineId)); } catch (DatastoreException e) { throw new RuntimeException(e); } if (states.isEmpty()) { throw new RuntimeException("No state found."); } else { return states.get(0).config(); } } }