Skip to content

Commit

Permalink
Use IntSeries for side fields
Browse files Browse the repository at this point in the history
Signed-off-by: lisrte <[email protected]>
  • Loading branch information
Lisrte committed Aug 2, 2024
1 parent 8ab50d2 commit fbfdadc
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@
package com.powsybl.dataframe.dynamic.adders;

import com.powsybl.dataframe.SeriesMetadata;
import com.powsybl.dataframe.update.StringSeries;
import com.powsybl.dataframe.update.IntSeries;
import com.powsybl.dataframe.update.UpdatingDataframe;
import com.powsybl.dynawaltz.models.hvdc.AbstractHvdcBuilder;
import com.powsybl.python.commons.PyPowsyblApiHeader.ThreeSideType;
import com.powsybl.python.commons.Util;

import java.util.ArrayList;
Expand Down Expand Up @@ -40,17 +39,17 @@ public List<SeriesMetadata> getMetadata() {

protected abstract static class AbstractHvdcSeries<T extends AbstractHvdcBuilder<T>> extends AbstractEquipmentSeries<T> {

private final StringSeries danglingSides;
private final IntSeries danglingSides;

AbstractHvdcSeries(UpdatingDataframe dataframe) {
super(dataframe);
this.danglingSides = dataframe.getStrings(DANGLING_SIDE);
this.danglingSides = dataframe.getInts(DANGLING_SIDE);
}

@Override
protected void applyOnBuilder(int row, T builder) {
super.applyOnBuilder(row, builder);
applyIfPresent(danglingSides, row, ThreeSideType.class, Util::convertToTwoSides, builder::dangling);
applyIfPresent(danglingSides, row, Util::convertToTwoSides, builder::dangling);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
import com.powsybl.commons.report.ReportNode;
import com.powsybl.dataframe.SeriesMetadata;
import com.powsybl.dataframe.update.DoubleSeries;
import com.powsybl.dataframe.update.IntSeries;
import com.powsybl.dataframe.update.StringSeries;
import com.powsybl.dataframe.update.UpdatingDataframe;
import com.powsybl.dynawaltz.models.events.EventDisconnectionBuilder;
import com.powsybl.iidm.network.Network;
import com.powsybl.python.commons.PyPowsyblApiHeader.ThreeSideType;
import com.powsybl.python.commons.Util;

import java.util.List;
Expand All @@ -30,7 +30,7 @@ public class DisconnectAdder extends AbstractEventModelAdder {
protected static final List<SeriesMetadata> METADATA = List.of(
SeriesMetadata.stringIndex(STATIC_ID),
SeriesMetadata.doubles(START_TIME),
SeriesMetadata.strings(DISCONNECT_ONLY));
SeriesMetadata.ints(DISCONNECT_ONLY));

@Override
public List<SeriesMetadata> getMetadata() {
Expand All @@ -41,19 +41,19 @@ private static class DisconnectSeries extends AbstractEventModelSeries<EventDisc

private final StringSeries staticIds;
private final DoubleSeries startTimes;
private final StringSeries disconnectOnly;
private final IntSeries disconnectOnly;

DisconnectSeries(UpdatingDataframe dataframe) {
this.staticIds = dataframe.getStrings(STATIC_ID);
this.startTimes = dataframe.getDoubles(START_TIME);
this.disconnectOnly = dataframe.getStrings(DISCONNECT_ONLY);
this.disconnectOnly = dataframe.getInts(DISCONNECT_ONLY);
}

@Override
protected void applyOnBuilder(int row, EventDisconnectionBuilder builder) {
applyIfPresent(staticIds, row, builder::staticId);
applyIfPresent(startTimes, row, builder::startTime);
applyIfPresent(disconnectOnly, row, ThreeSideType.class, Util::convertToTwoSides, builder::disconnectOnly);
applyIfPresent(disconnectOnly, row, Util::convertToTwoSides, builder::disconnectOnly);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@

import com.powsybl.commons.report.ReportNode;
import com.powsybl.dataframe.SeriesMetadata;
import com.powsybl.dataframe.update.IntSeries;
import com.powsybl.dataframe.update.StringSeries;
import com.powsybl.dataframe.update.UpdatingDataframe;
import com.powsybl.dynawaltz.models.automationsystems.overloadmanagments.DynamicOverloadManagementSystemBuilder;
import com.powsybl.iidm.network.Network;
import com.powsybl.python.commons.PyPowsyblApiHeader.ThreeSideType;
import com.powsybl.python.commons.Util;

import java.util.List;
Expand All @@ -32,7 +32,7 @@ public class DynamicOverloadManagementSystemAdder extends AbstractDynamicModelAd
SeriesMetadata.strings(MODEL_NAME),
SeriesMetadata.strings(CONTROLLED_BRANCH),
SeriesMetadata.strings(I_MEASUREMENT),
SeriesMetadata.strings(I_MEASUREMENT_SIDE));
SeriesMetadata.ints(I_MEASUREMENT_SIDE));

@Override
public List<SeriesMetadata> getMetadata() {
Expand All @@ -43,21 +43,21 @@ private static class OverloadManagementSystemSeries extends AbstractAutomationSy

private final StringSeries controlledBranch;
private final StringSeries iMeasurement;
private final StringSeries iMeasurementSide;
private final IntSeries iMeasurementSide;

OverloadManagementSystemSeries(UpdatingDataframe dataframe) {
super(dataframe);
this.controlledBranch = dataframe.getStrings(CONTROLLED_BRANCH);
this.iMeasurement = dataframe.getStrings(I_MEASUREMENT);
this.iMeasurementSide = dataframe.getStrings(I_MEASUREMENT_SIDE);
this.iMeasurementSide = dataframe.getInts(I_MEASUREMENT_SIDE);
}

@Override
protected void applyOnBuilder(int row, DynamicOverloadManagementSystemBuilder builder) {
super.applyOnBuilder(row, builder);
applyIfPresent(controlledBranch, row, builder::controlledBranch);
applyIfPresent(iMeasurement, row, builder::iMeasurement);
applyIfPresent(iMeasurementSide, row, ThreeSideType.class, Util::convertToTwoSides, builder::iMeasurementSide);
applyIfPresent(iMeasurementSide, row, Util::convertToTwoSides, builder::iMeasurementSide);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@

import com.powsybl.commons.report.ReportNode;
import com.powsybl.dataframe.SeriesMetadata;
import com.powsybl.dataframe.update.IntSeries;
import com.powsybl.dataframe.update.StringSeries;
import com.powsybl.dataframe.update.UpdatingDataframe;
import com.powsybl.dynawaltz.models.automationsystems.overloadmanagments.DynamicTwoLevelsOverloadManagementSystemBuilder;
import com.powsybl.iidm.network.Network;
import com.powsybl.python.commons.PyPowsyblApiHeader.ThreeSideType;
import com.powsybl.python.commons.Util;

import java.util.List;
Expand All @@ -32,9 +32,9 @@ public class DynamicTwoLevelsOverloadManagementSystemAdder extends AbstractDynam
SeriesMetadata.strings(MODEL_NAME),
SeriesMetadata.strings(CONTROLLED_BRANCH),
SeriesMetadata.strings(I_MEASUREMENT_1),
SeriesMetadata.strings(I_MEASUREMENT_1_SIDE),
SeriesMetadata.ints(I_MEASUREMENT_1_SIDE),
SeriesMetadata.strings(I_MEASUREMENT_2),
SeriesMetadata.strings(I_MEASUREMENT_2_SIDE));
SeriesMetadata.ints(I_MEASUREMENT_2_SIDE));

@Override
public List<SeriesMetadata> getMetadata() {
Expand All @@ -45,27 +45,27 @@ private static class OverloadManagementSystemSeries extends AbstractAutomationSy

private final StringSeries controlledBranch;
private final StringSeries iMeasurement1;
private final StringSeries iMeasurement1Side;
private final IntSeries iMeasurement1Side;
private final StringSeries iMeasurement2;
private final StringSeries iMeasurement2Side;
private final IntSeries iMeasurement2Side;

OverloadManagementSystemSeries(UpdatingDataframe dataframe) {
super(dataframe);
this.controlledBranch = dataframe.getStrings(CONTROLLED_BRANCH);
this.iMeasurement1 = dataframe.getStrings(I_MEASUREMENT_1);
this.iMeasurement1Side = dataframe.getStrings(I_MEASUREMENT_1_SIDE);
this.iMeasurement1Side = dataframe.getInts(I_MEASUREMENT_1_SIDE);
this.iMeasurement2 = dataframe.getStrings(I_MEASUREMENT_2);
this.iMeasurement2Side = dataframe.getStrings(I_MEASUREMENT_2_SIDE);
this.iMeasurement2Side = dataframe.getInts(I_MEASUREMENT_2_SIDE);
}

@Override
protected void applyOnBuilder(int row, DynamicTwoLevelsOverloadManagementSystemBuilder builder) {
super.applyOnBuilder(row, builder);
applyIfPresent(controlledBranch, row, builder::controlledBranch);
applyIfPresent(iMeasurement1, row, builder::iMeasurement1);
applyIfPresent(iMeasurement1Side, row, ThreeSideType.class, Util::convertToTwoSides, builder::iMeasurement1Side);
applyIfPresent(iMeasurement1Side, row, Util::convertToTwoSides, builder::iMeasurement1Side);
applyIfPresent(iMeasurement2, row, builder::iMeasurement2);
applyIfPresent(iMeasurement2Side, row, ThreeSideType.class, Util::convertToTwoSides, builder::iMeasurement2Side);
applyIfPresent(iMeasurement2Side, row, Util::convertToTwoSides, builder::iMeasurement2Side);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@

import com.powsybl.commons.report.ReportNode;
import com.powsybl.dataframe.SeriesMetadata;
import com.powsybl.dataframe.update.IntSeries;
import com.powsybl.dataframe.update.StringSeries;
import com.powsybl.dataframe.update.UpdatingDataframe;
import com.powsybl.dynawaltz.models.TransformerSide;
import com.powsybl.dynawaltz.models.automationsystems.TapChangerAutomationSystemBuilder;
import com.powsybl.iidm.network.Network;

Expand All @@ -30,7 +30,7 @@ public class TapChangerAutomationSystemAdder extends AbstractDynamicModelAdder {
SeriesMetadata.strings(PARAMETER_SET_ID),
SeriesMetadata.strings(MODEL_NAME),
SeriesMetadata.strings(STATIC_ID),
SeriesMetadata.strings(SIDE));
SeriesMetadata.ints(SIDE));

@Override
public List<SeriesMetadata> getMetadata() {
Expand All @@ -40,20 +40,20 @@ public List<SeriesMetadata> getMetadata() {
private static class TapChangerSeries extends AbstractAutomationSystemSeries<TapChangerAutomationSystemBuilder> {

private final StringSeries staticIds;
private final StringSeries sides;
private final IntSeries sides;

TapChangerSeries(UpdatingDataframe dataframe) {
super(dataframe);
this.staticIds = dataframe.getStrings(STATIC_ID);
this.sides = dataframe.getStrings(SIDE);
this.sides = dataframe.getInts(SIDE);
}

@Override
protected void applyOnBuilder(int row, TapChangerAutomationSystemBuilder builder) {
super.applyOnBuilder(row, builder);
applyIfPresent(staticIds, row, builder::staticId);
// TODO handle TransformerSide enum on python side
applyIfPresent(sides, row, TransformerSide.class, builder::side);
//applyIfPresent(sides, row, TransformerSide.class, builder::side);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,10 +61,10 @@ public static <E extends Enum<E>> void applyIfPresent(StringSeries series, int i
}
}

public static <E extends Enum<E>, F extends Enum<F>> void applyIfPresent(StringSeries series, int index, Class<E> pythonEnumClass,
Function<E, F> converter, Consumer<F> consumer) {
public static <E extends Enum<E>> void applyIfPresent(IntSeries series, int index, Function<Integer, E> converter,
Consumer<E> consumer) {
if (series != null) {
F convertedEnum = converter.apply(Enum.valueOf(pythonEnumClass, series.get(index)));
E convertedEnum = converter.apply(series.get(index));
if (convertedEnum != null) {
consumer.accept(convertedEnum);
}
Expand Down
4 changes: 2 additions & 2 deletions java/src/main/java/com/powsybl/python/commons/Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -431,8 +431,8 @@ public static ThreeSides convert(PyPowsyblApiHeader.ThreeSideType side) {
};
}

public static TwoSides convertToTwoSides(PyPowsyblApiHeader.ThreeSideType side) {
return switch (side) {
public static TwoSides convertToTwoSides(int sideCValue) {
return switch (PyPowsyblApiHeader.ThreeSideType.fromCValue(sideCValue)) {
case ONE -> TwoSides.ONE;
case TWO -> TwoSides.TWO;
default -> null;
Expand Down
Loading

0 comments on commit fbfdadc

Please sign in to comment.