Skip to content

Commit 8301e9d

Browse files
review
Signed-off-by: Tristan Chuine <[email protected]>
1 parent 3f94e7c commit 8301e9d

File tree

4 files changed

+52
-93
lines changed

4 files changed

+52
-93
lines changed

src/main/java/org/gridsuite/voltageinit/server/service/VoltageInitRunContext.java

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
package org.gridsuite.voltageinit.server.service;
88

99
import com.powsybl.commons.reporter.Reporter;
10-
import com.powsybl.commons.reporter.ReporterModel;
11-
import lombok.Data;
10+
import lombok.AllArgsConstructor;
11+
import lombok.Getter;
12+
import lombok.Setter;
1213

1314
import java.util.HashMap;
1415
import java.util.Map;
@@ -18,9 +19,9 @@
1819
/**
1920
* @author Etienne Homer <etienne.homer at rte-france.com>
2021
*/
21-
@Data
22+
@AllArgsConstructor
23+
@Getter
2224
public class VoltageInitRunContext {
23-
private static final String VOLTAGE_INIT_TYPE_REPORT = "VoltageInit";
2425

2526
private final UUID networkUuid;
2627

@@ -39,24 +40,10 @@ public class VoltageInitRunContext {
3940
private final UUID parametersUuid;
4041

4142
private final Map<String, Double> voltageLevelsIdsRestricted;
42-
private final Reporter rootReporter;
43+
@Setter private Reporter rootReporter;
4344

4445
public VoltageInitRunContext(UUID networkUuid, String variantId, String receiver, UUID reportUuid, String reporterId, String reportType, String userId, UUID parametersUuid, Map<String, Double> voltageLevelsIdsRestricted) {
45-
this.networkUuid = Objects.requireNonNull(networkUuid);
46-
this.variantId = variantId;
47-
this.receiver = receiver;
48-
this.reportUuid = reportUuid;
49-
this.reporterId = reporterId;
50-
this.reportType = reportType;
51-
this.userId = userId;
52-
this.parametersUuid = parametersUuid;
53-
this.voltageLevelsIdsRestricted = voltageLevelsIdsRestricted;
54-
if (this.reportUuid == null) {
55-
this.rootReporter = Reporter.NO_OP;
56-
} else {
57-
final String rootReporterId = reporterId == null ? VOLTAGE_INIT_TYPE_REPORT : reporterId + "@" + reportType;
58-
this.rootReporter = new ReporterModel(rootReporterId, rootReporterId);
59-
}
46+
this(Objects.requireNonNull(networkUuid), variantId, receiver, reportUuid, reporterId, reportType, userId, parametersUuid, voltageLevelsIdsRestricted, Reporter.NO_OP);
6047
}
6148

6249
public VoltageInitRunContext(UUID networkUuid, String variantId, String receiver, UUID reportUuid, String reporterId, String reportType, String userId, UUID parametersUuid) {

src/main/java/org/gridsuite/voltageinit/server/service/VoltageInitWorkerService.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
import com.google.common.collect.Sets;
1010
import com.powsybl.commons.PowsyblException;
11+
import com.powsybl.commons.reporter.Reporter;
12+
import com.powsybl.commons.reporter.ReporterModel;
1113
import com.powsybl.iidm.network.Bus;
1214
import com.powsybl.iidm.network.Network;
1315
import com.powsybl.iidm.network.VariantManagerConstants;
@@ -54,6 +56,8 @@ public class VoltageInitWorkerService {
5456
private static final String ERROR = "error";
5557
private static final String ERROR_DURING_VOLTAGE_PROFILE_INITIALISATION = "Error during voltage profile initialization";
5658

59+
private static final String VOLTAGE_INIT_TYPE_REPORT = "VoltageInit";
60+
5761
private final NetworkStoreService networkStoreService;
5862

5963
private final NetworkModificationService networkModificationService;
@@ -115,6 +119,9 @@ private Pair<Network, OpenReacResult> run(VoltageInitRunContext context, UUID re
115119
getNetwork(context.getNetworkUuid(), context.getVariantId()));
116120

117121
if (context.getReportUuid() != null) {
122+
String rootReporterId = context.getReporterId() == null ? VOLTAGE_INIT_TYPE_REPORT : context.getReporterId() + "@" + context.getReportType();
123+
Reporter rootReporter = new ReporterModel(rootReporterId, rootReporterId);
124+
context.setRootReporter(rootReporter.createSubReporter(context.getReportType(), VOLTAGE_INIT_TYPE_REPORT, VOLTAGE_INIT_TYPE_REPORT, context.getReportUuid().toString()));
118125
// Delete any previous VoltageInit computation logs
119126
voltageInitObserver.observe("report.delete", () ->
120127
reportService.deleteReport(context.getReportUuid(), context.getReportType()));

src/main/java/org/gridsuite/voltageinit/server/service/parameters/VoltageInitParametersService.java

Lines changed: 36 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
*/
77
package org.gridsuite.voltageinit.server.service.parameters;
88

9+
import java.text.DecimalFormat;
910
import java.util.*;
1011
import java.util.concurrent.TimeUnit;
12+
import java.util.concurrent.atomic.AtomicReference;
1113
import java.util.stream.Collectors;
1214

1315
import com.google.common.annotations.VisibleForTesting;
@@ -20,7 +22,6 @@
2022
import com.powsybl.openreac.parameters.input.VoltageLimitOverride;
2123
import com.powsybl.openreac.parameters.input.VoltageLimitOverride.VoltageLimitType;
2224
import com.powsybl.openreac.parameters.input.algo.ReactiveSlackBusesMode;
23-
import lombok.NonNull;
2425
import org.apache.commons.lang3.mutable.MutableInt;
2526
import org.gridsuite.voltageinit.server.dto.parameters.FilterEquipments;
2627
import org.gridsuite.voltageinit.server.dto.parameters.IdentifiableAttributes;
@@ -45,6 +46,7 @@
4546
public class VoltageInitParametersService {
4647

4748
private static final Logger LOGGER = LoggerFactory.getLogger(VoltageInitParametersService.class);
49+
private static final DecimalFormat DF = new DecimalFormat("0.0");
4850

4951
private final FilterService filterService;
5052

@@ -111,25 +113,25 @@ private static void fillSpecificVoltageLimits(List<VoltageLimitOverride> specifi
111113
boolean isLowVoltageLimitDefaultSet = voltageLevelDefaultLimits.containsKey(voltageLevel.getId()) && voltageLevelDefaultLimits.get(voltageLevel.getId()).getLowVoltageLimit() != null;
112114
boolean isHighVoltageLimitDefaultSet = voltageLevelDefaultLimits.containsKey(voltageLevel.getId()) && voltageLevelDefaultLimits.get(voltageLevel.getId()).getHighVoltageLimit() != null;
113115

114-
final CountVoltageLimit counterToIncrementLow = generateLowVoltageLimit(specificVoltageLimits, voltageLevelModificationLimits, voltageLevelDefaultLimits, isLowVoltageLimitModificationSet, isLowVoltageLimitDefaultSet, voltageLevel, voltageLevelsIdsRestricted);
115-
final CountVoltageLimit counterToIncrementHigh = generateHighVoltageLimit(specificVoltageLimits, voltageLevelModificationLimits, voltageLevelDefaultLimits, isHighVoltageLimitModificationSet, isHighVoltageLimitDefaultSet, voltageLevel);
116-
if (counterToIncrementLow == CountVoltageLimit.DEFAULT || counterToIncrementLow == CountVoltageLimit.BOTH ||
117-
counterToIncrementHigh == CountVoltageLimit.DEFAULT || counterToIncrementHigh == CountVoltageLimit.BOTH) {
116+
final CounterToIncrement counterToIncrementLow = generateLowVoltageLimit(specificVoltageLimits, voltageLevelModificationLimits, voltageLevelDefaultLimits, isLowVoltageLimitModificationSet, isLowVoltageLimitDefaultSet, voltageLevel, voltageLevelsIdsRestricted);
117+
final CounterToIncrement counterToIncrementHigh = generateHighVoltageLimit(specificVoltageLimits, voltageLevelModificationLimits, voltageLevelDefaultLimits, isHighVoltageLimitModificationSet, isHighVoltageLimitDefaultSet, voltageLevel);
118+
if (counterToIncrementLow == CounterToIncrement.DEFAULT || counterToIncrementLow == CounterToIncrement.BOTH ||
119+
counterToIncrementHigh == CounterToIncrement.DEFAULT || counterToIncrementHigh == CounterToIncrement.BOTH) {
118120
counterMissingVoltageLimits.increment();
119121
}
120-
if (counterToIncrementLow == CountVoltageLimit.MODIFICATION || counterToIncrementLow == CountVoltageLimit.BOTH ||
121-
counterToIncrementHigh == CountVoltageLimit.MODIFICATION || counterToIncrementHigh == CountVoltageLimit.BOTH) {
122+
if (counterToIncrementLow == CounterToIncrement.MODIFICATION || counterToIncrementLow == CounterToIncrement.BOTH ||
123+
counterToIncrementHigh == CounterToIncrement.MODIFICATION || counterToIncrementHigh == CounterToIncrement.BOTH) {
122124
counterVoltageLimitModifications.increment();
123125
}
124126
}
125127

126-
private static CountVoltageLimit generateLowVoltageLimit(List<VoltageLimitOverride> specificVoltageLimits,
127-
Map<String, VoltageLimitEntity> voltageLevelModificationLimits,
128-
Map<String, VoltageLimitEntity> voltageLevelDefaultLimits,
129-
boolean isLowVoltageLimitModificationSet,
130-
boolean isLowVoltageLimitDefaultSet,
131-
VoltageLevel voltageLevel,
132-
Map<String, Double> voltageLevelsIdsRestricted) {
128+
private static CounterToIncrement generateLowVoltageLimit(List<VoltageLimitOverride> specificVoltageLimits,
129+
Map<String, VoltageLimitEntity> voltageLevelModificationLimits,
130+
Map<String, VoltageLimitEntity> voltageLevelDefaultLimits,
131+
boolean isLowVoltageLimitModificationSet,
132+
boolean isLowVoltageLimitDefaultSet,
133+
VoltageLevel voltageLevel,
134+
Map<String, Double> voltageLevelsIdsRestricted) {
133135
double newLowVoltageLimit;
134136
double lowVoltageLimit = voltageLevel.getLowVoltageLimit();
135137
if (!Double.isNaN(lowVoltageLimit) && isLowVoltageLimitModificationSet) {
@@ -141,7 +143,7 @@ private static CountVoltageLimit generateLowVoltageLimit(List<VoltageLimitOverri
141143
newLowVoltageLimit = lowVoltageLimitModification;
142144
}
143145
specificVoltageLimits.add(new VoltageLimitOverride(voltageLevel.getId(), VoltageLimitType.LOW_VOLTAGE_LIMIT, true, newLowVoltageLimit));
144-
return CountVoltageLimit.MODIFICATION;
146+
return CounterToIncrement.MODIFICATION;
145147

146148
} else if (Double.isNaN(lowVoltageLimit) && isLowVoltageLimitDefaultSet) {
147149
double voltageLimit = voltageLevelDefaultLimits.get(voltageLevel.getId()).getLowVoltageLimit() + (isLowVoltageLimitModificationSet ? voltageLevelModificationLimits.get(voltageLevel.getId()).getLowVoltageLimit() : 0.);
@@ -153,39 +155,39 @@ private static CountVoltageLimit generateLowVoltageLimit(List<VoltageLimitOverri
153155
}
154156
specificVoltageLimits.add(new VoltageLimitOverride(voltageLevel.getId(), VoltageLimitType.LOW_VOLTAGE_LIMIT, false, newLowVoltageLimit));
155157
if (isLowVoltageLimitModificationSet) {
156-
return CountVoltageLimit.BOTH;
158+
return CounterToIncrement.BOTH;
157159
} else {
158-
return CountVoltageLimit.DEFAULT;
160+
return CounterToIncrement.DEFAULT;
159161
}
160162
} else {
161-
return CountVoltageLimit.NONE;
163+
return CounterToIncrement.NONE;
162164
}
163165
}
164166

165-
private static CountVoltageLimit generateHighVoltageLimit(List<VoltageLimitOverride> specificVoltageLimits,
166-
Map<String, VoltageLimitEntity> voltageLevelModificationLimits,
167-
Map<String, VoltageLimitEntity> voltageLevelDefaultLimits,
168-
boolean isHighVoltageLimitModificationSet,
169-
boolean isHighVoltageLimitDefaultSet,
170-
VoltageLevel voltageLevel) {
167+
private static CounterToIncrement generateHighVoltageLimit(List<VoltageLimitOverride> specificVoltageLimits,
168+
Map<String, VoltageLimitEntity> voltageLevelModificationLimits,
169+
Map<String, VoltageLimitEntity> voltageLevelDefaultLimits,
170+
boolean isHighVoltageLimitModificationSet,
171+
boolean isHighVoltageLimitDefaultSet,
172+
VoltageLevel voltageLevel) {
171173
if (!Double.isNaN(voltageLevel.getHighVoltageLimit()) && isHighVoltageLimitModificationSet) {
172174
specificVoltageLimits.add(new VoltageLimitOverride(voltageLevel.getId(), VoltageLimitType.HIGH_VOLTAGE_LIMIT, true, voltageLevelModificationLimits.get(voltageLevel.getId()).getHighVoltageLimit()));
173-
return CountVoltageLimit.MODIFICATION;
175+
return CounterToIncrement.MODIFICATION;
174176
} else if (Double.isNaN(voltageLevel.getHighVoltageLimit()) && isHighVoltageLimitDefaultSet) {
175177
specificVoltageLimits.add(new VoltageLimitOverride(voltageLevel.getId(), VoltageLimitType.HIGH_VOLTAGE_LIMIT, false, voltageLevelDefaultLimits.get(voltageLevel.getId()).getHighVoltageLimit() + (isHighVoltageLimitModificationSet ? voltageLevelModificationLimits.get(voltageLevel.getId()).getHighVoltageLimit() : 0.)));
176178
if (isHighVoltageLimitModificationSet) {
177-
return CountVoltageLimit.BOTH;
179+
return CounterToIncrement.BOTH;
178180
} else {
179-
return CountVoltageLimit.DEFAULT;
181+
return CounterToIncrement.DEFAULT;
180182
}
181183
} else {
182-
return CountVoltageLimit.NONE;
184+
return CounterToIncrement.NONE;
183185
}
184186
}
185187

186188
@Transactional(readOnly = true)
187189
public OpenReacParameters buildOpenReacParameters(VoltageInitRunContext context, Network network) {
188-
final long startTime = System.nanoTime();
190+
AtomicReference<Long> startTime = new AtomicReference<>(System.nanoTime());
189191
final Reporter reporter = context.getRootReporter().createSubReporter("OpenReacParameters", "OpenReac parameters", Map.of(
190192
"parameters_id", new TypedValue(Objects.toString(context.getParametersUuid()), "ID")
191193
));
@@ -214,7 +216,7 @@ public OpenReacParameters buildOpenReacParameters(VoltageInitRunContext context,
214216
.toList());
215217

216218
network.getVoltageLevelStream()
217-
.filter(voltageLevel -> voltageLevelDefaultLimits.keySet().contains(voltageLevel.getId()) || voltageLevelModificationLimits.keySet().contains(voltageLevel.getId()))
219+
.filter(voltageLevel -> voltageLevelDefaultLimits.containsKey(voltageLevel.getId()) || voltageLevelModificationLimits.containsKey(voltageLevel.getId()))
218220
.forEach(voltageLevel -> fillSpecificVoltageLimits(specificVoltageLimits,
219221
counterMissingVoltageLimits, counterVoltageLimitModifications,
220222
voltageLevelModificationLimits, voltageLevelDefaultLimits,
@@ -283,7 +285,7 @@ public OpenReacParameters buildOpenReacParameters(VoltageInitRunContext context,
283285
//The optimizer will attach reactive slack variables to all buses
284286
parameters.setReactiveSlackBusesMode(ReactiveSlackBusesMode.ALL);
285287

286-
LOGGER.info("Parameters built in {}s", TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - startTime));
288+
LOGGER.info("Parameters built in {}s", TimeUnit.NANOSECONDS.toSeconds(System.nanoTime() - startTime.get()));
287289
return parameters;
288290
}
289291

@@ -302,7 +304,7 @@ private List<String> toEquipmentIdsList(UUID networkUuid, String variantId, List
302304
}
303305

304306
private static String voltageToString(double voltage) {
305-
return Double.isNaN(voltage) ? Double.toString(voltage) : voltage + "\u202FkV";
307+
return Double.isNaN(voltage) ? DF.format(voltage) : voltage + "\u202FkV";
306308
}
307309

308310
private static String computeRelativeVoltageLevel(final double initialVoltageLimit, @Nullable final VoltageLimitOverride override) {
@@ -317,17 +319,7 @@ private static String computeRelativeVoltageLevel(final double initialVoltageLim
317319
* We count modifications per substation only once in {@link #filterService}, not twice
318320
*/
319321
@VisibleForTesting
320-
enum CountVoltageLimit {
321-
NONE, DEFAULT, MODIFICATION, BOTH;
322-
323-
public CountVoltageLimit merge(@NonNull final CountVoltageLimit other) {
324-
if (this == BOTH || other == BOTH || this == DEFAULT && other == MODIFICATION || this == MODIFICATION && other == DEFAULT) {
325-
return BOTH;
326-
} else if (this == NONE) {
327-
return other;
328-
} else { // other == NONE
329-
return this;
330-
}
331-
}
322+
enum CounterToIncrement {
323+
NONE, DEFAULT, MODIFICATION, BOTH
332324
}
333325
}

0 commit comments

Comments
 (0)