Skip to content

Commit 2065adc

Browse files
Move utility functions (#269)
* Move fn utils used only by 1 mapper * Move fn extensions to own utility class
1 parent 6670f0f commit 2065adc

19 files changed

+400
-424
lines changed

src/main/java/org/gridsuite/network/map/dto/mapper/BatteryInfosMapper.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@
77
package org.gridsuite.network.map.dto.mapper;
88

99
import com.powsybl.iidm.network.*;
10-
import com.powsybl.iidm.network.extensions.Measurement;
10+
import com.powsybl.iidm.network.extensions.Measurement.Type;
1111
import com.powsybl.network.store.iidm.impl.MinMaxReactiveLimitsImpl;
1212
import org.gridsuite.network.map.dto.ElementInfos;
1313
import org.gridsuite.network.map.dto.InfoTypeParameters;
14+
import org.gridsuite.network.map.dto.common.MinMaxReactiveLimitsMapData;
15+
import org.gridsuite.network.map.dto.common.ReactiveCapabilityCurveMapData;
1416
import org.gridsuite.network.map.dto.definition.battery.BatteryFormInfos;
1517
import org.gridsuite.network.map.dto.definition.battery.BatteryTabInfos;
1618
import org.gridsuite.network.map.dto.utils.ElementUtils;
17-
import org.gridsuite.network.map.dto.common.MinMaxReactiveLimitsMapData;
18-
import org.gridsuite.network.map.dto.common.ReactiveCapabilityCurveMapData;
19+
import org.gridsuite.network.map.dto.utils.ExtensionUtils;
1920

2021
import java.util.Collection;
2122
import java.util.List;
@@ -66,7 +67,7 @@ private static BatteryFormInfos toFormInfos(Identifiable<?> identifiable) {
6667
.terminalConnected(terminal.isConnected())
6768
.q(nullIfNan(terminal.getQ()))
6869
.properties(getProperties(battery))
69-
.connectablePosition(toMapConnectablePosition(battery, 0));
70+
.connectablePosition(ExtensionUtils.toMapConnectablePosition(battery, 0));
7071

7172
ReactiveLimits reactiveLimits = battery.getReactiveLimits();
7273
if (reactiveLimits != null) {
@@ -80,7 +81,7 @@ private static BatteryFormInfos toFormInfos(Identifiable<?> identifiable) {
8081
}
8182
}
8283

83-
builder.activePowerControl(toActivePowerControl(battery));
84+
builder.activePowerControl(ExtensionUtils.toActivePowerControl(battery));
8485

8586
return builder.build();
8687
}
@@ -103,8 +104,8 @@ private static BatteryTabInfos toTabInfos(Identifiable<?> identifiable) {
103104
.properties(getProperties(battery))
104105
.q(nullIfNan(terminal.getQ()));
105106

106-
builder.connectablePosition(toMapConnectablePosition(battery, 0))
107-
.activePowerControl(toActivePowerControl(battery));
107+
builder.connectablePosition(ExtensionUtils.toMapConnectablePosition(battery, 0))
108+
.activePowerControl(ExtensionUtils.toActivePowerControl(battery));
108109

109110
// voltageLevel and substation properties
110111
builder.voltageLevelProperties(getProperties(terminal.getVoltageLevel()));
@@ -122,10 +123,10 @@ private static BatteryTabInfos toTabInfos(Identifiable<?> identifiable) {
122123
}
123124
}
124125

125-
builder.measurementP(toMeasurement(battery, Measurement.Type.ACTIVE_POWER, 0))
126-
.measurementQ(toMeasurement(battery, Measurement.Type.REACTIVE_POWER, 0));
126+
builder.measurementP(ExtensionUtils.toMeasurement(battery, Type.ACTIVE_POWER, 0))
127+
.measurementQ(ExtensionUtils.toMeasurement(battery, Type.REACTIVE_POWER, 0));
127128

128-
builder.injectionObservability(toInjectionObservability(battery));
129+
builder.injectionObservability(ExtensionUtils.toInjectionObservability(battery));
129130

130131
return builder.build();
131132
}

