Skip to content

Commit f3deb69

Browse files
Move CEI909 constant outside of record data manipulation
1 parent 7ce6d97 commit f3deb69

File tree

3 files changed

+80
-10
lines changed

3 files changed

+80
-10
lines changed

src/main/java/org/gridsuite/shortcircuit/server/dto/ShortCircuitParametersInfos.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66
*/
77
package org.gridsuite.shortcircuit.server.dto;
88

9+
import com.fasterxml.jackson.annotation.JsonGetter;
910
import com.powsybl.shortcircuit.ShortCircuitParameters;
1011
import com.powsybl.shortcircuit.VoltageRange;
11-
import lombok.*;
12+
import lombok.Builder;
13+
import lombok.extern.jackson.Jacksonized;
14+
import org.gridsuite.shortcircuit.server.service.ShortCircuitService;
1215

1316
import java.util.List;
1417

@@ -17,9 +20,13 @@
1720
* @since 1.7.0
1821
*/
1922
@Builder
23+
@Jacksonized
2024
public record ShortCircuitParametersInfos(
2125
ShortCircuitPredefinedConfiguration predefinedParameters,
22-
ShortCircuitParameters parameters,
23-
List<VoltageRange> cei909VoltageRanges
26+
ShortCircuitParameters parameters
2427
) {
28+
@JsonGetter
29+
public List<VoltageRange> cei909VoltageRanges() {
30+
return ShortCircuitService.CEI909_VOLTAGE_PROFILE;
31+
}
2532
}

