ComputationDockerConfig.java
/**
* Copyright (c) 2022, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.computation.local.test;
import com.powsybl.commons.config.ConfigurationException;
import com.powsybl.commons.config.ModuleConfig;
import com.powsybl.commons.config.PlatformConfig;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
/**
* @author Etienne Lesot {@literal <etienne.lesot at rte-france.com>}
*/
public class ComputationDockerConfig {
private String dockerImageId;
public static final String IMAGE = "image";
public static final String MODULE = "computation-docker";
public static ComputationDockerConfig load(PlatformConfig config) {
Map<String, String> properties = new HashMap<>();
ModuleConfig module = config.getOptionalModuleConfig(MODULE).orElseThrow(() ->
new ConfigurationException("Module " + MODULE + " is missing in your configuration file"));
module.getOptionalStringProperty(IMAGE).ifPresent(value -> properties.put(IMAGE, value));
return load(properties);
}
public static ComputationDockerConfig load(Map<String, String> properties) {
return new ComputationDockerConfig().update(properties);
}
public ComputationDockerConfig setDockerImageId(String dockerImageId) {
this.dockerImageId = Objects.requireNonNull(dockerImageId);
return this;
}
public ComputationDockerConfig update(Map<String, String> properties) {
Objects.requireNonNull(properties);
Optional.ofNullable(properties.get(IMAGE)).ifPresent(this::setDockerImageId);
return this;
}
public String getDockerImageId() {
return dockerImageId;
}
}