From 400861f0b67bc2819230675577524273e190435f Mon Sep 17 00:00:00 2001 From: basseche Date: Thu, 19 Jun 2025 17:01:52 +0200 Subject: [PATCH 1/2] EquipmmentAttributeModification Ok Signed-off-by: basseche --- .../modification/ModificationType.java | 2 +- .../EquipmentAttributeModification.java | 8 ++++++-- .../modification/utils/ModificationUtils.java | 17 +++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/ModificationType.java b/src/main/java/org/gridsuite/modification/ModificationType.java index f080c560..ad524e8b 100644 --- a/src/main/java/org/gridsuite/modification/ModificationType.java +++ b/src/main/java/org/gridsuite/modification/ModificationType.java @@ -13,7 +13,7 @@ * @author Franck Lecuyer */ public enum ModificationType { - EQUIPMENT_ATTRIBUTE_MODIFICATION(PreloadingStrategy.NONE), + EQUIPMENT_ATTRIBUTE_MODIFICATION(PreloadingStrategy.COLLECTION), LOAD_CREATION(PreloadingStrategy.NONE), LOAD_MODIFICATION(PreloadingStrategy.NONE), BALANCES_ADJUSTMENT_MODIFICATION(PreloadingStrategy.ALL_COLLECTIONS_NEEDED_FOR_BUS_VIEW), diff --git a/src/main/java/org/gridsuite/modification/modifications/EquipmentAttributeModification.java b/src/main/java/org/gridsuite/modification/modifications/EquipmentAttributeModification.java index df14618c..934d1309 100644 --- a/src/main/java/org/gridsuite/modification/modifications/EquipmentAttributeModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/EquipmentAttributeModification.java @@ -13,6 +13,7 @@ import com.powsybl.iidm.network.extensions.OperatingStatusAdder; import org.gridsuite.modification.NetworkModificationException; import org.gridsuite.modification.dto.EquipmentAttributeModificationInfos; +import org.gridsuite.modification.utils.ModificationUtils; import static org.gridsuite.modification.NetworkModificationException.Type.EQUIPMENT_NOT_FOUND; import static org.gridsuite.modification.NetworkModificationException.Type.WRONG_EQUIPMENT_TYPE; @@ -42,8 +43,11 @@ public void check(Network network) throws NetworkModificationException { @Override public void apply(Network network, ReportNode subReportNode) { Identifiable identifiable = network.getIdentifiable(modificationInfos.getEquipmentId()); - if (identifiable instanceof Switch) { - changeSwitchAttribute((Switch) identifiable, modificationInfos.getEquipmentAttributeName(), modificationInfos.getEquipmentAttributeValue(), subReportNode); + if (identifiable instanceof Switch aSwitch) { + changeSwitchAttribute(aSwitch, modificationInfos.getEquipmentAttributeName(), modificationInfos.getEquipmentAttributeValue(), subReportNode); + if (!aSwitch.isOpen()) { + ModificationUtils.changeOperatingStatusBranches(network); + } } else if (identifiable instanceof Injection) { if (identifiable instanceof Generator) { changeGeneratorAttribute((Generator) identifiable, modificationInfos.getEquipmentAttributeName(), modificationInfos.getEquipmentAttributeValue(), subReportNode); diff --git a/src/main/java/org/gridsuite/modification/utils/ModificationUtils.java b/src/main/java/org/gridsuite/modification/utils/ModificationUtils.java index 01c6d14b..71af59b0 100644 --- a/src/main/java/org/gridsuite/modification/utils/ModificationUtils.java +++ b/src/main/java/org/gridsuite/modification/utils/ModificationUtils.java @@ -1798,5 +1798,22 @@ public static void checkIsInInterval(String errorMessage, Float valueToCheck, Pa throw new NetworkModificationException(exceptionType, errorMessage + "must have " + valueName + " " + interval.getFirst() + " and " + interval.getSecond()); } } + + public static void changeOperatingStatusBranches(Network network) { + List branches = network.getBranchStream().filter(branch -> branch.getExtension(OperatingStatus.class) != null).toList(); + for (Branch branchline : branches) { + System.out.println("Changing operating status branch " + branchline + " to " + OperatingStatus.class); + //code here + OperatingStatus operatingStatus = (OperatingStatus) branchline.getExtension(OperatingStatus.class); + if (operatingStatus.getStatus() != OperatingStatus.Status.IN_OPERATION) { + Bus bus1 = branchline.getTerminal1().getBusView().getBus(); + Bus bus2 = branchline.getTerminal2().getBusView().getBus(); + + if (bus1 != null && bus1.isInMainConnectedComponent() && bus2 != null && bus2.isInMainConnectedComponent()) { + operatingStatus.setStatus(OperatingStatus.Status.IN_OPERATION); + } + } + } + } } From 8ea26244a30df98c0a174dbd8c02e1b0dc0b2776 Mon Sep 17 00:00:00 2001 From: basseche Date: Fri, 20 Jun 2025 15:25:35 +0200 Subject: [PATCH 2/2] Branch modifications Ok Signed-off-by: basseche --- .../org/gridsuite/modification/ModificationType.java | 4 ++-- .../modifications/AbstractBranchModification.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/gridsuite/modification/ModificationType.java b/src/main/java/org/gridsuite/modification/ModificationType.java index ad524e8b..3dfc4d78 100644 --- a/src/main/java/org/gridsuite/modification/ModificationType.java +++ b/src/main/java/org/gridsuite/modification/ModificationType.java @@ -24,9 +24,9 @@ public enum ModificationType { EQUIPMENT_DELETION(PreloadingStrategy.NONE), BY_FILTER_DELETION(PreloadingStrategy.COLLECTION), LINE_CREATION(PreloadingStrategy.NONE), - LINE_MODIFICATION(PreloadingStrategy.NONE), + LINE_MODIFICATION(PreloadingStrategy.COLLECTION), TWO_WINDINGS_TRANSFORMER_CREATION(PreloadingStrategy.NONE), - TWO_WINDINGS_TRANSFORMER_MODIFICATION(PreloadingStrategy.NONE), + TWO_WINDINGS_TRANSFORMER_MODIFICATION(PreloadingStrategy.COLLECTION), GROOVY_SCRIPT(PreloadingStrategy.COLLECTION), SUBSTATION_CREATION(PreloadingStrategy.NONE), SUBSTATION_MODIFICATION(PreloadingStrategy.NONE), diff --git a/src/main/java/org/gridsuite/modification/modifications/AbstractBranchModification.java b/src/main/java/org/gridsuite/modification/modifications/AbstractBranchModification.java index a8c8530d..1b94aa01 100644 --- a/src/main/java/org/gridsuite/modification/modifications/AbstractBranchModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/AbstractBranchModification.java @@ -162,6 +162,12 @@ private Measurement getExistingMeasurement(Measurements measurements, Measure private void updateConnections(Branch branch, BranchModificationInfos branchModificationInfos) { List errorSides = new ArrayList<>(); List errorTypes = new ArrayList<>(); + + boolean terminalModifiedToConnected = branchModificationInfos.getTerminal1Connected() != null + && branchModificationInfos.getTerminal1Connected().getValue() + || branchModificationInfos.getTerminal2Connected() != null + && branchModificationInfos.getTerminal2Connected().getValue(); + if (branchModificationInfos.getTerminal1Connected() != null && !updateConnection(branch, TwoSides.ONE, modificationInfos.getTerminal1Connected().getValue())) { errorSides.add(TwoSides.ONE); errorTypes.add(Boolean.TRUE.equals(modificationInfos.getTerminal1Connected().getValue()) ? "connect" : "disconnect"); @@ -177,6 +183,10 @@ private void updateConnections(Branch branch, BranchModificationInfos branchM branch.getId(), errorSides.stream().map(Enum::toString).collect(Collectors.joining("/")))); } + + if (terminalModifiedToConnected) { + ModificationUtils.changeOperatingStatusBranches(branch.getNetwork()); + } } private boolean updateConnection(Branch branch, TwoSides side, Boolean connectionChange) {