ParametersSet.java
/**
* Copyright (c) 2023, 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.dynawo.parameters;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.powsybl.commons.PowsyblException;
import java.util.*;
/**
* @author Marcos de Miguel {@literal <demiguelm at aia.es>}
* @author Florian Dupuy {@literal <florian.dupuy at rte-france.com>}
*/
public class ParametersSet {
private final Map<String, Parameter> parameters;
private final List<Reference> references;
private final String id;
public ParametersSet(@JsonProperty("id") String id) {
this.id = id;
this.parameters = new LinkedHashMap<>();
this.references = new ArrayList<>();
}
public ParametersSet(String id, ParametersSet parametersSet) {
this.id = id;
this.parameters = new LinkedHashMap<>(parametersSet.parameters);
this.references = new ArrayList<>(parametersSet.references);
}
public void addParameter(String name, ParameterType type, String value) {
parameters.put(name, new Parameter(name, type, value));
}
public void addParameter(Parameter parameter) {
parameters.put(parameter.name(), parameter);
}
public void replaceParameter(String parameterName, ParameterType type, String value) {
parameters.replace(parameterName, new Parameter(parameterName, type, value));
}
public void addReference(String name, ParameterType type, String origData, String origName, String componentId) {
references.add(new Reference(name, type, origData, origName, componentId));
}
public void addReference(String name, ParameterType type, String origData, String origName) {
references.add(new Reference(name, type, origData, origName, null));
}
public String getId() {
return id;
}
public Map<String, Parameter> getParameters() {
return parameters;
}
public List<Reference> getReferences() {
return references;
}
public boolean getBool(String parameterName) {
Parameter parameter = getParameter(parameterName, ParameterType.BOOL);
return Boolean.parseBoolean(parameter.value());
}
public double getDouble(String parameterName) {
Parameter parameter = getParameter(parameterName, ParameterType.DOUBLE);
return Double.parseDouble(parameter.value());
}
public int getInt(String parameterName) {
Parameter parameter = getParameter(parameterName, ParameterType.INT);
return Integer.parseInt(parameter.value());
}
public String getString(String parameterName) {
Parameter parameter = getParameter(parameterName, ParameterType.STRING);
return parameter.value();
}
public boolean hasParameter(String parameterName) {
return parameters.containsKey(parameterName);
}
private Parameter getParameter(String parameterName, ParameterType type) {
Parameter parameter = parameters.get(parameterName);
if (parameter == null) {
throw new IllegalArgumentException("Parameter " + parameterName + " not found in set " + id);
}
if (parameter.type() != type) {
throw new PowsyblException("Invalid parameter type: " + parameter.type() + " (" + type + " expected)");
}
return parameter;
}
}