Skip to content
Merged
Show file tree
Hide file tree
Changes from 23 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
a1ee8a6
first refacto
Mathieu-Deharbe Nov 21, 2025
f31fdc2
corrects TU
Mathieu-Deharbe Nov 24, 2025
47b4492
permanent limit
Mathieu-Deharbe Nov 24, 2025
8d6e732
applicabilityToString
Mathieu-Deharbe Nov 24, 2025
2f4df9d
applicabilityToString in the UTs
Mathieu-Deharbe Nov 24, 2025
fc9d514
correct handling of ambiguous ADD or MODIFY
Mathieu-Deharbe Nov 24, 2025
6ce5c99
code style
Mathieu-Deharbe Nov 24, 2025
6bc3cc7
sub report node for each side
Mathieu-Deharbe Nov 24, 2025
05eab30
remove olgUtils
Mathieu-Deharbe Nov 24, 2025
617b04c
corrects logSideNode
Mathieu-Deharbe Nov 24, 2025
dda8e3d
corrects logSideNode
Mathieu-Deharbe Nov 24, 2025
c0e89d2
log limits only if there is at least one actual modification
Mathieu-Deharbe Nov 25, 2025
a722970
Merge branch 'main' into limits-modification-logs
Mathieu-Deharbe Nov 25, 2025
cc3401c
corrections post merge conflicts
Mathieu-Deharbe Nov 25, 2025
9df943c
if (!limitsReportsSide1.isEmpty() || !limitsReportsSide2.isEmpty()) {
Mathieu-Deharbe Nov 25, 2025
0d9870d
createLogNodeForSide
Mathieu-Deharbe Nov 25, 2025
fd828df
Merge remote-tracking branch 'origin/limits-modification-logs' into l…
Mathieu-Deharbe Nov 25, 2025
777057f
if (!limitsReportsSide1.isEmpty() || !limitsReportsSide2.isEmpty()) {
Mathieu-Deharbe Nov 25, 2025
803482c
check on createLogNodeForSide parameter
Mathieu-Deharbe Nov 25, 2025
a3df970
corrections post review
Mathieu-Deharbe Nov 25, 2025
7b57038
corrects name modification
Mathieu-Deharbe Nov 26, 2025
77930de
logs in case of line ceration and transfo creation
Mathieu-Deharbe Nov 26, 2025
188eed4
rename classes
Mathieu-Deharbe Nov 26, 2025
6155133
TU testRename
Mathieu-Deharbe Nov 26, 2025
1a1aa0b
Merge branch 'main' into limits-modification-logs
basseche Nov 27, 2025
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

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -80,16 +80,25 @@ public void apply(Network network, ReportNode subReportNode) {
List<OperationalLimitsGroupInfos> opLimitsGroupSide1 = ModificationUtils.getOperationalLimitsGroupsOnSide(modificationInfos.getOperationalLimitsGroups(), Applicability.SIDE1);
List<OperationalLimitsGroupInfos> opLimitsGroupSide2 = ModificationUtils.getOperationalLimitsGroupsOnSide(modificationInfos.getOperationalLimitsGroups(), Applicability.SIDE2);
ReportNode reportNode = null;
if (!CollectionUtils.isEmpty(opLimitsGroupSide1)) {
if (!CollectionUtils.isEmpty(modificationInfos.getOperationalLimitsGroups())) {
reportNode = addLimitSetReportNode(limitsReporter);
ModificationUtils.getInstance().setCurrentLimitsOnASide(reportNode, opLimitsGroupSide1, line, ONE);
}
if (!CollectionUtils.isEmpty(opLimitsGroupSide2)) {
if (reportNode == null) {
reportNode = addLimitSetReportNode(limitsReporter);

for (OperationalLimitsGroupInfos olgInfos : modificationInfos.getOperationalLimitsGroups()) {
ReportNode limitSetNode = reportNode.newReportNode()
.withMessageTemplate("network.modification.limitSetAdded")
.withUntypedValue("name", olgInfos.getId())
.withSeverity(TypedValue.INFO_SEVERITY)
.add();

if (olgInfos.getApplicability() == Applicability.SIDE1 || olgInfos.getApplicability() == Applicability.EQUIPMENT) {
ModificationUtils.getInstance().setCurrentLimitsOnASide(limitSetNode, olgInfos, line, ONE);
}
if (olgInfos.getApplicability() == Applicability.SIDE2 || olgInfos.getApplicability() == Applicability.EQUIPMENT) {
ModificationUtils.getInstance().setCurrentLimitsOnASide(limitSetNode, olgInfos, line, TWO);
}
}
ModificationUtils.getInstance().setCurrentLimitsOnASide(reportNode, opLimitsGroupSide2, line, TWO);
}

List<ReportNode> limitSetsOnSideReportNodes = new ArrayList<>();
if (modificationInfos.getSelectedOperationalLimitsGroup1() != null) {
if (!ModificationUtils.hasLimitSet(opLimitsGroupSide1, modificationInfos.getSelectedOperationalLimitsGroup1())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
import java.util.List;
import java.util.Optional;

import static com.powsybl.iidm.network.TwoSides.ONE;
import static com.powsybl.iidm.network.TwoSides.TWO;
import static org.gridsuite.modification.NetworkModificationException.Type.*;
import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE1;
import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.SIDE2;
Expand Down Expand Up @@ -239,39 +241,7 @@
completeTwoWindingsTransformerCreation(network, twoWindingsTransformer, modificationInfos, subReportNode);
}

private void setCurrentLimitsForSide(ReportNode reportNode, List<OperationalLimitsGroupInfos> operationalLimitsGroups, String selectedGroup, TwoWindingsTransformer transformer, TwoSides side,
List<ReportNode> limitSetsOnSideReportNodes) {
if (!CollectionUtils.isEmpty(operationalLimitsGroups)) {
getInstance().setCurrentLimitsOnASide(reportNode, operationalLimitsGroups, transformer, side);
}
if (selectedGroup != null) {
if (!ModificationUtils.hasLimitSet(operationalLimitsGroups, selectedGroup)) {
limitSetsOnSideReportNodes.add(ReportNode.newRootReportNode()
.withMessageTemplate("network.modification.limitSetAbsentOnSide" + side.getNum())
.withUntypedValue("selectedOperationalLimitsGroup", selectedGroup)
.withSeverity(TypedValue.WARN_SEVERITY)
.build());
return;
}

if (side == TwoSides.ONE) {
transformer.setSelectedOperationalLimitsGroup1(selectedGroup);
limitSetsOnSideReportNodes.add(ReportNode.newRootReportNode().withMessageTemplate("network.modification.limitSetSelectedOnSide1")
.withUntypedValue("selectedOperationalLimitsGroup1", modificationInfos.getSelectedOperationalLimitsGroup1())
.withSeverity(TypedValue.INFO_SEVERITY)
.build());
}
if (side == TwoSides.TWO) {
transformer.setSelectedOperationalLimitsGroup2(selectedGroup);
limitSetsOnSideReportNodes.add(ReportNode.newRootReportNode().withMessageTemplate("network.modification.limitSetSelectedOnSide2")
.withUntypedValue("selectedOperationalLimitsGroup2", modificationInfos.getSelectedOperationalLimitsGroup2())
.withSeverity(TypedValue.INFO_SEVERITY)
.build());
}
}
}

private void completeTwoWindingsTransformerCreation(Network network,

Check failure on line 244 in src/main/java/org/gridsuite/modification/modifications/TwoWindingsTransformerCreation.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Refactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.

See more on https://sonarcloud.io/project/issues?id=org.gridsuite%3Anetwork-modification&issues=AZrAJ9oqejz3cHMJ-AVd&open=AZrAJ9oqejz3cHMJ-AVd&pullRequest=124
TwoWindingsTransformer twoWindingsTransformer,
TwoWindingsTransformerCreationInfos modificationInfos,
ReportNode subReportNode) {
Expand All @@ -290,12 +260,61 @@
List<OperationalLimitsGroupInfos> operationalLimitsGroups2 = ModificationUtils.getOperationalLimitsGroupsOnSide(modificationInfos.getOperationalLimitsGroups(), SIDE2);

List<ReportNode> limitSetsOnSideReportNodes = new ArrayList<>();
ReportNode reportNode = limitsReporter.newReportNode()
.withSeverity(TypedValue.INFO_SEVERITY)
.withMessageTemplate("network.modification.LimitSets")
.add();
setCurrentLimitsForSide(reportNode, operationalLimitsGroups1, modificationInfos.getSelectedOperationalLimitsGroup1(), twoWindingsTransformer, TwoSides.ONE, limitSetsOnSideReportNodes);
setCurrentLimitsForSide(reportNode, operationalLimitsGroups2, modificationInfos.getSelectedOperationalLimitsGroup2(), twoWindingsTransformer, TwoSides.TWO, limitSetsOnSideReportNodes);
if (!CollectionUtils.isEmpty(modificationInfos.getOperationalLimitsGroups())) {
ReportNode reportNode = limitsReporter.newReportNode()
.withSeverity(TypedValue.INFO_SEVERITY)
.withMessageTemplate("network.modification.LimitSets")
.add();

for (OperationalLimitsGroupInfos olgInfos : modificationInfos.getOperationalLimitsGroups()) {
ReportNode limitSetNode = reportNode.newReportNode()
.withMessageTemplate("network.modification.limitSetAdded")
.withUntypedValue("name", olgInfos.getId())
.withSeverity(TypedValue.INFO_SEVERITY)
.add();

if (olgInfos.getApplicability() == OperationalLimitsGroupInfos.Applicability.SIDE1 || olgInfos.getApplicability() == OperationalLimitsGroupInfos.Applicability.EQUIPMENT) {
ModificationUtils.getInstance().setCurrentLimitsOnASide(limitSetNode, olgInfos, twoWindingsTransformer, ONE);
}
if (olgInfos.getApplicability() == OperationalLimitsGroupInfos.Applicability.SIDE2 || olgInfos.getApplicability() == OperationalLimitsGroupInfos.Applicability.EQUIPMENT) {
ModificationUtils.getInstance().setCurrentLimitsOnASide(limitSetNode, olgInfos, twoWindingsTransformer, TWO);
}
}
}

if (modificationInfos.getSelectedOperationalLimitsGroup1() != null) {
if (!ModificationUtils.hasLimitSet(operationalLimitsGroups1, modificationInfos.getSelectedOperationalLimitsGroup1())) {
limitSetsOnSideReportNodes.add(ReportNode.newRootReportNode()
.withMessageTemplate("network.modification.limitSetAbsentOnSide1")
.withUntypedValue("selectedOperationalLimitsGroup", modificationInfos.getSelectedOperationalLimitsGroup1())
.withSeverity(TypedValue.WARN_SEVERITY)
.build());
} else {
twoWindingsTransformer.setSelectedOperationalLimitsGroup1(modificationInfos.getSelectedOperationalLimitsGroup1());
limitSetsOnSideReportNodes.add(ReportNode.newRootReportNode()
.withMessageTemplate("network.modification.limitSetSelectedOnSide1")
.withUntypedValue("selectedOperationalLimitsGroup1", modificationInfos.getSelectedOperationalLimitsGroup1())
.withSeverity(TypedValue.INFO_SEVERITY)
.build());
}
}
if (modificationInfos.getSelectedOperationalLimitsGroup2() != null) {
if (!ModificationUtils.hasLimitSet(operationalLimitsGroups2, modificationInfos.getSelectedOperationalLimitsGroup2())) {
limitSetsOnSideReportNodes.add(ReportNode.newRootReportNode()
.withMessageTemplate("network.modification.limitSetAbsentOnSide2")
.withUntypedValue("selectedOperationalLimitsGroup", modificationInfos.getSelectedOperationalLimitsGroup2())
.withSeverity(TypedValue.WARN_SEVERITY)
.build());
} else {
twoWindingsTransformer.setSelectedOperationalLimitsGroup2(modificationInfos.getSelectedOperationalLimitsGroup2());
limitSetsOnSideReportNodes.add(ReportNode.newRootReportNode()
.withMessageTemplate("network.modification.limitSetSelectedOnSide2")
.withUntypedValue("selectedOperationalLimitsGroup2", modificationInfos.getSelectedOperationalLimitsGroup2())
.withSeverity(TypedValue.INFO_SEVERITY)
.build());
}
}

if (!limitSetsOnSideReportNodes.isEmpty()) {
ModificationUtils.getInstance().reportModifications(limitsReporter, limitSetsOnSideReportNodes,
"network.modification.ActiveLimitSets");
Expand Down
Loading