src/main/java/org/gridsuite/network/map/dto/mapper/BusBarSectionInfosMapper.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010
import com.powsybl.iidm.network.Identifiable;
1111
import com.powsybl.iidm.network.Terminal;
1212
import com.powsybl.iidm.network.extensions.BusbarSectionPosition;
13-
import com.powsybl.iidm.network.extensions.Measurement;
13+
import com.powsybl.iidm.network.extensions.Measurement.Type;
1414
import org.gridsuite.network.map.dto.ElementInfos;
1515
import org.gridsuite.network.map.dto.InfoTypeParameters;
1616
import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionFormInfos;
1717
import org.gridsuite.network.map.dto.definition.busbarsection.BusBarSectionTabInfos;
1818
import org.gridsuite.network.map.dto.utils.ElementUtils;
1919

2020
import static org.gridsuite.network.map.dto.utils.ElementUtils.getProperties;
21-
import static org.gridsuite.network.map.dto.utils.ElementUtils.toMeasurement;
21+
import static org.gridsuite.network.map.dto.utils.ExtensionUtils.toMeasurement;
2222

2323
/**
2424
* @author AJELLAL Ali <[email protected]>
@@ -56,8 +56,8 @@ private static BusBarSectionTabInfos toTabInfos(Identifiable<?> identifiable) {
5656
.name(busbarSection.getOptionalName().orElse(null))
5757
.properties(getProperties(busbarSection))
5858
.voltageLevelId(busbarSection.getTerminal().getVoltageLevel().getId())
59-
.measurementV(toMeasurement(busbarSection, Measurement.Type.VOLTAGE, 0))
60-
.measurementAngle(toMeasurement(busbarSection, Measurement.Type.ANGLE, 0))
59+
.measurementV(toMeasurement(busbarSection, Type.VOLTAGE, 0))
60+
.measurementAngle(toMeasurement(busbarSection, Type.ANGLE, 0))
6161
.voltageLevelProperties(getProperties(terminal.getVoltageLevel()))
6262
.substationProperties(terminal.getVoltageLevel().getSubstation().map(ElementUtils::getProperties).orElse(null))
6363
.build();

src/main/java/org/gridsuite/network/map/dto/mapper/DanglingLineInfosMapper.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
import com.powsybl.iidm.network.DanglingLine;
1010
import com.powsybl.iidm.network.Identifiable;
1111
import com.powsybl.iidm.network.Terminal;
12-
import com.powsybl.iidm.network.extensions.Measurement;
12+
import com.powsybl.iidm.network.extensions.Measurement.Type;
1313
import org.gridsuite.network.map.dto.ElementInfos;
1414
import org.gridsuite.network.map.dto.InfoTypeParameters;
1515
import org.gridsuite.network.map.dto.definition.danglingline.DanglingLineTabInfos;
1616
import org.gridsuite.network.map.dto.utils.ElementUtils;
17+
import org.gridsuite.network.map.dto.utils.ExtensionUtils;
1718

1819
import static org.gridsuite.network.map.dto.utils.ElementUtils.*;
1920

@@ -54,10 +55,10 @@ private static DanglingLineTabInfos toTabInfos(Identifiable<?> identifiable) {
5455
builder.voltageLevelProperties(getProperties(terminal.getVoltageLevel()));
5556
builder.substationProperties(terminal.getVoltageLevel().getSubstation().map(ElementUtils::getProperties).orElse(null));
5657

57-
builder.measurementP(toMeasurement(danglingLine, Measurement.Type.ACTIVE_POWER, 0))
58-
.measurementQ(toMeasurement(danglingLine, Measurement.Type.REACTIVE_POWER, 0));
58+
builder.measurementP(ExtensionUtils.toMeasurement(danglingLine, Type.ACTIVE_POWER, 0))
59+
.measurementQ(ExtensionUtils.toMeasurement(danglingLine, Type.REACTIVE_POWER, 0));
5960

60-
builder.injectionObservability(toInjectionObservability(danglingLine));
61+
builder.injectionObservability(ExtensionUtils.toInjectionObservability(danglingLine));
6162

6263
return builder.build();
6364
}

src/main/java/org/gridsuite/network/map/dto/mapper/ElementInfosMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import org.gridsuite.network.map.dto.ElementInfosWithOperatingStatus;
1212
import org.gridsuite.network.map.dto.ElementInfosWithType;
1313

14-
import static org.gridsuite.network.map.dto.utils.ElementUtils.toOperatingStatus;
14+
import static org.gridsuite.network.map.dto.utils.ExtensionUtils.toOperatingStatus;
1515

1616
/**
1717
* @author Slimane Amar <slimane.amar at rte-france.com>

src/main/java/org/gridsuite/network/map/dto/mapper/GeneratorInfosMapper.java

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,27 @@
77
package org.gridsuite.network.map.dto.mapper;
88

99
import com.powsybl.iidm.network.*;
10-
import com.powsybl.iidm.network.extensions.Measurement;
10+
import com.powsybl.iidm.network.extensions.CoordinatedReactiveControl;
11+
import com.powsybl.iidm.network.extensions.GeneratorShortCircuit;
12+
import com.powsybl.iidm.network.extensions.GeneratorStartup;
13+
import com.powsybl.iidm.network.extensions.Measurement.Type;
1114
import com.powsybl.network.store.iidm.impl.MinMaxReactiveLimitsImpl;
1215
import org.gridsuite.network.map.dto.ElementInfos;
1316
import org.gridsuite.network.map.dto.InfoTypeParameters;
17+
import org.gridsuite.network.map.dto.common.MinMaxReactiveLimitsMapData;
18+
import org.gridsuite.network.map.dto.common.ReactiveCapabilityCurveMapData;
19+
import org.gridsuite.network.map.dto.definition.extension.CoordinatedReactiveControlInfos;
20+
import org.gridsuite.network.map.dto.definition.extension.GeneratorShortCircuitInfos;
21+
import org.gridsuite.network.map.dto.definition.extension.GeneratorStartupInfos;
1422
import org.gridsuite.network.map.dto.definition.generator.GeneratorFormInfos;
1523
import org.gridsuite.network.map.dto.definition.generator.GeneratorTabInfos;
1624
import org.gridsuite.network.map.dto.utils.ElementUtils;
17-
import org.gridsuite.network.map.dto.common.MinMaxReactiveLimitsMapData;
18-
import org.gridsuite.network.map.dto.common.ReactiveCapabilityCurveMapData;
25+
import org.gridsuite.network.map.dto.utils.ExtensionUtils;
26+
import org.springframework.lang.NonNull;
1927

2028
import java.util.Collection;
2129
import java.util.List;
30+
import java.util.Optional;
2231
import java.util.stream.Collectors;
2332

2433
import static org.gridsuite.network.map.dto.utils.ElementUtils.*;
@@ -73,7 +82,7 @@ private static GeneratorTabInfos toTabInfos(Identifiable<?> identifiable) {
7382
.properties(getProperties(generator))
7483
.q(nullIfNan(terminal.getQ()));
7584

76-
builder.activePowerControl(toActivePowerControl(generator))
85+
builder.activePowerControl(ExtensionUtils.toActivePowerControl(generator))
7786
.coordinatedReactiveControl(toCoordinatedReactiveControl(generator))
7887
.generatorShortCircuit(toGeneratorShortCircuit(generator))
7988
.generatorStartup(toGeneratorStartup(generator));
@@ -101,10 +110,10 @@ private static GeneratorTabInfos toTabInfos(Identifiable<?> identifiable) {
101110
}
102111
}
103112

104-
builder.connectablePosition(toMapConnectablePosition(generator, 0));
113+
builder.connectablePosition(ExtensionUtils.toMapConnectablePosition(generator, 0));
105114

106-
builder.measurementP(toMeasurement(generator, Measurement.Type.ACTIVE_POWER, 0))
107-
.measurementQ(toMeasurement(generator, Measurement.Type.REACTIVE_POWER, 0));
115+
builder.measurementP(ExtensionUtils.toMeasurement(generator, Type.ACTIVE_POWER, 0))
116+
.measurementQ(ExtensionUtils.toMeasurement(generator, Type.REACTIVE_POWER, 0));
108117

109118
builder.isCondenser(generator.isCondenser());
110119

@@ -118,8 +127,8 @@ private static GeneratorTabInfos toTabInfos(Identifiable<?> identifiable) {
118127
builder.voltageLevelProperties(getProperties(terminal.getVoltageLevel()));
119128
builder.lowVoltageLimit(terminal.getVoltageLevel().getLowVoltageLimit());
120129
builder.highVoltageLimit(terminal.getVoltageLevel().getHighVoltageLimit());
121-
builder.voltageLevelShortCircuit(toIdentifiableShortCircuit(terminal.getVoltageLevel()));
122-
builder.injectionObservability(toInjectionObservability(generator));
130+
builder.voltageLevelShortCircuit(ExtensionUtils.toIdentifiableShortCircuit(terminal.getVoltageLevel()));
131+
builder.injectionObservability(ExtensionUtils.toInjectionObservability(generator));
123132

124133
return builder.build();
125134
}
@@ -144,7 +153,7 @@ private static GeneratorFormInfos toFormInfos(Identifiable<?> identifiable) {
144153
.q(nullIfNan(terminal.getQ()))
145154
.properties(getProperties(generator));
146155
builder.busOrBusbarSectionId(getBusOrBusbarSection(terminal))
147-
.activePowerControl(toActivePowerControl(generator));
156+
.activePowerControl(ExtensionUtils.toActivePowerControl(generator));
148157

149158
builder.generatorShortCircuit(toGeneratorShortCircuit(generator))
150159
.generatorStartup(toGeneratorStartup(generator))
@@ -173,7 +182,32 @@ private static GeneratorFormInfos toFormInfos(Identifiable<?> identifiable) {
173182
}
174183
}
175184

176-
builder.connectablePosition(toMapConnectablePosition(generator, 0));
185+
builder.connectablePosition(ExtensionUtils.toMapConnectablePosition(generator, 0));
177186
return builder.build();
178187
}
188+
189+
private static Optional<GeneratorShortCircuitInfos> toGeneratorShortCircuit(@NonNull final Generator generator) {
190+
return Optional.ofNullable((GeneratorShortCircuit) generator.getExtension(GeneratorShortCircuit.class))
191+
.map(generatorShortCircuit -> GeneratorShortCircuitInfos.builder()
192+
.directTransX(generatorShortCircuit.getDirectTransX())
193+
.stepUpTransformerX(generatorShortCircuit.getStepUpTransformerX())
194+
.build());
195+
}
196+
197+
private static CoordinatedReactiveControlInfos toCoordinatedReactiveControl(@NonNull final Generator generator) {
198+
final CoordinatedReactiveControl coordinatedReactiveControl = generator.getExtension(CoordinatedReactiveControl.class);
199+
return CoordinatedReactiveControlInfos.builder()
200+
.qPercent(coordinatedReactiveControl != null ? coordinatedReactiveControl.getQPercent() : Double.NaN)
201+
.build();
202+
}
203+
204+
private static Optional<GeneratorStartupInfos> toGeneratorStartup(@NonNull final Generator generator) {
205+
return Optional.ofNullable((GeneratorStartup) generator.getExtension(GeneratorStartup.class))
206+
.map(generatorStartup -> GeneratorStartupInfos.builder()
207+
.plannedActivePowerSetPoint(nullIfNan(generatorStartup.getPlannedActivePowerSetpoint()))
208+
.marginalCost(nullIfNan(generatorStartup.getMarginalCost()))
209+
.plannedOutageRate(nullIfNan(generatorStartup.getPlannedOutageRate()))
210+
.forcedOutageRate(nullIfNan(generatorStartup.getForcedOutageRate()))
211+
.build());
212+
}
179213
}

src/main/java/org/gridsuite/network/map/dto/mapper/HvdcInfosMapper.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,23 @@
77
package org.gridsuite.network.map.dto.mapper;
88

99
import com.powsybl.iidm.network.*;
10+
import com.powsybl.iidm.network.extensions.HvdcAngleDroopActivePowerControl;
11+
import com.powsybl.iidm.network.extensions.HvdcOperatorActivePowerRange;
1012
import org.gridsuite.network.map.dto.ElementInfos;
1113
import org.gridsuite.network.map.dto.InfoTypeParameters;
14+
import org.gridsuite.network.map.dto.definition.extension.HvdcAngleDroopActivePowerControlInfos;
15+
import org.gridsuite.network.map.dto.definition.extension.HvdcOperatorActivePowerRangeInfos;
1216
import org.gridsuite.network.map.dto.definition.hvdc.HvdcMapInfos;
1317
import org.gridsuite.network.map.dto.definition.hvdc.HvdcOperatingStatusInfos;
1418
import org.gridsuite.network.map.dto.definition.hvdc.HvdcShuntCompensatorsInfos;
1519
import org.gridsuite.network.map.dto.definition.hvdc.HvdcTabInfos;
1620
import org.gridsuite.network.map.dto.utils.ElementUtils;
21+
import org.gridsuite.network.map.dto.utils.ExtensionUtils;
22+
import org.springframework.lang.NonNull;
1723

1824
import java.util.List;
1925
import java.util.Objects;
26+
import java.util.Optional;
2027
import java.util.stream.Stream;
2128

2229
import static org.gridsuite.network.map.dto.utils.ElementUtils.*;
@@ -51,7 +58,7 @@ private static HvdcMapInfos toMapInfos(Identifiable<?> identifiable) {
5158
.p1(nullIfNan(hvdcLine.getConverterStation1().getTerminal().getP()))
5259
.p2(nullIfNan(hvdcLine.getConverterStation2().getTerminal().getP()))
5360
.hvdcType(hvdcLine.getConverterStation1().getHvdcType())
54-
.operatingStatus(toOperatingStatus(hvdcLine))
61+
.operatingStatus(ExtensionUtils.toOperatingStatus(hvdcLine))
5562
.build();
5663
}
5764

@@ -65,7 +72,7 @@ private static HvdcOperatingStatusInfos toOperatingStatusInfos(Identifiable<?> i
6572
.name(hvdcLine.getOptionalName().orElse(null))
6673
.voltageLevelId1(terminal1.getVoltageLevel().getId())
6774
.voltageLevelId2(terminal2.getVoltageLevel().getId())
68-
.operatingStatus(toOperatingStatus(hvdcLine))
75+
.operatingStatus(ExtensionUtils.toOperatingStatus(hvdcLine))
6976
.build();
7077
}
7178

@@ -130,4 +137,19 @@ public static HvdcShuntCompensatorsInfos toHvdcShuntCompensatorsInfos(HvdcLine h
130137
}
131138
return builder.build();
132139
}
140+
141+
protected static Optional<HvdcAngleDroopActivePowerControlInfos> toHvdcAngleDroopActivePowerControlIdentifiable(@NonNull final HvdcLine hvdcLine) {
142+
return Optional.ofNullable((HvdcAngleDroopActivePowerControl) hvdcLine.getExtension(HvdcAngleDroopActivePowerControl.class))
143+
.map(hvdcAngleDroopActivePowerControl -> HvdcAngleDroopActivePowerControlInfos.builder()
144+
.droop(hvdcAngleDroopActivePowerControl.getDroop())
145+
.isEnabled(hvdcAngleDroopActivePowerControl.isEnabled())
146+
.p0(hvdcAngleDroopActivePowerControl.getP0()).build());
147+
}
148+
149+
protected static Optional<HvdcOperatorActivePowerRangeInfos> toHvdcOperatorActivePowerRange(@NonNull final HvdcLine hvdcLine) {
150+
return Optional.ofNullable((HvdcOperatorActivePowerRange) hvdcLine.getExtension(HvdcOperatorActivePowerRange.class))
151+
.map(hvdcOperatorActivePowerRange -> HvdcOperatorActivePowerRangeInfos.builder()
152+
.oprFromCS1toCS2(hvdcOperatorActivePowerRange.getOprFromCS1toCS2())
153+
.oprFromCS2toCS1(hvdcOperatorActivePowerRange.getOprFromCS2toCS1()).build());
154+
}
133155
}

src/main/java/org/gridsuite/network/map/dto/mapper/HvdcVscInfosMapper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@
1212
import org.gridsuite.network.map.dto.InfoTypeParameters;
1313
import org.gridsuite.network.map.dto.definition.hvdc.HvdcFormInfos;
1414
import org.gridsuite.network.map.dto.definition.hvdc.hvdcvsc.HvdcVscFormInfos;
15+
import org.gridsuite.network.map.dto.utils.ExtensionUtils;
1516

16-
import static org.gridsuite.network.map.dto.utils.ElementUtils.*;
17+
import static org.gridsuite.network.map.dto.utils.ElementUtils.getProperties;
1718

1819
/**
1920
* @author Ghazwa Rehili <ghazwa.rehili at rte-france.com>
@@ -45,7 +46,7 @@ private static HvdcFormInfos toFormInfos(Identifiable<?> identifiable) {
4546
.converterStation2(VscConverterStationInfosMapper.toFormInfos(hvdcLine.getConverterStation2()))
4647
.hvdcAngleDroopActivePowerControl(toHvdcAngleDroopActivePowerControlIdentifiable(hvdcLine))
4748
.hvdcOperatorActivePowerRange(toHvdcOperatorActivePowerRange(hvdcLine))
48-
.operatingStatus(toOperatingStatus(hvdcLine));
49+
.operatingStatus(ExtensionUtils.toOperatingStatus(hvdcLine));
4950

5051
return builder.build();
5152
}

0 commit comments

Comments
 (0)