From d153b1662b9675c173288c6be9f56a339d49c982 Mon Sep 17 00:00:00 2001 From: Etienne LESOT Date: Mon, 9 Feb 2026 08:32:39 +0100 Subject: [PATCH 1/3] change log level to warning for formula modification Signed-off-by: Etienne LESOT --- .../modifications/byfilter/ByFormulaModification.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java b/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java index 57ed5b5b..7bbca3a1 100644 --- a/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java @@ -89,7 +89,7 @@ private boolean reportErrorOnEquipment(Identifiable equipment, List n .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate(reportKey) .withUntypedValue(VALUE_KEY_EQUIPMENT_NAME, equipment.getId()) - .withSeverity(TypedValue.DETAIL_SEVERITY) + .withSeverity(TypedValue.WARN_SEVERITY) .build()); return false; } From 8e813b4d2955eb8c13b0ecf6e5e6e1f2f927b520 Mon Sep 17 00:00:00 2001 From: Etienne LESOT Date: Tue, 10 Feb 2026 08:17:36 +0100 Subject: [PATCH 2/3] fix Signed-off-by: Etienne LESOT --- .../byfilter/AbstractModificationByAssignment.java | 3 +-- .../byfilter/ByFormulaModification.java | 13 +++++-------- .../org/gridsuite/modification/reports.properties | 3 +-- .../VoltageLevelByFormulaModificationTest.java | 2 +- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java b/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java index 3d4013cb..dcc9d567 100644 --- a/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java +++ b/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java @@ -56,8 +56,7 @@ public abstract class AbstractModificationByAssignment extends AbstractModificat public static final String VALUE_KEY_ARROW_NAME = "arrow"; public static final String VALUE_KEY_ARROW_VALUE = "→"; public static final String REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_ZERO = "network.modification.equipmentModifiedError.zero"; - public static final String REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_EMPTY = "network.modification.equipmentModifiedError.empty"; - public static final String REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_NAN = "network.modification.equipmentModifiedError.nan"; + public static final String REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_MISSING = "network.modification.equipmentModifiedError.missing"; public static final String REPORT_KEY_BY_FILTER_MODIFICATION_SOME = "network.modification.byFilterModificationSome"; public static final String REPORT_KEY_BY_FILTER_MODIFICATION_FAILED = "network.modification.byFilterModificationFailed"; public static final String REPORT_KEY_BY_FILTER_MODIFICATION_SUCCESS = "network.modification.byFilterModificationSuccess"; diff --git a/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java b/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java index 7bbca3a1..e9a64934 100644 --- a/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java @@ -68,28 +68,25 @@ protected boolean preCheckValue(Identifiable equipment, AbstractAssignmentInf FormulaInfos formulaInfos = (FormulaInfos) abstractAssignmentInfos; Double value1 = formulaInfos.getFieldOrValue1().getRefOrValue(equipment); Double value2 = formulaInfos.getFieldOrValue2().getRefOrValue(equipment); - if (value1 == null || value2 == null) { - return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_EMPTY, reports); - } - + // value 1 and value 2 cannot be null because getRefOrValue returns NaN if value is null if (Double.isNaN(value1) || Double.isNaN(value2)) { - return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_NAN, reports); + return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_MISSING, TypedValue.WARN_SEVERITY, reports); } if (value2 == 0 && formulaInfos.getOperator() == Operator.DIVISION) { - return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_ZERO, reports); + return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_ZERO, TypedValue.WARN_SEVERITY, reports); } return true; } - private boolean reportErrorOnEquipment(Identifiable equipment, List notEditableEquipments, String reportKey, List reports) { + private boolean reportErrorOnEquipment(Identifiable equipment, List notEditableEquipments, String reportKey, TypedValue severity, List reports) { equipmentNotModifiedCount += 1; notEditableEquipments.add(equipment.getId()); reports.add(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate(reportKey) .withUntypedValue(VALUE_KEY_EQUIPMENT_NAME, equipment.getId()) - .withSeverity(TypedValue.WARN_SEVERITY) + .withSeverity(severity) .build()); return false; } diff --git a/src/main/resources/org/gridsuite/modification/reports.properties b/src/main/resources/org/gridsuite/modification/reports.properties index 845a8db5..fce38641 100644 --- a/src/main/resources/org/gridsuite/modification/reports.properties +++ b/src/main/resources/org/gridsuite/modification/reports.properties @@ -145,8 +145,7 @@ network.modification.equipmentDeletion = Equipment deletion ${equipmentId} network.modification.equipmentDisconnect = Equipment with id=${id} disconnected network.modification.equipmentDisconnect.side = Equipment with id=${id} disconnected on side ${side} network.modification.equipmentDisconnected = Equipment with id=${id} disconnected -network.modification.equipmentModifiedError.empty = Cannot modify equipment ${equipmentName} : At least one of the value or referenced field is empty -network.modification.equipmentModifiedError.nan = Cannot modify equipment ${equipmentName} : At least one of the value or referenced field is not a number +network.modification.equipmentModifiedError.missing = Cannot modify equipment ${equipmentName} : At least one of the value or referenced field is missing network.modification.equipmentModifiedError.zero = Cannot modify equipment ${equipmentName} : The value or referenced field of the second operand in the division operator is zero network.modification.equipmentModifiedReport = ${equipmentType} id : ${equipmentName}, ${fieldName} : ${oldValue} ${arrow} ${newValue} network.modification.equipmentModifiedReportException = Cannot modify equipment ${equipmentName} : ${errorMessage} diff --git a/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/VoltageLevelByFormulaModificationTest.java b/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/VoltageLevelByFormulaModificationTest.java index a69c7bee..6dbeb0d9 100644 --- a/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/VoltageLevelByFormulaModificationTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/VoltageLevelByFormulaModificationTest.java @@ -252,7 +252,7 @@ protected void assertAfterNetworkModificationApplication() { // check logs List allLogs = reportNode.getChildren().getFirst().getChildren().stream().flatMap(child -> child.getChildren().stream().map(ReportNode::getMessage)).toList(); - assertTrue(allLogs.contains("Cannot modify equipment v7 : At least one of the value or referenced field is not a number")); + assertTrue(allLogs.contains("Cannot modify equipment v7 : At least one of the value or referenced field is missing")); assertTrue(allLogs.contains("Cannot modify equipment v8 : The value or referenced field of the second operand in the division operator is zero")); } From 3f2169a6b44957538a4c8c3c65292b0c7f9fbad8 Mon Sep 17 00:00:00 2001 From: Etienne LESOT Date: Tue, 10 Feb 2026 08:18:47 +0100 Subject: [PATCH 3/3] fix Signed-off-by: Etienne LESOT --- .../modifications/byfilter/ByFormulaModification.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java b/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java index e9a64934..1a054a60 100644 --- a/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/byfilter/ByFormulaModification.java @@ -70,23 +70,23 @@ protected boolean preCheckValue(Identifiable equipment, AbstractAssignmentInf Double value2 = formulaInfos.getFieldOrValue2().getRefOrValue(equipment); // value 1 and value 2 cannot be null because getRefOrValue returns NaN if value is null if (Double.isNaN(value1) || Double.isNaN(value2)) { - return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_MISSING, TypedValue.WARN_SEVERITY, reports); + return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_MISSING, reports); } if (value2 == 0 && formulaInfos.getOperator() == Operator.DIVISION) { - return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_ZERO, TypedValue.WARN_SEVERITY, reports); + return reportErrorOnEquipment(equipment, notEditableEquipments, REPORT_KEY_EQUIPMENT_MODIFIED_ERROR_ZERO, reports); } return true; } - private boolean reportErrorOnEquipment(Identifiable equipment, List notEditableEquipments, String reportKey, TypedValue severity, List reports) { + private boolean reportErrorOnEquipment(Identifiable equipment, List notEditableEquipments, String reportKey, List reports) { equipmentNotModifiedCount += 1; notEditableEquipments.add(equipment.getId()); reports.add(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate(reportKey) .withUntypedValue(VALUE_KEY_EQUIPMENT_NAME, equipment.getId()) - .withSeverity(severity) + .withSeverity(TypedValue.WARN_SEVERITY) .build()); return false; }