diff --git a/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreation.java b/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreation.java index 5553f8425..617a80466 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreation.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorCreation.java @@ -34,6 +34,9 @@ public void check(Network network) throws NetworkModificationException { if (network.getShuntCompensator(modificationInfos.getEquipmentId()) != null) { throw new NetworkModificationException(SHUNT_COMPENSATOR_ALREADY_EXISTS, modificationInfos.getEquipmentId()); } + if (modificationInfos.getMaximumSectionCount() < 1 || modificationInfos.getSectionCount() < 1 || modificationInfos.getSectionCount() > modificationInfos.getMaximumSectionCount()) { + throw new NetworkModificationException(CREATE_SHUNT_COMPENSATOR_ERROR, modificationInfos.getEquipmentId()); + } ModificationUtils.getInstance().controlConnectivity(network, modificationInfos.getVoltageLevelId(), modificationInfos.getBusOrBusbarSectionId(), modificationInfos.getConnectionPosition()); } diff --git a/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModification.java b/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModification.java index d6526dfed..256b14a16 100644 --- a/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModification.java +++ b/src/main/java/org/gridsuite/modification/server/modifications/ShuntCompensatorModification.java @@ -22,8 +22,7 @@ import java.util.ArrayList; import java.util.List; -import static org.gridsuite.modification.server.NetworkModificationException.Type.SHUNT_COMPENSATOR_NOT_FOUND; -import static org.gridsuite.modification.server.NetworkModificationException.Type.VOLTAGE_LEVEL_NOT_FOUND; +import static org.gridsuite.modification.server.NetworkModificationException.Type.*; /** * @author Seddik Yengui @@ -51,6 +50,19 @@ public void check(Network network) throws NetworkModificationException { throw new NetworkModificationException(VOLTAGE_LEVEL_NOT_FOUND, String.format("Voltage level %s does not exist in network", modificationInfos.getVoltageLevelId())); } + + int maximumSectionCount = modificationInfos.getMaximumSectionCount() != null + ? modificationInfos.getMaximumSectionCount().getValue() + : shuntCompensator.getMaximumSectionCount(); + + int sectionCount = modificationInfos.getSectionCount() != null + ? modificationInfos.getSectionCount().getValue() + : shuntCompensator.getSectionCount(); + + if (sectionCount < 1 || maximumSectionCount < 1 || sectionCount > maximumSectionCount) { + throw new NetworkModificationException(MODIFY_SHUNT_COMPENSATOR_ERROR, modificationInfos.getEquipmentId()); + } + } @Override