MetrixVariantProvider.java
/*
* Copyright (c) 2020, 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.metrix.integration;
import com.google.common.collect.Range;
import com.powsybl.timeseries.TimeSeriesIndex;
import java.nio.file.Path;
import java.util.Set;
/**
* @author Paul Bui-Quang {@literal <paul.buiquang at rte-france.com>}
*/
public interface MetrixVariantProvider {
class Variants {
final int firstVariant;
final int lastVariant;
final int variantCount;
Variants(int firstVariant, int lastVariant) {
this.firstVariant = firstVariant;
this.lastVariant = lastVariant;
this.variantCount = lastVariant - firstVariant + 1;
}
public static Variants empty() {
return new Variants(-1, -1);
}
public Range<Integer> closedRange() {
return Range.closed(firstVariant, lastVariant);
}
public int count() {
return variantCount;
}
public int lastVariant() {
return lastVariant;
}
public int firstVariant() {
return firstVariant;
}
public int variantCount() {
return variantCount;
}
}
Range<Integer> getVariantRange();
TimeSeriesIndex getIndex();
Set<String> getMappedBreakers();
void readVariants(Range<Integer> variantReadRange, MetrixVariantReader reader, Path workingDir);
default Variants variants() {
return new Variants(getVariantRange().lowerEndpoint(), getVariantRange().upperEndpoint());
}
}