src/main/java/org/gridsuite/shortcircuit/server/service/ShortCircuitService.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,9 @@
5252
*/
5353
@Service
5454
public class ShortCircuitService {
55-
5655
private static final Logger LOGGER = LoggerFactory.getLogger(ShortCircuitService.class);
5756

58-
//TODO tmp migration
59-
private static final List<VoltageRange> CEI909_VOLTAGE_PROFILE = List.of(
57+
public static final List<VoltageRange> CEI909_VOLTAGE_PROFILE = List.of(
6058
new VoltageRange(10.0, 199.99, 1.1),
6159
new VoltageRange(200.0, 299.99, 1.09),
6260
new VoltageRange(300.0, 500.0, 1.05)
@@ -171,16 +169,14 @@ private static ShortCircuitParametersInfos fromEntity(AnalysisParametersEntity e
171169
.setWithVSCConverterStations(entity.isWithVscConverterStations())
172170
.setWithNeutralPosition(entity.isWithNeutralPosition())
173171
.setInitialVoltageProfileMode(entity.getInitialVoltageProfileMode())
174-
.setVoltageRanges(InitialVoltageProfileMode.CONFIGURED.equals(entity.getInitialVoltageProfileMode()) ? CEI909_VOLTAGE_PROFILE : null),
175-
CEI909_VOLTAGE_PROFILE
172+
.setVoltageRanges(InitialVoltageProfileMode.CONFIGURED.equals(entity.getInitialVoltageProfileMode()) ? CEI909_VOLTAGE_PROFILE : null)
176173
);
177174
}
178175

179176
private static ShortCircuitParametersInfos getDefaultDtoParameters() {
180177
return new ShortCircuitParametersInfos(
181178
ShortCircuitPredefinedConfiguration.ICC_MAX_WITH_CEI909,
182-
getDefaultShortCircuitParameters(),
183-
CEI909_VOLTAGE_PROFILE
179+
getDefaultShortCircuitParameters()
184180
);
185181
}
186182

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.gridsuite.shortcircuit.server.dto;
2+
3+
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.powsybl.shortcircuit.ShortCircuitParameters;
5+
import com.powsybl.shortcircuit.VoltageRange;
6+
import lombok.NonNull;
7+
import lombok.SneakyThrows;
8+
import org.assertj.core.api.WithAssertions;
9+
import org.gridsuite.shortcircuit.server.RestTemplateConfig;
10+
import org.json.JSONArray;
11+
import org.json.JSONObject;
12+
import org.junit.jupiter.api.Test;
13+
import org.skyscreamer.jsonassert.JSONAssert;
14+
import org.skyscreamer.jsonassert.JSONCompareMode;
15+
import org.springframework.beans.factory.annotation.Autowired;
16+
import org.springframework.boot.test.autoconfigure.json.JsonTest;
17+
import org.springframework.test.context.ContextConfiguration;
18+
19+
import static org.gridsuite.shortcircuit.server.service.ShortCircuitService.CEI909_VOLTAGE_PROFILE;
20+
21+
@ContextConfiguration(classes = { RestTemplateConfig.class })
22+
@JsonTest
23+
class ShortCircuitParametersInfosTest implements WithAssertions {
24+
@Autowired
25+
ObjectMapper objectMapper;
26+
27+
@SneakyThrows
28+
private static JSONObject toJson(@NonNull final VoltageRange voltageRange) {
29+
return new JSONObject().put("minimumNominalVoltage", voltageRange.getMinimumNominalVoltage())
30+
.put("maximumNominalVoltage", voltageRange.getMaximumNominalVoltage())
31+
.put("voltageRangeCoefficient", voltageRange.getRangeCoefficient());
32+
}
33+
34+
@Test
35+
void shouldSerializeCei909VoltageRanges() throws Exception {
36+
JSONAssert.assertEquals(
37+
new JSONObject().put("predefinedParameters", ShortCircuitPredefinedConfiguration.ICC_MAX_WITH_CEI909.toString())
38+
.put("parameters", new JSONObject().put("version", "1.3")
39+
.put("withLimitViolations", true)
40+
.put("withVoltageResult", true)
41+
.put("withFeederResult", true)
42+
.put("studyType", "TRANSIENT")
43+
.put("minVoltageDropProportionalThreshold", 0.0)
44+
.put("withFortescueResult", true)
45+
.put("withLoads", true)
46+
.put("withShuntCompensators", true)
47+
.put("withVSCConverterStations", true)
48+
.put("withNeutralPosition", false)
49+
.put("initialVoltageProfileMode", "NOMINAL")
50+
.put("detailedReport", true))
51+
.put("cei909VoltageRanges", CEI909_VOLTAGE_PROFILE.stream()
52+
.map(ShortCircuitParametersInfosTest::toJson)
53+
.reduce(new JSONArray(), JSONArray::put, (arr1, arr2) -> null)),
54+
new JSONObject(objectMapper.writeValueAsString(new ShortCircuitParametersInfos(ShortCircuitPredefinedConfiguration.ICC_MAX_WITH_CEI909, new ShortCircuitParameters()))),
55+
JSONCompareMode.STRICT
56+
);
57+
}
58+
59+
@Test
60+
void shouldIgnoreCei909VoltageRangesWhenDeserialize() {
61+
final String dumbJson = "\"predefinedParameters\":\"ICC_MAX_WITH_CEI909\", \"parameters\":{\"version\":\"1.3\",\"withLimitViolations\":true,\"withVoltageResult\":true,\"withFeederResult\":true,\"studyType\":\"TRANSIENT\",\"minVoltageDropProportionalThreshold\":0.0,\"withFortescueResult\":false,\"withLoads\":true,\"withShuntCompensators\":true,\"withVSCConverterStations\":true,\"withNeutralPosition\":false,\"initialVoltageProfileMode\":\"NOMINAL\",\"detailedReport\":true}";
62+
assertThatNoException().as("DTO with CEI909 field")
63+
.isThrownBy(() -> objectMapper.readValue("{" + dumbJson + ", \"cei909VoltageRanges\":[null,null]}", ShortCircuitParametersInfos.class));
64+
assertThatNoException().as("DTO without CEI909 field")
65+
.isThrownBy(() -> objectMapper.readValue("{" + dumbJson + "}", ShortCircuitParametersInfos.class));
66+
}
67+
}

0 commit comments

Comments
 (0)