Skip to content

Upgrade to powsybl-dependencies v2025.0.1 #623

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
May 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 1 addition & 24 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,11 @@
</developers>

<properties>
<gridsuite-dependencies.version>38.0.0</gridsuite-dependencies.version>
<gridsuite-dependencies.version>39.0.0</gridsuite-dependencies.version>
<db-util.version>1.0.5</db-util.version>
<mockwebserver3.version>5.0.0-alpha.14</mockwebserver3.version>
<liquibase-hibernate-package>org.gridsuite.modification.server</liquibase-hibernate-package>
<sonar.coverage.exclusions>**/migration/**/*</sonar.coverage.exclusions>
<network-modification.version>0.14.0</network-modification.version>
<!-- FIXME: powsybl-network-store modules'version is overloaded in the dependencies section.The overloads and this property below have to be removed at next powsybl-ws-dependencies.version upgrade -->
<powsybl-network-store.version>1.24.0</powsybl-network-store.version>
<sonar.organization>gridsuite</sonar.organization>
<sonar.projectKey>org.gridsuite:network-modification-server</sonar.projectKey>
</properties>
Expand Down Expand Up @@ -97,25 +94,6 @@
<scope>import</scope>
</dependency>

<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-network-store-client</artifactId>
<!-- FIXME: to be removed at next powsybl-ws-dependencies upgrade -->
<version>${powsybl-network-store.version}</version>
</dependency>
<!-- FIXME: to be removed at next powsybl-ws-dependencies upgrade -->
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-network-store-iidm-impl</artifactId>
<version>${powsybl-network-store.version}</version>
</dependency>
<!-- FIXME: to be removed at next powsybl-ws-dependencies upgrade -->
<dependency>
<groupId>com.powsybl</groupId>
<artifactId>powsybl-network-store-model</artifactId>
<version>${powsybl-network-store.version}</version>
</dependency>

<!-- imports -->
<dependency>
<groupId>org.gridsuite</groupId>
Expand All @@ -139,7 +117,6 @@
<dependency>
<groupId>org.gridsuite</groupId>
<artifactId>gridsuite-network-modification</artifactId>
<version>${network-modification.version}</version>
</dependency>
<dependency>
<groupId>com.powsybl</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import lombok.Getter;
import lombok.Setter;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.NetworkModificationException;
import org.gridsuite.modification.dto.ModificationInfos;
import org.gridsuite.modification.modifications.AbstractModification;
import org.gridsuite.modification.server.dto.ModificationApplicationGroup;
Expand All @@ -40,6 +39,8 @@
import java.util.List;
import java.util.UUID;

import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;

