SensitivityResultModelWriter.java
/**
* Copyright (c) 2021, 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.sensitivity;
import com.powsybl.contingency.Contingency;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
/**
* @author Geoffroy Jamgotchian {@literal <geoffroy.jamgotchian at rte-france.com>}
*/
public class SensitivityResultModelWriter implements SensitivityResultWriter {
private final List<Contingency> contingencies;
private final List<SensitivityValue> values = new ArrayList<>();
private final List<SensitivityAnalysisResult.SensitivityContingencyStatus> contingencyStatuses;
public SensitivityResultModelWriter(List<Contingency> contingencies) {
this.contingencies = Objects.requireNonNull(contingencies);
contingencyStatuses = new ArrayList<>(Collections.nCopies(contingencies.size(), null));
}
public List<SensitivityValue> getValues() {
return values;
}
public List<SensitivityAnalysisResult.SensitivityContingencyStatus> getContingencyStatuses() {
return contingencyStatuses;
}
@Override
public void writeSensitivityValue(int factorIndex, int contingencyIndex, double value, double functionReference) {
values.add(new SensitivityValue(factorIndex, contingencyIndex, value, functionReference));
}
@Override
public void writeContingencyStatus(int contingencyIndex, SensitivityAnalysisResult.Status status) {
contingencyStatuses.set(contingencyIndex, new SensitivityAnalysisResult.SensitivityContingencyStatus(contingencies.get(contingencyIndex).getId(), status));
}
}