/**
* @author Slimane Amar <slimane.amar at rte-france.com>
*/
Expand Down Expand Up @@ -173,7 +174,11 @@ private ApplicationStatus apply(ModificationApplicationGroup modificationGroupIn
ReportNode reportNode;
if (modificationGroupInfos.reportInfos().getNodeUuid() != null) {
UUID reporterId = modificationGroupInfos.reportInfos().getNodeUuid();
reportNode = ReportNode.newRootReportNode().withMessageTemplate(reporterId.toString(), reporterId.toString()).build();
reportNode = ReportNode.newRootReportNode()
.withAllResourceBundlesFromClasspath()
.withMessageTemplate("network.modification.server.nodeUuid")
.withUntypedValue("nodeUuid", reporterId.toString())
.build();
} else {
reportNode = ReportNode.NO_OP;
}
Expand All @@ -196,7 +201,7 @@ private ApplicationStatus apply(ModificationInfos modificationInfos, Network net
try {
networkModificationObserver.observe("apply", modificationInfos.getType(), () -> apply(modificationInfos.toModification(), network, subReportNode));
} catch (Exception e) {
handleException(modificationInfos.getErrorType(), subReportNode, e);
handleException(subReportNode, e);
}
return getApplicationStatus(reportNode);
}
Expand All @@ -212,15 +217,15 @@ private void apply(AbstractModification modification, Network network, ReportNod
modification.apply(network, subReportNode);
}

private void handleException(NetworkModificationException.Type typeIfError, ReportNode subReportNode, Exception e) {
private void handleException(ReportNode subReportNode, Exception e) {
boolean isApplicationException = PowsyblException.class.isAssignableFrom(e.getClass());
if (!isApplicationException && LOGGER.isErrorEnabled()) {
LOGGER.error(e.toString(), e);
}
String errorMessage = isApplicationException ? e.getMessage() : "Technical error: " + e;

subReportNode.newReportNode()
.withMessageTemplate(typeIfError.name(), "${errorMessage}")
.withMessageTemplate(ERROR_MESSAGE_KEY)
.withTypedValue("typedValue", 20, "type")
.withUntypedValue("errorMessage", errorMessage)
.withSeverity(TypedValue.ERROR_SEVERITY)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* Copyright (c) 2025, 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 org.gridsuite.modification.server.report;

import com.google.auto.service.AutoService;
import com.powsybl.commons.report.ReportResourceBundle;

/**
* @author Charly Boutier {@literal <charly.boutier at rte-france.com>}
*/
@AutoService(ReportResourceBundle.class)
public final class NetworkModificationServerReportResourceBundle implements ReportResourceBundle {

public static final String BASE_NAME = "org.gridsuite.modification.server.reports";

public static final String ERROR_MESSAGE_KEY = "network.modification.server.errorMessage";

public String getBaseName() {
return BASE_NAME;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
network.modification.server.errorMessage = ${errorMessage}
network.modification.server.nodeUuid = ${nodeUuid}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
import static org.gridsuite.modification.server.NetworkModificationServerException.Type.DUPLICATION_ARGUMENT_INVALID;
import static org.gridsuite.modification.server.elasticsearch.EquipmentInfosService.TYPES_FOR_INDEXING;
import static org.gridsuite.modification.server.impacts.TestImpactUtils.*;
import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;
import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.*;
Expand Down Expand Up @@ -463,7 +464,7 @@ void testMultipleModificationsWithError() throws Exception {
assertNotNull(network.getGenerator("idGenerator"));
assertEquals(20, network.getGenerator("idGenerator").getTargetP(), 0.1);
assertLogMessage("Technical error: java.lang.NullPointerException: Cannot set property 'targetP' on null object",
groovyScriptInfos.getErrorType().name(), reportService);
ERROR_MESSAGE_KEY, reportService);

assertEquals(2, modificationRepository.getModifications(TEST_GROUP_ID, true, true).size());
}
Expand Down Expand Up @@ -1330,7 +1331,10 @@ void testTombstonedEquipmentInfos() throws Exception {
mvcResult = mockMvc.perform(post(NETWORK_MODIFICATION_URI).content(equipmentDeletionInfosJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
assertApplicationStatusOK(mvcResult);
expectedImpacts = createMultipleDeletionImpacts(
expectedImpacts = new ArrayList<>();
// Two winding transformer trf2 (in s1) is regulating on v3load (in s2), resetting regulation on delete of v3load adds a modification impact on the substation s1
expectedImpacts.add(createModificationImpactType(IdentifiableType.SUBSTATION, "s1", Set.of("s1")));
expectedImpacts.addAll(createMultipleDeletionImpacts(
List.of(
Pair.of(IdentifiableType.SUBSTATION, "s2"), Pair.of(IdentifiableType.VOLTAGE_LEVEL, "v3"),
Pair.of(IdentifiableType.BUSBAR_SECTION, "3A"), Pair.of(IdentifiableType.LOAD, "v3load"),
Expand All @@ -1339,7 +1343,7 @@ void testTombstonedEquipmentInfos() throws Exception {
Pair.of(IdentifiableType.SWITCH, "v3bl3"), Pair.of(IdentifiableType.SWITCH, "v3dl3")
),
Set.of("s2")
);
));
expectedImpacts.addAll(createMultipleDeletionImpacts(
List.of(
Pair.of(IdentifiableType.SWITCH, "v1bl3"), Pair.of(IdentifiableType.SWITCH, "v1dl3"),
Expand Down Expand Up @@ -1382,7 +1386,7 @@ private void testBranchDeletionImpacts(String resultAsString,
TestImpactUtils.testBranchDeletionImpacts(mapper, resultAsString, branchType, branchId, breakerId1, disconnectorId1, substationId1, breakerId2, disconnectorId2, substationId2);

// line and switches have been removed from network
assertNull(network.getLine(branchId));
assertNull(network.getBranch(branchId));
assertNull(network.getSwitch(breakerId1));
assertNull(network.getSwitch(disconnectorId1));
assertNull(network.getSwitch(breakerId2));
Expand Down Expand Up @@ -1427,7 +1431,7 @@ private void test3WTDeletionImpacts(String resultAsString, String w3tId,

private void testMultipleDeletionImpacts(String networkModificationResultAsString, List<AbstractBaseImpact> expectedImpacts) throws Exception {
for (AbstractBaseImpact impact : expectedImpacts) {
if (impact instanceof SimpleElementImpact simpleImpact) {
if (impact instanceof SimpleElementImpact simpleImpact && simpleImpact.isDeletion()) {
// Equipment has been removed from network
assertNull(network.getIdentifiable(simpleImpact.getElementId()));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,16 +152,23 @@ public static void testBranchImpacts(ObjectMapper mapper, SimpleImpactType type,
private static List<AbstractBaseImpact> createBranchImpacts(SimpleImpactType type, IdentifiableType branchType, String branchId,
String breakerId1, String disconnectorId1, String substationId1,
String breakerId2, String disconnectorId2, String substationId2) {
if (type == SimpleImpactType.DELETION) {
return List.of(
if (type != SimpleImpactType.DELETION) {
return createSubstationImpacts(Set.copyOf(List.of(substationId1, substationId2)));
}

List<AbstractBaseImpact> expectedImpacts = new ArrayList<>();
// For two windings transformers, resetting regulation on delete adds a modification impact on the substation
if (branchType == IdentifiableType.TWO_WINDINGS_TRANSFORMER) {
expectedImpacts.add(createModificationImpactType(IdentifiableType.SUBSTATION, substationId1, Set.of(substationId1)));
}
expectedImpacts.addAll(List.of(
createElementImpact(SimpleImpactType.DELETION, branchType, branchId, Set.copyOf(List.of(substationId1, substationId2))),
createElementImpact(SimpleImpactType.DELETION, IdentifiableType.SWITCH, breakerId1, Set.of(substationId1)),
createElementImpact(SimpleImpactType.DELETION, IdentifiableType.SWITCH, disconnectorId1, Set.of(substationId1)),
createElementImpact(SimpleImpactType.DELETION, IdentifiableType.SWITCH, breakerId2, Set.of(substationId2)),
createElementImpact(SimpleImpactType.DELETION, IdentifiableType.SWITCH, disconnectorId2, Set.of(substationId2))
);
}
return createSubstationImpacts(Set.copyOf(List.of(substationId1, substationId2)));
));
return expectedImpacts;
}

public static void test3WTDeletionImpacts(ObjectMapper mapper, String resultAsString, String w3tId,
Expand All @@ -184,6 +191,8 @@ private static List<AbstractBaseImpact> create3wtDeletionImpacts(String w3tId,
String breakerId3, String disconnectorId3,
String substationId) {
return List.of(
// For three windings transformers, resetting regulation on delete adds a modification impact on the substation
createModificationImpactType(IdentifiableType.SUBSTATION, substationId, Set.of(substationId)),
createDeletionImpactType(IdentifiableType.SWITCH, breakerId1, Set.of(substationId)),
createDeletionImpactType(IdentifiableType.SWITCH, disconnectorId1, Set.of(substationId)),
createDeletionImpactType(IdentifiableType.SWITCH, breakerId2, Set.of(substationId)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.UUID;

import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND;
import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;
import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
Expand Down Expand Up @@ -112,7 +113,7 @@ void testCreateWithBusbarSectionErrors() throws Exception {
mockMvc.perform(post(getNetworkModificationUri()).content(body).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
assertLogMessage(new NetworkModificationException(BUS_NOT_FOUND, "notFoundBus").getMessage(),
batteryCreationInfos.getErrorType().name(), reportService);
ERROR_MESSAGE_KEY, reportService);
}

@Override
Expand Down
Loading