From b3d4809ee1d6e7d10c3dbe59153f2581e15326a6 Mon Sep 17 00:00:00 2001 From: PHILIPOT Clement <68562809+cphili@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:50:54 +0100 Subject: [PATCH] #3204 - Use logOrThrow method (draft) --- .../action/PercentChangeLoadAction.java | 2 +- .../modification/AbstractDisconnection.java | 5 +- .../AbstractNetworkModification.java | 45 ++--- .../AbstractSetpointModification.java | 3 +- .../AreaInterchangeTargetModification.java | 3 +- .../modification/BatteryModification.java | 3 +- .../iidm/modification/CloseSwitch.java | 7 +- .../iidm/modification/ConnectGenerator.java | 14 +- .../modification/ConnectableConnection.java | 5 +- .../DanglingLineModification.java | 3 +- .../modification/GeneratorModification.java | 3 +- .../modification/HvdcLineModification.java | 3 +- .../LoadFlowBasedPhaseShifterOptimizer.java | 34 ++-- .../iidm/modification/LoadModification.java | 3 +- .../powsybl/iidm/modification/OpenSwitch.java | 7 +- .../PercentChangeLoadModification.java | 10 +- .../modification/PhaseShifterOptimizeTap.java | 2 +- .../modification/PhaseShifterOptimizer.java | 2 +- .../PhaseShifterSetAsFixedTap.java | 6 +- .../modification/PhaseShifterShiftTap.java | 6 +- ...ansformersByThreeWindingsTransformers.java | 9 +- ...ransformersBy3TwoWindingsTransformers.java | 3 +- .../SetGeneratorToLocalRegulation.java | 3 +- .../ShuntCompensatorModification.java | 3 +- .../ThreeWindingsTransformerModification.java | 3 +- .../AbstractTapPositionModification.java | 7 +- .../PhaseTapPositionModification.java | 7 +- .../RatioTapPositionModification.java | 8 +- .../AbstractCreateConnectableFeederBays.java | 19 +- .../AbstractLineConnectionModification.java | 4 +- .../topology/CreateCouplingDevice.java | 5 +- .../topology/CreateLineOnLine.java | 7 +- .../topology/CreateVoltageLevelTopology.java | 29 +--- .../topology/RemoveFeederBay.java | 12 +- .../modification/topology/RemoveHvdcLine.java | 6 +- .../topology/RemoveSubstation.java | 7 +- .../topology/RemoveVoltageLevel.java | 13 +- .../ReplaceTeePointByVoltageLevelOnLine.java | 163 ++++++++---------- .../RevertConnectVoltageLevelOnLine.java | 28 +-- .../topology/RevertCreateLineOnLine.java | 15 +- .../modification/util/ModificationLogs.java | 12 +- .../PercentChangeLoadModificationTest.java | 26 +-- 42 files changed, 248 insertions(+), 307 deletions(-) diff --git a/action-api/src/main/java/com/powsybl/action/PercentChangeLoadAction.java b/action-api/src/main/java/com/powsybl/action/PercentChangeLoadAction.java index b1bcb593bbc..72524c861f3 100644 --- a/action-api/src/main/java/com/powsybl/action/PercentChangeLoadAction.java +++ b/action-api/src/main/java/com/powsybl/action/PercentChangeLoadAction.java @@ -72,7 +72,7 @@ public NetworkModification toModification() { case CONSTANT_Q -> 0d; case CONSTANT_PQ_RATIO -> p0PercentChange; }; - return new PercentChangeLoadModification(loadId, p0PercentChange, q0PercentChange); + return new PercentChangeLoadModification(loadId, p0PercentChange, q0PercentChange, true); } @Override diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractDisconnection.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractDisconnection.java index f66b7f51e45..1429627c73d 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractDisconnection.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractDisconnection.java @@ -8,6 +8,7 @@ package com.powsybl.iidm.modification; import com.powsybl.commons.report.ReportNode; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,7 +48,7 @@ public void applyModification(Network network, boolean isPlanned, boolean throwE // Disconnect the identifiable if it exists if (identifiable == null) { - logOrThrow(throwException, "Identifiable '" + identifiableId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Identifiable '" + identifiableId + "' not found"); } else { disconnectIdentifiable(identifiable, network, isPlanned, throwException, reportNode); } @@ -78,7 +79,7 @@ private boolean disconnect(Identifiable identifiable, boolean throwException) } else if (identifiable instanceof HvdcLine hvdcLine) { hasBeenDisconnected = hvdcLine.disconnectConverterStations(openableSwitches, side == null ? null : side.toTwoSides()); } else { - logOrThrow(throwException, String.format("Disconnection not implemented for identifiable '%s'", identifiableId)); + ModificationLogs.logOrThrow(throwException, String.format("Disconnection not implemented for identifiable '%s'", identifiableId)); } return hasBeenDisconnected; } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractNetworkModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractNetworkModification.java index 4f4eb85766f..3a84fa09901 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractNetworkModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractNetworkModification.java @@ -33,42 +33,42 @@ public abstract class AbstractNetworkModification implements NetworkModification @Override public void apply(Network network) { - apply(network, new DefaultNamingStrategy(), false, LocalComputationManager.getDefault(), ReportNode.NO_OP); + apply(network, new DefaultNamingStrategy(), true, LocalComputationManager.getDefault(), ReportNode.NO_OP); } @Override public boolean apply(Network network, boolean dryRun) { - return apply(network, new DefaultNamingStrategy(), false, LocalComputationManager.getDefault(), ReportNode.NO_OP, dryRun); + return apply(network, new DefaultNamingStrategy(), true, LocalComputationManager.getDefault(), ReportNode.NO_OP, dryRun); } @Override public void apply(Network network, ComputationManager computationManager) { - apply(network, new DefaultNamingStrategy(), false, computationManager, ReportNode.NO_OP); + apply(network, new DefaultNamingStrategy(), true, computationManager, ReportNode.NO_OP); } @Override public boolean apply(Network network, ComputationManager computationManager, boolean dryRun) { - return apply(network, new DefaultNamingStrategy(), false, computationManager, ReportNode.NO_OP, dryRun); + return apply(network, new DefaultNamingStrategy(), true, computationManager, ReportNode.NO_OP, dryRun); } @Override public void apply(Network network, ComputationManager computationManager, ReportNode reportNode) { - apply(network, new DefaultNamingStrategy(), false, computationManager, reportNode); + apply(network, new DefaultNamingStrategy(), true, computationManager, reportNode); } @Override public boolean apply(Network network, ComputationManager computationManager, ReportNode reportNode, boolean dryRun) { - return apply(network, new DefaultNamingStrategy(), false, computationManager, reportNode, dryRun); + return apply(network, new DefaultNamingStrategy(), true, computationManager, reportNode, dryRun); } @Override public void apply(Network network, ReportNode reportNode) { - apply(network, new DefaultNamingStrategy(), false, LocalComputationManager.getDefault(), reportNode); + apply(network, new DefaultNamingStrategy(), true, LocalComputationManager.getDefault(), reportNode); } @Override public boolean apply(Network network, ReportNode reportNode, boolean dryRun) { - return apply(network, new DefaultNamingStrategy(), false, LocalComputationManager.getDefault(), reportNode, dryRun); + return apply(network, new DefaultNamingStrategy(), true, LocalComputationManager.getDefault(), reportNode, dryRun); } @Override @@ -93,42 +93,42 @@ public boolean apply(Network network, boolean throwException, ComputationManager @Override public void apply(Network network, NamingStrategy namingStrategy) { - apply(network, namingStrategy, false, LocalComputationManager.getDefault(), ReportNode.NO_OP); + apply(network, namingStrategy, true, LocalComputationManager.getDefault(), ReportNode.NO_OP); } @Override public boolean apply(Network network, NamingStrategy namingStrategy, boolean dryRun) { - return apply(network, namingStrategy, false, LocalComputationManager.getDefault(), ReportNode.NO_OP, dryRun); + return apply(network, namingStrategy, true, LocalComputationManager.getDefault(), ReportNode.NO_OP, dryRun); } @Override public void apply(Network network, NamingStrategy namingStrategy, ComputationManager computationManager) { - apply(network, namingStrategy, false, computationManager, ReportNode.NO_OP); + apply(network, namingStrategy, true, computationManager, ReportNode.NO_OP); } @Override public boolean apply(Network network, NamingStrategy namingStrategy, ComputationManager computationManager, boolean dryRun) { - return apply(network, namingStrategy, false, computationManager, ReportNode.NO_OP, dryRun); + return apply(network, namingStrategy, true, computationManager, ReportNode.NO_OP, dryRun); } @Override public void apply(Network network, NamingStrategy namingStrategy, ComputationManager computationManager, ReportNode reportNode) { - apply(network, namingStrategy, false, computationManager, reportNode); + apply(network, namingStrategy, true, computationManager, reportNode); } @Override public boolean apply(Network network, NamingStrategy namingStrategy, ComputationManager computationManager, ReportNode reportNode, boolean dryRun) { - return apply(network, namingStrategy, false, computationManager, reportNode, dryRun); + return apply(network, namingStrategy, true, computationManager, reportNode, dryRun); } @Override public void apply(Network network, NamingStrategy namingStrategy, ReportNode reportNode) { - apply(network, namingStrategy, false, LocalComputationManager.getDefault(), reportNode); + apply(network, namingStrategy, true, LocalComputationManager.getDefault(), reportNode); } @Override public boolean apply(Network network, NamingStrategy namingStrategy, ReportNode reportNode, boolean dryRun) { - return apply(network, namingStrategy, false, LocalComputationManager.getDefault(), reportNode, dryRun); + return apply(network, namingStrategy, true, LocalComputationManager.getDefault(), reportNode, dryRun); } @Override @@ -165,19 +165,6 @@ public boolean apply(Network network, NamingStrategy namingStrategy, boolean thr return true; } - /** - * Utility during apply functions, logs or throw the message. - * - * @param throwException if true will throw {@link com.powsybl.commons.PowsyblException} with the given message - */ - protected void logOrThrow(boolean throwException, String message) { - if (throwException) { - throw new PowsyblException(message); - } else { - LOGGER.warn("Error while applying modification : {}", message); - } - } - /** * Returns the name of the network modification. That name corresponds to the type of network modification * @return the name of the network modification diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractSetpointModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractSetpointModification.java index f883161537b..b46608a4ea6 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractSetpointModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AbstractSetpointModification.java @@ -13,6 +13,7 @@ import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.StaticVarCompensator; import com.powsybl.iidm.network.VscConverterStation; +import com.powsybl.iidm.modification.util.ModificationLogs; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +50,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE T networkElement = getNetworkElement(network, elementId); if (networkElement == null) { - logOrThrow(throwException, getElementName() + " '" + elementId + "' not found"); + ModificationLogs.logOrThrow(throwException, getElementName() + " '" + elementId + "' not found"); return; } if (voltageSetpoint != null) { diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AreaInterchangeTargetModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AreaInterchangeTargetModification.java index 0235d649555..60bcc2dc7e7 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AreaInterchangeTargetModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/AreaInterchangeTargetModification.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Area; import com.powsybl.iidm.network.Network; @@ -40,7 +41,7 @@ public String getName() { public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { Area area = network.getArea(areaId); if (area == null) { - logOrThrow(throwException, "Area '" + areaId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Area '" + areaId + "' not found"); return; } area.setInterchangeTarget(interchangeTarget); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/BatteryModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/BatteryModification.java index 44da2520717..3bfa81f9186 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/BatteryModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/BatteryModification.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Battery; import com.powsybl.iidm.network.Network; @@ -42,7 +43,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ReportNode reportNode) { Battery battery = network.getBattery(batteryId); if (battery == null) { - logOrThrow(throwException, "Battery '" + batteryId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Battery '" + batteryId + "' not found"); return; } if (targetP != null) { diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/CloseSwitch.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/CloseSwitch.java index 403f7c4662c..1ec3b6ea9f5 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/CloseSwitch.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/CloseSwitch.java @@ -7,10 +7,10 @@ */ package com.powsybl.iidm.modification; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.Switch; @@ -36,9 +36,10 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ComputationManager computationManager, ReportNode reportNode) { Switch sw = network.getSwitch(switchId); if (sw == null) { - throw new PowsyblException("Switch '" + switchId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Switch '" + switchId + "' not found"); + } else { + sw.setOpen(false); } - sw.setOpen(false); } @Override diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectGenerator.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectGenerator.java index 0cd6e5e3738..02297a1c30a 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectGenerator.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectGenerator.java @@ -7,12 +7,15 @@ */ package com.powsybl.iidm.modification; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.modification.util.VoltageRegulationUtils; -import com.powsybl.iidm.network.*; +import com.powsybl.iidm.network.Generator; +import com.powsybl.iidm.network.IdentifiableType; +import com.powsybl.iidm.network.Network; +import com.powsybl.iidm.network.Terminal; import java.util.Objects; @@ -36,11 +39,12 @@ public String getName() { public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { Generator g = network.getGenerator(generatorId); + if (g == null) { - throw new PowsyblException("Generator '" + generatorId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Generator '" + generatorId + "' not found"); + } else { + connect(g); } - - connect(g); } @Override diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectableConnection.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectableConnection.java index c84d57c7313..1a3e6396e36 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectableConnection.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ConnectableConnection.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.util.SwitchPredicates; import org.slf4j.Logger; @@ -72,7 +73,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE // Connect the element if it exists if (identifiable == null) { - logOrThrow(throwException, "Identifiable '" + identifiableId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Identifiable '" + identifiableId + "' not found"); } else { connectIdentifiable(identifiable, network, throwException, reportNode); } @@ -88,7 +89,7 @@ private void connectIdentifiable(Identifiable identifiable, Network network, } else if (identifiable instanceof HvdcLine hvdcLine) { hasBeenConnected = hvdcLine.connectConverterStations(isTypeSwitchToOperate, side == null ? null : side.toTwoSides()); } else { - logOrThrow(throwException, String.format("Connection not implemented for identifiable '%s'", identifiableId)); + ModificationLogs.logOrThrow(throwException, String.format("Connection not implemented for identifiable '%s'", identifiableId)); } } finally { network.getReportNodeContext().popReportNode(); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/DanglingLineModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/DanglingLineModification.java index 06c4604e3b2..fd4b3521fca 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/DanglingLineModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/DanglingLineModification.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.DanglingLine; import com.powsybl.iidm.network.Network; @@ -53,7 +54,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ReportNode reportNode) { DanglingLine danglingLine = network.getDanglingLine(getDanglingLineId()); if (danglingLine == null) { - logOrThrow(throwException, "DanglingLine '" + getDanglingLineId() + "' not found"); + ModificationLogs.logOrThrow(throwException, "DanglingLine '" + getDanglingLineId() + "' not found"); return; } getP0().ifPresent(value -> danglingLine.setP0((isRelativeValue() ? danglingLine.getP0() : 0) + value)); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/GeneratorModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/GeneratorModification.java index e57fb6bcdda..a5c3b78d1ba 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/GeneratorModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/GeneratorModification.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.modification.util.VoltageRegulationUtils; import com.powsybl.iidm.network.Generator; import com.powsybl.iidm.network.IdentifiableType; @@ -40,7 +41,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ComputationManager computationManager, ReportNode reportNode) { Generator g = network.getGenerator(generatorId); if (g == null) { - logOrThrow(throwException, "Generator '" + generatorId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Generator '" + generatorId + "' not found"); return; } if (modifs.getMinP() != null) { diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/HvdcLineModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/HvdcLineModification.java index 1e7150b1fb2..d4f72ce171c 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/HvdcLineModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/HvdcLineModification.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.HvdcLine; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.extensions.HvdcAngleDroopActivePowerControl; @@ -54,7 +55,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ReportNode reportNode) { HvdcLine hvdcLine = network.getHvdcLine(hvdcId); if (hvdcLine == null) { - logOrThrow(throwException, "HvdcLine '" + hvdcId + "' not found"); + ModificationLogs.logOrThrow(throwException, "HvdcLine '" + hvdcId + "' not found"); return; } if (activePowerSetpoint != null) { diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadFlowBasedPhaseShifterOptimizer.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadFlowBasedPhaseShifterOptimizer.java index ba5a0020426..a82f2b5a823 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadFlowBasedPhaseShifterOptimizer.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadFlowBasedPhaseShifterOptimizer.java @@ -8,6 +8,7 @@ package com.powsybl.iidm.modification; import com.powsybl.commons.PowsyblException; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.network.LoadingLimits; import com.powsybl.iidm.network.Network; @@ -41,16 +42,13 @@ public LoadFlowBasedPhaseShifterOptimizer(ComputationManager computationManager) this(computationManager, LoadFlowBasedPhaseShifterOptimizerConfig.load()); } - private void runLoadFlow(Network network, String workingStateId) { - try { - String loadFlowName = config.getLoadFlowName().orElse(null); - LoadFlowResult result = LoadFlow.find(loadFlowName) - .run(network, workingStateId, computationManager, LoadFlowParameters.load()); - if (!result.isOk()) { - throw new PowsyblException("Load flow diverged during phase shifter optimization"); - } - } catch (Exception e) { - throw new PowsyblException(e); + private void runLoadFlow(Network network, String workingStateId, boolean throwException) { + + String loadFlowName = config.getLoadFlowName().orElse(null); + LoadFlowResult result = LoadFlow.find(loadFlowName) + .run(network, workingStateId, computationManager, LoadFlowParameters.load()); + if (!result.isOk()) { + ModificationLogs.logOrThrow(throwException, "Load flow diverged during phase shifter optimization"); } } @@ -63,13 +61,14 @@ private static double getLimit(TwoWindingsTransformer phaseShifter) { } @Override - public void findMaximalFlowTap(Network network, String phaseShifterId) { + public void findMaximalFlowTap(Network network, String phaseShifterId, boolean throwException) { + TwoWindingsTransformer phaseShifter = network.getTwoWindingsTransformer(phaseShifterId); if (phaseShifter == null) { - throw new PowsyblException("Phase shifter '" + phaseShifterId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Phase shifter '" + phaseShifterId + "' not found"); } if (!phaseShifter.hasPhaseTapChanger()) { - throw new PowsyblException("Transformer '" + phaseShifterId + "' is not a phase shifter"); + ModificationLogs.logOrThrow(throwException, "Transformer '" + phaseShifterId + "' is not a phase shifter"); } int optimalTap; @@ -78,11 +77,12 @@ public void findMaximalFlowTap(Network network, String phaseShifterId) { String stateId = network.getVariantManager().getWorkingVariantId(); String tmpStateId = "phase-shifter-optim-" + UUID.randomUUID(); network.getVariantManager().cloneVariant(stateId, tmpStateId); + try { network.getVariantManager().setWorkingVariant(tmpStateId); - runLoadFlow(network, tmpStateId); + runLoadFlow(network, tmpStateId, throwException); if (phaseShifter.getTerminal1().getI() >= phaseShifter.getCurrentLimits1().map(LoadingLimits::getPermanentLimit).orElseThrow(PowsyblException::new)) { - throw new PowsyblException("Phase shifter already overloaded"); + ModificationLogs.logOrThrow(throwException, "Phase shifter already overloaded"); } int tapPosInc = 1; // start by incrementing tap +1 double i; @@ -97,7 +97,7 @@ public void findMaximalFlowTap(Network network, String phaseShifterId) { phaseShifter.getPhaseTapChanger().setTapPosition(tapPos); // run load flow - runLoadFlow(network, tmpStateId); + runLoadFlow(network, tmpStateId, throwException); // wrong direction, negate the increment if (getI(phaseShifter) < i) { @@ -115,7 +115,7 @@ public void findMaximalFlowTap(Network network, String phaseShifterId) { phaseShifter.getPhaseTapChanger().setTapPosition(optimalTap); // just to be sure, check that with the previous tap, phase shifter is not overloaded... - runLoadFlow(network, tmpStateId); + runLoadFlow(network, tmpStateId, throwException); // check there phase shifter is not overloaded if (getI(phaseShifter) >= limit) { throw new IllegalStateException("Phase shifter should not be overload"); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadModification.java index 61026123d60..7eca88f7b52 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/LoadModification.java @@ -9,6 +9,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.modification.topology.NamingStrategy; import com.powsybl.iidm.network.Load; import com.powsybl.iidm.network.Network; @@ -53,7 +54,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ReportNode reportNode) { Load load = network.getLoad(getLoadId()); if (load == null) { - logOrThrow(throwException, "Load '" + getLoadId() + "' not found"); + ModificationLogs.logOrThrow(throwException, "Load '" + getLoadId() + "' not found"); return; } getP0().ifPresent(value -> load.setP0((isRelativeValue() ? load.getP0() : 0) + value)); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/OpenSwitch.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/OpenSwitch.java index b7add3b3ed5..3e959b12c83 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/OpenSwitch.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/OpenSwitch.java @@ -7,10 +7,10 @@ */ package com.powsybl.iidm.modification; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.Switch; @@ -37,9 +37,10 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ComputationManager computationManager, ReportNode reportNode) { Switch sw = network.getSwitch(switchId); if (sw == null) { - throw new PowsyblException("Switch '" + switchId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Switch '" + switchId + "' not found"); + } else { + sw.setOpen(true); } - sw.setOpen(true); } @Override diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PercentChangeLoadModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PercentChangeLoadModification.java index 45cca3bf4c7..73ce418aa31 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PercentChangeLoadModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PercentChangeLoadModification.java @@ -7,10 +7,10 @@ */ package com.powsybl.iidm.modification; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Load; import com.powsybl.iidm.network.Network; @@ -27,13 +27,13 @@ public class PercentChangeLoadModification extends AbstractNetworkModification { private double q0PercentChange; private double p0PercentChange; - public PercentChangeLoadModification(String loadId, double p0PercentChange, double q0PercentChange) { + public PercentChangeLoadModification(String loadId, double p0PercentChange, double q0PercentChange, boolean throwException) { this.loadId = Objects.requireNonNull(loadId); if (p0PercentChange < -100) { - throw new PowsyblException("The active power of " + loadId + " cannot decrease by more than 100% (current value: " + p0PercentChange + ")"); + ModificationLogs.logOrThrow(throwException, "The active power of " + loadId + " cannot decrease by more than 100% (current value: " + p0PercentChange + ")"); } if (q0PercentChange < -100) { - throw new PowsyblException("The reactive power of " + loadId + " cannot decrease by more than 100% (current value: " + q0PercentChange + ")"); + ModificationLogs.logOrThrow(throwException, "The reactive power of " + loadId + " cannot decrease by more than 100% (current value: " + q0PercentChange + ")"); } this.p0PercentChange = p0PercentChange; this.q0PercentChange = q0PercentChange; @@ -48,7 +48,7 @@ public String getName() { public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { Load load = network.getLoad(loadId); if (load == null) { - logOrThrow(throwException, "Load '" + loadId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Load '" + loadId + "' not found"); } else { double p0 = load.getP0(); load.setP0(p0 + (p0 * p0PercentChange / 100)); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizeTap.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizeTap.java index 381bffdf1bd..898b730cb31 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizeTap.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizeTap.java @@ -34,6 +34,6 @@ public String getName() { public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { new LoadFlowBasedPhaseShifterOptimizer(computationManager) - .findMaximalFlowTap(network, phaseShifterId); + .findMaximalFlowTap(network, phaseShifterId, throwException); } } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizer.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizer.java index 8fa934e2c67..0545c095145 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizer.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterOptimizer.java @@ -14,6 +14,6 @@ */ public interface PhaseShifterOptimizer { - void findMaximalFlowTap(Network network, String phaseShifterId); + void findMaximalFlowTap(Network network, String phaseShifterId, boolean throwException); } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterSetAsFixedTap.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterSetAsFixedTap.java index 16e990d34ec..7cf6e9e0462 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterSetAsFixedTap.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterSetAsFixedTap.java @@ -7,10 +7,10 @@ */ package com.powsybl.iidm.modification; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.PhaseTapChanger; import com.powsybl.iidm.network.TwoWindingsTransformer; @@ -38,10 +38,10 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE Objects.requireNonNull(network); TwoWindingsTransformer phaseShifter = network.getTwoWindingsTransformer(phaseShifterId); if (phaseShifter == null) { - throw new PowsyblException("Transformer '" + phaseShifterId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Transformer '" + phaseShifterId + "' not found"); } if (!phaseShifter.hasPhaseTapChanger()) { - throw new PowsyblException("Transformer '" + phaseShifterId + "' is not a phase shifter"); + ModificationLogs.logOrThrow(throwException, "Transformer '" + phaseShifterId + "' is not a phase shifter"); } phaseShifter.getPhaseTapChanger().setTapPosition(tapPosition); phaseShifter.getPhaseTapChanger().setRegulating(false); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterShiftTap.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterShiftTap.java index 0a4c893fd9c..0636b0293b1 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterShiftTap.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/PhaseShifterShiftTap.java @@ -7,10 +7,10 @@ */ package com.powsybl.iidm.modification; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.PhaseTapChanger; import com.powsybl.iidm.network.TwoWindingsTransformer; @@ -45,11 +45,11 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE Objects.requireNonNull(network); TwoWindingsTransformer phaseShifter = network.getTwoWindingsTransformer(phaseShifterId); if (phaseShifter == null) { - throw new PowsyblException("Transformer '" + phaseShifterId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Transformer '" + phaseShifterId + "' not found"); } PhaseTapChanger phaseTapChanger = phaseShifter.getPhaseTapChanger(); if (phaseTapChanger == null) { - throw new PowsyblException("Transformer '" + phaseShifterId + "' is not a phase shifter"); + ModificationLogs.logOrThrow(throwException, "Transformer '" + phaseShifterId + "' is not a phase shifter"); } adjustTapPosition(phaseTapChanger); phaseTapChanger.setRegulating(false); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/Replace3TwoWindingsTransformersByThreeWindingsTransformers.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/Replace3TwoWindingsTransformersByThreeWindingsTransformers.java index fac031bcd59..0478b155134 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/Replace3TwoWindingsTransformersByThreeWindingsTransformers.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/Replace3TwoWindingsTransformersByThreeWindingsTransformers.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.modification.util.RegulatedTerminalControllers; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.*; @@ -256,7 +257,7 @@ private static void setLegData(ThreeWindingsTransformer.Leg leg, TwoWindingsTran private Substation findSubstation(TwoR twoR, boolean throwException) { Optional substation = twoR.t2w1.getSubstation(); if (substation.isEmpty()) { - logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w1.getId() + "' without substation"); + ModificationLogs.logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w1.getId() + "' without substation"); return null; } else { return substation.get(); @@ -265,15 +266,15 @@ private Substation findSubstation(TwoR twoR, boolean throwException) { private boolean anyTwoWindingsTransformerStarTerminalDefinedAsRegulatedTerminal(TwoR twoR, RegulatedTerminalControllers regulatedTerminalControllers, boolean throwException) { if (regulatedTerminalControllers.usedAsRegulatedTerminal(getTerminal2(twoR.t2w1, isWellOriented(twoR.starBus, twoR.t2w1)))) { - logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w1.getId() + "' " + WITH_FICTITIOUS_TERMINAL_USED_AS_REGULATED_TERMINAL); + ModificationLogs.logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w1.getId() + "' " + WITH_FICTITIOUS_TERMINAL_USED_AS_REGULATED_TERMINAL); return true; } if (regulatedTerminalControllers.usedAsRegulatedTerminal(getTerminal2(twoR.t2w2, isWellOriented(twoR.starBus, twoR.t2w2)))) { - logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w2.getId() + "' " + WITH_FICTITIOUS_TERMINAL_USED_AS_REGULATED_TERMINAL); + ModificationLogs.logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w2.getId() + "' " + WITH_FICTITIOUS_TERMINAL_USED_AS_REGULATED_TERMINAL); return true; } if (regulatedTerminalControllers.usedAsRegulatedTerminal(getTerminal2(twoR.t2w3, isWellOriented(twoR.starBus, twoR.t2w3)))) { - logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w3.getId() + "' " + WITH_FICTITIOUS_TERMINAL_USED_AS_REGULATED_TERMINAL); + ModificationLogs.logOrThrow(throwException, TWO_WINDINGS_TRANSFORMER + "'" + twoR.t2w3.getId() + "' " + WITH_FICTITIOUS_TERMINAL_USED_AS_REGULATED_TERMINAL); return true; } return false; diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceThreeWindingsTransformersBy3TwoWindingsTransformers.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceThreeWindingsTransformersBy3TwoWindingsTransformers.java index 7f65aea0f12..ae07bfae149 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceThreeWindingsTransformersBy3TwoWindingsTransformers.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ReplaceThreeWindingsTransformersBy3TwoWindingsTransformers.java @@ -11,6 +11,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.modification.util.RegulatedTerminalControllers; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.*; @@ -158,7 +159,7 @@ private void replaceThreeWindingsTransformerBy3TwoWindingsTransformer(ThreeWindi private VoltageLevel createStarVoltageLevel(ThreeWindingsTransformer t3w, boolean throwException) { Optional substation = t3w.getSubstation(); if (substation.isEmpty()) { - logOrThrow(throwException, THREE_WINDINGS_TRANSFORMER + "'" + t3w.getId() + "' without substation"); + ModificationLogs.logOrThrow(throwException, THREE_WINDINGS_TRANSFORMER + "'" + t3w.getId() + "' without substation"); return null; } TopologyKind topologykind = t3w.getLeg1().getTerminal().getVoltageLevel().getTopologyKind() == TopologyKind.BUS_BREAKER diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/SetGeneratorToLocalRegulation.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/SetGeneratorToLocalRegulation.java index c8849c26e25..2da51cb29cd 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/SetGeneratorToLocalRegulation.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/SetGeneratorToLocalRegulation.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Generator; import com.powsybl.iidm.network.Network; import org.slf4j.Logger; @@ -46,7 +47,7 @@ public String getName() { public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { Generator generator = network.getGenerator(generatorId); if (generator == null) { - logOrThrow(throwException, "Generator '" + generatorId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Generator '" + generatorId + "' not found"); } else if (!generator.getId().equals(generator.getRegulatingTerminal().getConnectable().getId())) { setLocalRegulation(generator, reportNode); } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ShuntCompensatorModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ShuntCompensatorModification.java index e33cd708012..4539290491a 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ShuntCompensatorModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ShuntCompensatorModification.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.modification.util.VoltageRegulationUtils; import com.powsybl.iidm.network.*; @@ -43,7 +44,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ShuntCompensator shuntCompensator = network.getShuntCompensator(shuntCompensatorId); if (shuntCompensator == null) { - logOrThrow(throwException, "Shunt Compensator '" + shuntCompensatorId + "' not found"); + ModificationLogs.logOrThrow(throwException, "Shunt Compensator '" + shuntCompensatorId + "' not found"); return; } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ThreeWindingsTransformerModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ThreeWindingsTransformerModification.java index 5ff9e969ced..e736d6aa801 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ThreeWindingsTransformerModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/ThreeWindingsTransformerModification.java @@ -10,6 +10,7 @@ import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.topology.NamingStrategy; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.ThreeWindingsTransformer; @@ -39,7 +40,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE ComputationManager computationManager, ReportNode reportNode) { ThreeWindingsTransformer t3wt = network.getThreeWindingsTransformer(transformerId); if (t3wt == null) { - logOrThrow(throwException, "ThreeWindingsTransformer '" + transformerId + "' not found"); + ModificationLogs.logOrThrow(throwException, "ThreeWindingsTransformer '" + transformerId + "' not found"); return; } if (ratedU0 > 0) { diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/AbstractTapPositionModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/AbstractTapPositionModification.java index 7344a3077a0..7363fda042c 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/AbstractTapPositionModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/AbstractTapPositionModification.java @@ -15,6 +15,7 @@ import com.powsybl.iidm.network.ThreeSides; import com.powsybl.iidm.network.ThreeWindingsTransformer; import com.powsybl.iidm.network.TwoWindingsTransformer; +import com.powsybl.iidm.modification.util.ModificationLogs; import java.util.Objects; import java.util.Optional; @@ -65,7 +66,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE } else if (twoWindingsTransformer != null) { applyTwoWindingsTransformer(network, twoWindingsTransformer, throwException); } else { - logOrThrow(throwException, "No matching transformer found with ID:" + getTransformerId()); + ModificationLogs.logOrThrow(throwException, "No matching transformer found with ID:" + getTransformerId()); } } @@ -88,10 +89,10 @@ protected ThreeWindingsTransformer.Leg getLeg(ThreeWindingsTransformer threeWind .filter(isTapHolder) .collect(Collectors.toSet()); if (validLegs.size() > 1) { - logOrThrow(throwException, "Multiple valid legs found."); + ModificationLogs.logOrThrow(throwException, "Multiple valid legs found."); return null; } else if (validLegs.isEmpty()) { - logOrThrow(throwException, "No valid legs found."); + ModificationLogs.logOrThrow(throwException, "No valid legs found."); return null; } else { // validLegs.size() == 1 return validLegs.iterator().next(); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/PhaseTapPositionModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/PhaseTapPositionModification.java index 909d96edab9..1190bd8c9ff 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/PhaseTapPositionModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/PhaseTapPositionModification.java @@ -9,6 +9,7 @@ import com.powsybl.iidm.modification.NetworkModificationImpact; import com.powsybl.iidm.network.*; +import com.powsybl.iidm.modification.util.ModificationLogs; import java.util.Objects; @@ -85,18 +86,18 @@ protected void applyThreeWindingsTransformer(Network network, ThreeWindingsTrans public void apply(PhaseTapChangerHolder ptcHolder, boolean throwException) { if (ptcHolder == null) { - logOrThrow(throwException, "Failed to apply : " + TRANSFORMER_STR + getTransformerId()); + ModificationLogs.logOrThrow(throwException, "Failed to apply : " + TRANSFORMER_STR + getTransformerId()); return; } if (!ptcHolder.hasPhaseTapChanger()) { - logOrThrow(throwException, TRANSFORMER_STR + getTransformerId() + "' does not have a PhaseTapChanger"); + ModificationLogs.logOrThrow(throwException, TRANSFORMER_STR + getTransformerId() + "' does not have a PhaseTapChanger"); return; } try { int newTapPosition = (isRelative ? ptcHolder.getPhaseTapChanger().getTapPosition() : 0) + getTapPosition(); ptcHolder.getPhaseTapChanger().setTapPosition(newTapPosition); } catch (ValidationException e) { - logOrThrow(throwException, e.getMessage()); + ModificationLogs.logOrThrow(throwException, e.getMessage()); } } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/RatioTapPositionModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/RatioTapPositionModification.java index ac807c63e06..ac1a4c3b945 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/RatioTapPositionModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tapchanger/RatioTapPositionModification.java @@ -8,8 +8,8 @@ package com.powsybl.iidm.modification.tapchanger; import com.powsybl.iidm.modification.NetworkModificationImpact; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; - import java.util.Objects; /** @@ -58,17 +58,17 @@ protected void applyThreeWindingsTransformer(Network network, ThreeWindingsTrans public void apply(RatioTapChangerHolder rtcHolder, boolean throwException) { if (rtcHolder == null) { - logOrThrow(throwException, "Failed to apply : " + TRANSFORMER_STR + getTransformerId()); + ModificationLogs.logOrThrow(throwException, "Failed to apply : " + TRANSFORMER_STR + getTransformerId()); return; } if (!rtcHolder.hasRatioTapChanger()) { - logOrThrow(throwException, TRANSFORMER_STR + getTransformerId() + "' does not have a RatioTapChanger"); + ModificationLogs.logOrThrow(throwException, TRANSFORMER_STR + getTransformerId() + "' does not have a RatioTapChanger"); return; } try { rtcHolder.getRatioTapChanger().setTapPosition(getTapPosition()); } catch (ValidationException e) { - logOrThrow(throwException, e.getMessage()); + ModificationLogs.logOrThrow(throwException, e.getMessage()); } } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractCreateConnectableFeederBays.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractCreateConnectableFeederBays.java index aeb7f925020..0208121fac8 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractCreateConnectableFeederBays.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractCreateConnectableFeederBays.java @@ -7,7 +7,6 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; @@ -104,18 +103,12 @@ private boolean checkOrders(int side, VoltageLevel voltageLevel, ReportNode repo if (topologyKind == TopologyKind.NODE_BREAKER) { if (positionOrder == null) { unexpectedNullPositionOrder(reportNode, voltageLevel.getId()); - LOGGER.error("Position order is null for attachment in node-breaker voltage level {}", voltageLevel.getId()); - if (throwException) { - throw new PowsyblException("Position order is null for attachment in node-breaker voltage level " + voltageLevel.getId()); - } + ModificationLogs.logOrThrow(throwException, "Position order is null for attachment in node-breaker voltage level " + voltageLevel.getId()); return false; } if (positionOrder < 0) { unexpectedNegativePositionOrder(reportNode, positionOrder, voltageLevel.getId()); - LOGGER.error("Position order is negative ({}) for attachment in node-breaker voltage level {}", positionOrder, voltageLevel.getId()); - if (throwException) { - throw new PowsyblException("Position order is negative for attachment in node-breaker voltage level " + voltageLevel.getId() + ": " + positionOrder); - } + ModificationLogs.logOrThrow(throwException, "Position order is negative for attachment in node-breaker voltage level " + voltageLevel.getId() + ": " + positionOrder); return false; } } @@ -191,9 +184,7 @@ private boolean setAdderConnectivity(Network network, ReportNode reportNode, boo } else { LOGGER.error("Unsupported type {} for identifiable {}", busOrBusbarSection.getType(), busOrBusbarSectionId); unsupportedIdentifiableType(reportNode, busOrBusbarSection.getType(), busOrBusbarSectionId); - if (throwException) { - throw new PowsyblException(String.format("Unsupported type %s for identifiable %s", busOrBusbarSection.getType(), busOrBusbarSectionId)); - } + ModificationLogs.logOrThrow(throwException, String.format("Unsupported type %s for identifiable %s", busOrBusbarSection.getType(), busOrBusbarSectionId)); return false; } } @@ -210,9 +201,7 @@ private static boolean checkNetworks(Connectable connectable, Network network LOGGER.error("Network given in parameters and in connectableAdder are different. Connectable '{}' of type {} was added then removed", connectable.getId(), connectable.getType()); networkMismatchReport(reportNode, connectable.getId(), connectable.getType()); - if (throwException) { - throw new PowsyblException("Network given in parameters and in connectableAdder are different. Connectable was added then removed"); - } + ModificationLogs.logOrThrow(throwException, "Network given in parameters and in connectableAdder are different. Connectable was added then removed"); return false; } return true; diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractLineConnectionModification.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractLineConnectionModification.java index 3374e67168d..a026696a2e3 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractLineConnectionModification.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/AbstractLineConnectionModification.java @@ -105,9 +105,7 @@ private static boolean checkPositionPercent(double positionPercent, boolean thro if (Double.isNaN(positionPercent)) { logger.error("Percent should not be undefined"); undefinedPercent(reportNode); - if (throwException) { - throw new PowsyblException("Percent should not be undefined"); - } + ModificationLogs.logOrThrow(throwException, "Percent should not be undefined"); return false; } return true; diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateCouplingDevice.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateCouplingDevice.java index 1055bb31779..91d8ff02b8a 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateCouplingDevice.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateCouplingDevice.java @@ -12,6 +12,7 @@ import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; import com.powsybl.iidm.modification.NetworkModificationImpact; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.BusbarSectionPosition; import org.slf4j.Logger; @@ -249,9 +250,7 @@ private boolean failBbs(Identifiable bbs1, Identifiable bbs2, ReportNode r if (bbs1 == bbs2) { LOGGER.error("No coupling device can be created on a same busbar section or bus ({})", busOrBbsId1); noCouplingDeviceOnSameBusOrBusbarSection(reportNode, busOrBbsId1); - if (throwException) { - throw new PowsyblException(String.format("No coupling device can be created on a same bus or busbar section (%s)", busOrBbsId1)); - } + ModificationLogs.logOrThrow(throwException, String.format("No coupling device can be created on a same bus or busbar section (%s)", busOrBbsId1)); return true; } return false; diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateLineOnLine.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateLineOnLine.java index 809a3fecf15..cc649796aa2 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateLineOnLine.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateLineOnLine.java @@ -7,10 +7,10 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.commons.report.TypedValue; import com.powsybl.computation.ComputationManager; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.BusbarSectionPosition; import org.slf4j.Logger; @@ -88,11 +88,8 @@ public String getName() { private static boolean checkFictitiousSubstationId(boolean createFictSubstation, String fictitiousSubstationId, boolean throwException, ReportNode reportNode) { if (createFictSubstation && fictitiousSubstationId == null) { - LOG.error("Fictitious substation ID must be defined if a fictitious substation is to be created"); undefinedFictitiousSubstationId(reportNode); - if (throwException) { - throw new PowsyblException("Fictitious substation ID must be defined if a fictitious substation is to be created"); - } + ModificationLogs.logOrThrow(throwException, "Fictitious substation ID must be defined if a fictitious substation is to be created"); return false; } return true; diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateVoltageLevelTopology.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateVoltageLevelTopology.java index 7eca6b4efb9..19b3259cf03 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateVoltageLevelTopology.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/CreateVoltageLevelTopology.java @@ -7,17 +7,19 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; import com.powsybl.iidm.modification.NetworkModificationImpact; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.BusbarSectionPositionAdder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.*; +import java.util.Collections; +import java.util.List; +import java.util.Objects; import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.*; import static com.powsybl.iidm.modification.util.ModificationReports.*; @@ -67,9 +69,7 @@ private static boolean checkCountAttributes(Integer count, String type, int min, if (count < min) { LOG.error("{} must be >= {}", type, min); countLowerThanMin(reportNode, type, min); - if (throwException) { - throw new PowsyblException(type + " must be >= " + min); - } + ModificationLogs.logOrThrow(throwException, type + " must be >= " + min); return false; } return true; @@ -86,27 +86,18 @@ private boolean checkCountAttributes(int lowBusOrBusbarIndex, int alignedBusesOr private static boolean checkSwitchKinds(List switchKinds, int sectionCount, ReportNode reportNode, boolean throwException) { Objects.requireNonNull(switchKinds, "Undefined switch kinds"); if (switchKinds.size() != sectionCount - 1) { - LOG.error("Unexpected switch kinds count ({}). Should be {}", switchKinds.size(), sectionCount - 1); unexpectedSwitchKindsCount(reportNode, switchKinds.size(), sectionCount - 1); - if (throwException) { - throw new PowsyblException("Unexpected switch kinds count (" + switchKinds.size() + "). Should be " + (sectionCount - 1)); - } + ModificationLogs.logOrThrow(throwException, "Unexpected switch kinds count (" + switchKinds.size() + "). Should be " + (sectionCount - 1)); return false; } if (switchKinds.contains(null)) { - LOG.error("All switch kinds must be defined"); undefinedSwitchKind(reportNode); - if (throwException) { - throw new PowsyblException("All switch kinds must be defined"); - } + ModificationLogs.logOrThrow(throwException, "All switch kinds must be defined"); return false; } if (switchKinds.stream().anyMatch(kind -> kind != SwitchKind.DISCONNECTOR && kind != SwitchKind.BREAKER)) { - LOG.error("Switch kinds must be DISCONNECTOR or BREAKER"); wrongSwitchKind(reportNode); - if (throwException) { - throw new PowsyblException("Switch kinds must be DISCONNECTOR or BREAKER"); - } + ModificationLogs.logOrThrow(throwException, "Switch kinds must be DISCONNECTOR or BREAKER"); return false; } return true; @@ -148,9 +139,7 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE if (voltageLevel == null) { LOG.error("Voltage level {} is not found", voltageLevelId); notFoundVoltageLevelReport(reportNode, voltageLevelId); - if (throwException) { - throw new PowsyblException(String.format("Voltage level %s is not found", voltageLevelId)); - } + ModificationLogs.logOrThrow(throwException, String.format("Voltage level %s is not found", voltageLevelId)); return; } TopologyKind topologyKind = voltageLevel.getTopologyKind(); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveFeederBay.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveFeederBay.java index 9d7f6b1abda..d211bb84d7f 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveFeederBay.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveFeederBay.java @@ -7,11 +7,11 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; import com.powsybl.iidm.modification.NetworkModificationImpact; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import com.powsybl.math.graph.TraverseResult; import org.jgrapht.Graph; @@ -242,19 +242,13 @@ private static Integer getOppositeNode(Graph graph, int node, O private boolean checkConnectable(boolean throwException, ReportNode reportNode, Connectable connectable) { if (connectable instanceof BusbarSection) { - LOGGER.error("BusbarSection connectables are not allowed as RemoveFeederBay input: {}", connectableId); removeFeederBayBusbarSectionReport(reportNode, connectableId); - if (throwException) { - throw new PowsyblException("BusbarSection connectables are not allowed as RemoveFeederBay input: " + connectableId); - } + ModificationLogs.logOrThrow(throwException, "BusbarSection connectables are not allowed as RemoveFeederBay input: " + connectableId); return false; } if (connectable == null) { - LOGGER.error("Connectable {} not found", connectableId); notFoundConnectableReport(reportNode, connectableId); - if (throwException) { - throw new PowsyblException("Connectable not found: " + connectableId); - } + ModificationLogs.logOrThrow(throwException, "Connectable not found: " + connectableId); return false; } return true; diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveHvdcLine.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveHvdcLine.java index b93cb0104d5..534746e9bf4 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveHvdcLine.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveHvdcLine.java @@ -12,6 +12,7 @@ import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; import com.powsybl.iidm.modification.NetworkModificationImpact; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -88,10 +89,7 @@ private static ShuntCompensator getShuntCompensator(String id, Network network, ShuntCompensator sc = network.getShuntCompensator(id); if (sc == null) { notFoundShuntReport(reportNode, id); - LOGGER.error("Shunt {} not found", id); - if (throwException) { - throw new PowsyblException("Shunt " + id + " not found"); - } + ModificationLogs.logOrThrow(throwException, "Shunt " + id + " not found"); } return sc; } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveSubstation.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveSubstation.java index a225d3fc009..f6c7508d930 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveSubstation.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveSubstation.java @@ -7,11 +7,11 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; import com.powsybl.iidm.modification.NetworkModificationImpact; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.Network; import com.powsybl.iidm.network.Substation; import com.powsybl.iidm.network.VoltageLevel; @@ -45,11 +45,8 @@ public String getName() { public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { Substation substation = network.getSubstation(substationId); if (substation == null) { - LOGGER.error("Substation {} not found", substationId); notFoundSubstationReport(reportNode, substationId); - if (throwException) { - throw new PowsyblException("Substation not found: " + substationId); - } + ModificationLogs.logOrThrow(throwException, "Substation not found: " + substationId); return; } List vlIds = substation.getVoltageLevelStream().map(VoltageLevel::getId).toList(); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveVoltageLevel.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveVoltageLevel.java index fa424532f1f..4de484e702b 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveVoltageLevel.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RemoveVoltageLevel.java @@ -7,12 +7,14 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; +import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; import com.powsybl.iidm.modification.NetworkModificationImpact; -import com.powsybl.iidm.network.*; -import com.powsybl.computation.ComputationManager; +import com.powsybl.iidm.modification.util.ModificationLogs; +import com.powsybl.iidm.network.HvdcConverterStation; +import com.powsybl.iidm.network.Network; +import com.powsybl.iidm.network.VoltageLevel; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,11 +46,8 @@ public String getName() { public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { VoltageLevel voltageLevel = network.getVoltageLevel(voltageLevelId); if (voltageLevel == null) { - LOGGER.error("Voltage level {} not found", voltageLevelId); notFoundVoltageLevelReport(reportNode, voltageLevelId); - if (throwException) { - throw new PowsyblException("Voltage level not found: " + voltageLevelId); - } + ModificationLogs.logOrThrow(throwException, "Voltage level not found: " + voltageLevelId); return; } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/ReplaceTeePointByVoltageLevelOnLine.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/ReplaceTeePointByVoltageLevelOnLine.java index 26fb7b6faae..dd0f9ad36c8 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/ReplaceTeePointByVoltageLevelOnLine.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/ReplaceTeePointByVoltageLevelOnLine.java @@ -7,9 +7,9 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import com.powsybl.iidm.network.extensions.BusbarSectionPosition; import org.slf4j.Logger; @@ -137,84 +137,82 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE // tee point is the voltage level in common with tpLine1, tpLine2 and tpLineToRemove VoltageLevel teePoint = TopologyModificationUtils.findTeePoint(tpLine1, tpLine2, tpLineToRemove); - if (teePoint == null) { - noTeePointAndOrTappedVoltageLevelReport(reportNode, oldLine1Id, oldLine2Id, lineToRemoveId); - LOGGER.error("Unable to find the tee point and the tapped voltage level from lines {}, {} and {}", oldLine1Id, oldLine2Id, lineToRemoveId); - if (throwException) { - throw new PowsyblException(String.format("Unable to find the tee point and the tapped voltage level from lines %s, %s and %s", oldLine1Id, oldLine2Id, lineToRemoveId)); - } else { - return; - } - } - // tapped voltage level is the voltage level of tpLineToRemove, at the opposite side of the tee point - VoltageLevel tappedVoltageLevel = tpLineToRemove.getTerminal1().getVoltageLevel() == teePoint - ? tpLineToRemove.getTerminal2().getVoltageLevel() - : tpLineToRemove.getTerminal1().getVoltageLevel(); + if (teePoint != null) { - TwoSides tpLine1OtherVlSide = tpLine1.getTerminal1().getVoltageLevel() == teePoint ? TwoSides.TWO : TwoSides.ONE; - TwoSides tpLine2OtherVlSide = tpLine2.getTerminal1().getVoltageLevel() == teePoint ? TwoSides.TWO : TwoSides.ONE; + // tapped voltage level is the voltage level of tpLineToRemove, at the opposite side of the tee point + VoltageLevel tappedVoltageLevel = tpLineToRemove.getTerminal1().getVoltageLevel() == teePoint + ? tpLineToRemove.getTerminal2().getVoltageLevel() + : tpLineToRemove.getTerminal1().getVoltageLevel(); - // Set parameters of the new lines newLine1 and newLine2 - LineAdder newLine1Adder = createLineAdder(newLine1Id, newLine1Name, tpLine1.getTerminal(tpLine1OtherVlSide).getVoltageLevel().getId(), tappedVoltageLevel.getId(), network, tpLine1, tpLineToRemove); - LineAdder newLine2Adder = createLineAdder(newLine2Id, newLine2Name, tappedVoltageLevel.getId(), tpLine2.getTerminal(tpLine2OtherVlSide).getVoltageLevel().getId(), network, tpLine2, tpLineToRemove); + TwoSides tpLine1OtherVlSide = tpLine1.getTerminal1().getVoltageLevel() == teePoint ? TwoSides.TWO : TwoSides.ONE; + TwoSides tpLine2OtherVlSide = tpLine2.getTerminal1().getVoltageLevel() == teePoint ? TwoSides.TWO : TwoSides.ONE; - // Create the topology inside the existing tapped voltage level and attach lines newLine1 and newLine2 - attachLine(tpLine1.getTerminal(tpLine1OtherVlSide), newLine1Adder, (bus, adder) -> adder.setConnectableBus1(bus.getId()), (bus, adder) -> adder.setBus1(bus.getId()), (node, adder) -> adder.setNode1(node)); - attachLine(tpLine2.getTerminal(tpLine2OtherVlSide), newLine2Adder, (bus, adder) -> adder.setConnectableBus2(bus.getId()), (bus, adder) -> adder.setBus2(bus.getId()), (node, adder) -> adder.setNode2(node)); + // Set parameters of the new lines newLine1 and newLine2 + LineAdder newLine1Adder = createLineAdder(newLine1Id, newLine1Name, tpLine1.getTerminal(tpLine1OtherVlSide).getVoltageLevel().getId(), tappedVoltageLevel.getId(), network, tpLine1, tpLineToRemove); + LineAdder newLine2Adder = createLineAdder(newLine2Id, newLine2Name, tappedVoltageLevel.getId(), tpLine2.getTerminal(tpLine2OtherVlSide).getVoltageLevel().getId(), network, tpLine2, tpLineToRemove); - // Create the breaker topology - if (!createTopology(newLine1Adder, newLine2Adder, tappedVoltageLevel, namingStrategy, reportNode, throwException)) { - return; + // Create the topology inside the existing tapped voltage level and attach lines newLine1 and newLine2 + attachLine(tpLine1.getTerminal(tpLine1OtherVlSide), newLine1Adder, (bus, adder) -> adder.setConnectableBus1(bus.getId()), (bus, adder) -> adder.setBus1(bus.getId()), (node, adder) -> adder.setNode1(node)); + attachLine(tpLine2.getTerminal(tpLine2OtherVlSide), newLine2Adder, (bus, adder) -> adder.setConnectableBus2(bus.getId()), (bus, adder) -> adder.setBus2(bus.getId()), (node, adder) -> adder.setNode2(node)); + + // Create the breaker topology + if (!createTopology(newLine1Adder, newLine2Adder, tappedVoltageLevel, namingStrategy, reportNode, throwException)) { + return; + } + + // get line tpLine1 limits + TwoSides tpLine1Limits1Side = tpLine1OtherVlSide; + TwoSides tpLine1Limits2Side = tpLine1OtherVlSide == TwoSides.ONE ? TwoSides.TWO : TwoSides.ONE; + LoadingLimitsBags limits1TpLine1 = new LoadingLimitsBags(() -> tpLine1.getActivePowerLimits(tpLine1Limits1Side), + () -> tpLine1.getApparentPowerLimits(tpLine1Limits1Side), + () -> tpLine1.getCurrentLimits(tpLine1Limits1Side)); + LoadingLimitsBags limits2TpLine1 = new LoadingLimitsBags(() -> tpLine1.getActivePowerLimits(tpLine1Limits2Side), + () -> tpLine1.getApparentPowerLimits(tpLine1Limits2Side), + () -> tpLine1.getCurrentLimits(tpLine1Limits2Side)); + + // get line tpLine2 limits + TwoSides tpLine2Limits1Side = tpLine2OtherVlSide == TwoSides.ONE ? TwoSides.TWO : TwoSides.ONE; + TwoSides tpLine2Limits2Side = tpLine2OtherVlSide; + + LoadingLimitsBags limits1TpLine2 = new LoadingLimitsBags(() -> tpLine2.getActivePowerLimits(tpLine2Limits1Side), + () -> tpLine2.getApparentPowerLimits(tpLine2Limits1Side), + () -> tpLine2.getCurrentLimits(tpLine2Limits1Side)); + LoadingLimitsBags limits2TpLine2 = new LoadingLimitsBags(() -> tpLine2.getActivePowerLimits(tpLine2Limits2Side), + () -> tpLine2.getApparentPowerLimits(tpLine2Limits2Side), + () -> tpLine2.getCurrentLimits(tpLine2Limits2Side)); + + // Remove the three existing lines + tpLine1.remove(); + removedLineReport(reportNode, oldLine1Id); + LOGGER.info(LINE_REMOVED_LOG_MESSAGE, oldLine1Id); + tpLine2.remove(); + removedLineReport(reportNode, oldLine2Id); + LOGGER.info(LINE_REMOVED_LOG_MESSAGE, oldLine2Id); + new RemoveFeederBay(tpLineToRemove.getId()).apply(network, namingStrategy, throwException, computationManager, reportNode); + removedLineReport(reportNode, lineToRemoveId); + LOGGER.info(LINE_REMOVED_LOG_MESSAGE, lineToRemoveId); + + // Create the two new lines + Line newLine1 = newLine1Adder.add(); + addLoadingLimits(newLine1, limits1TpLine1, TwoSides.ONE); + addLoadingLimits(newLine1, limits2TpLine1, TwoSides.TWO); + createdLineReport(reportNode, newLine1Id); + LOGGER.info("Line {} created", newLine1Id); + + Line newLine2 = newLine2Adder.add(); + addLoadingLimits(newLine2, limits1TpLine2, TwoSides.ONE); + addLoadingLimits(newLine2, limits2TpLine2, TwoSides.TWO); + createdLineReport(reportNode, newLine2Id); + LOGGER.info("Line {} created", newLine2Id); + + // remove tee point + removeVoltageLevelAndSubstation(teePoint, reportNode); + } else { + noTeePointAndOrTappedVoltageLevelReport(reportNode, oldLine1Id, oldLine2Id, lineToRemoveId); + ModificationLogs.logOrThrow(throwException, String.format("Unable to find the tee point and the tapped voltage level from lines %s, %s and %s", oldLine1Id, oldLine2Id, lineToRemoveId)); } - // get line tpLine1 limits - TwoSides tpLine1Limits1Side = tpLine1OtherVlSide; - TwoSides tpLine1Limits2Side = tpLine1OtherVlSide == TwoSides.ONE ? TwoSides.TWO : TwoSides.ONE; - LoadingLimitsBags limits1TpLine1 = new LoadingLimitsBags(() -> tpLine1.getActivePowerLimits(tpLine1Limits1Side), - () -> tpLine1.getApparentPowerLimits(tpLine1Limits1Side), - () -> tpLine1.getCurrentLimits(tpLine1Limits1Side)); - LoadingLimitsBags limits2TpLine1 = new LoadingLimitsBags(() -> tpLine1.getActivePowerLimits(tpLine1Limits2Side), - () -> tpLine1.getApparentPowerLimits(tpLine1Limits2Side), - () -> tpLine1.getCurrentLimits(tpLine1Limits2Side)); - - // get line tpLine2 limits - TwoSides tpLine2Limits1Side = tpLine2OtherVlSide == TwoSides.ONE ? TwoSides.TWO : TwoSides.ONE; - TwoSides tpLine2Limits2Side = tpLine2OtherVlSide; - - LoadingLimitsBags limits1TpLine2 = new LoadingLimitsBags(() -> tpLine2.getActivePowerLimits(tpLine2Limits1Side), - () -> tpLine2.getApparentPowerLimits(tpLine2Limits1Side), - () -> tpLine2.getCurrentLimits(tpLine2Limits1Side)); - LoadingLimitsBags limits2TpLine2 = new LoadingLimitsBags(() -> tpLine2.getActivePowerLimits(tpLine2Limits2Side), - () -> tpLine2.getApparentPowerLimits(tpLine2Limits2Side), - () -> tpLine2.getCurrentLimits(tpLine2Limits2Side)); - - // Remove the three existing lines - tpLine1.remove(); - removedLineReport(reportNode, oldLine1Id); - LOGGER.info(LINE_REMOVED_LOG_MESSAGE, oldLine1Id); - tpLine2.remove(); - removedLineReport(reportNode, oldLine2Id); - LOGGER.info(LINE_REMOVED_LOG_MESSAGE, oldLine2Id); - new RemoveFeederBay(tpLineToRemove.getId()).apply(network, namingStrategy, throwException, computationManager, reportNode); - removedLineReport(reportNode, lineToRemoveId); - LOGGER.info(LINE_REMOVED_LOG_MESSAGE, lineToRemoveId); - - // Create the two new lines - Line newLine1 = newLine1Adder.add(); - addLoadingLimits(newLine1, limits1TpLine1, TwoSides.ONE); - addLoadingLimits(newLine1, limits2TpLine1, TwoSides.TWO); - createdLineReport(reportNode, newLine1Id); - LOGGER.info("Line {} created", newLine1Id); - - Line newLine2 = newLine2Adder.add(); - addLoadingLimits(newLine2, limits1TpLine2, TwoSides.ONE); - addLoadingLimits(newLine2, limits2TpLine2, TwoSides.TWO); - createdLineReport(reportNode, newLine2Id); - LOGGER.info("Line {} created", newLine2Id); - - // remove tee point - removeVoltageLevelAndSubstation(teePoint, reportNode); } private boolean createTopology(LineAdder newLine1Adder, LineAdder newLine2Adder, VoltageLevel tappedVoltageLevel, NamingStrategy namingStrategy, ReportNode reportNode, boolean throwException) { @@ -271,31 +269,20 @@ private Line getLineFromNetwork(Network network, String lineId, ReportNode repor Line line = network.getLine(lineId); if (line == null) { notFoundLineReport(reportNode, lineId); - LOGGER.error(LINE_NOT_FOUND_LOG_MESSAGE, lineId); - if (throwException) { - throw new PowsyblException(String.format(LINE_NOT_FOUND_REPORT_MESSAGE, lineId)); - } + ModificationLogs.logOrThrow(throwException, String.format(LINE_NOT_FOUND_REPORT_MESSAGE, lineId)); } return line; } private boolean errorWhenBusNull(ReportNode reportNode, VoltageLevel voltageLevel, boolean throwException) { notFoundBusInVoltageLevelReport(reportNode, bbsOrBusId, voltageLevel.getId()); - LOGGER.error("Bus {} is not found in voltage level {}", bbsOrBusId, voltageLevel.getId()); - if (throwException) { - throw new PowsyblException(String.format("Bus %s is not found in voltage level %s", bbsOrBusId, voltageLevel.getId())); - } else { - return false; - } + ModificationLogs.logOrThrow(throwException, String.format("Bus %s is not found in voltage level %s", bbsOrBusId, voltageLevel.getId())); + return false; } private boolean errorWhenBusbarSectionNull(ReportNode reportNode, VoltageLevel voltageLevel, boolean throwException) { notFoundBusbarSectionInVoltageLevelReport(reportNode, bbsOrBusId, voltageLevel.getId()); - LOGGER.error("Busbar section {} is not found in voltage level {}", bbsOrBusId, voltageLevel.getId()); - if (throwException) { - throw new PowsyblException(String.format("Busbar section %s is not found in voltage level %s", bbsOrBusId, voltageLevel.getId())); - } else { - return false; - } + ModificationLogs.logOrThrow(throwException, String.format("Busbar section %s is not found in voltage level %s", bbsOrBusId, voltageLevel.getId())); + return false; } } diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLine.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLine.java index 74a6abe8d4c..dc3cc5c8229 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLine.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertConnectVoltageLevelOnLine.java @@ -7,11 +7,11 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; import com.powsybl.iidm.modification.AbstractNetworkModification; import com.powsybl.iidm.modification.NetworkModificationImpact; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,16 +20,8 @@ import java.util.Objects; import java.util.Set; -import static com.powsybl.iidm.modification.util.ModificationReports.createdLineReport; -import static com.powsybl.iidm.modification.util.ModificationReports.noVoltageLevelInCommonReport; -import static com.powsybl.iidm.modification.util.ModificationReports.notFoundLineReport; -import static com.powsybl.iidm.modification.util.ModificationReports.removedLineReport; -import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.LoadingLimitsBags; -import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.addLoadingLimits; -import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.attachLine; -import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.createLineAdder; -import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.mergeLimits; -import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.removeVoltageLevelAndSubstation; +import static com.powsybl.iidm.modification.topology.TopologyModificationUtils.*; +import static com.powsybl.iidm.modification.util.ModificationReports.*; /** * This method reverses the action done in the ConnectVoltageLevelOnLine class : @@ -77,11 +69,9 @@ private static Line checkAndGetLine(Network network, String lineId, ReportNode r Line line = network.getLine(lineId); if (line == null) { notFoundLineReport(reportNode, lineId); - LOG.error("Line {} is not found", lineId); - if (throwException) { - throw new PowsyblException(String.format("Line %s is not found", lineId)); - } + ModificationLogs.logOrThrow(throwException, String.format("Line %s is not found", lineId)); } + return line; } @@ -115,12 +105,8 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE if (vlIds.size() != 3) { noVoltageLevelInCommonReport(reportNode, line1Id, line2Id); - LOG.error("Lines {} and {} should have one and only one voltage level in common at their extremities", line1Id, line2Id); - if (throwException) { - throw new PowsyblException(String.format("Lines %s and %s should have one and only one voltage level in common at their extremities", line1Id, line2Id)); - } else { - return; - } + ModificationLogs.logOrThrow(throwException, String.format("Lines %s and %s should have one and only one voltage level in common at their extremities", line1Id, line2Id)); + return; } VoltageLevel commonVl = network.getVoltageLevel(commonVlId); diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertCreateLineOnLine.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertCreateLineOnLine.java index dfae5ebd19e..e09b8317bfc 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertCreateLineOnLine.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/topology/RevertCreateLineOnLine.java @@ -7,9 +7,9 @@ */ package com.powsybl.iidm.modification.topology; -import com.powsybl.commons.PowsyblException; import com.powsybl.commons.report.ReportNode; import com.powsybl.computation.ComputationManager; +import com.powsybl.iidm.modification.util.ModificationLogs; import com.powsybl.iidm.network.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,10 +93,7 @@ private static Line checkAndGetLine(Network network, String lineId, ReportNode r Line line = network.getLine(lineId); if (line == null) { notFoundLineReport(reportNode, lineId); - LOG.error("Line {} is not found", lineId); - if (throwException) { - throw new PowsyblException(String.format(LINE_NOT_FOUND_REPORT_MESSAGE, lineId)); - } + ModificationLogs.logOrThrow(throwException, String.format(LINE_NOT_FOUND_REPORT_MESSAGE, lineId)); } return line; } @@ -115,12 +112,8 @@ public void apply(Network network, NamingStrategy namingStrategy, boolean throwE VoltageLevel teePoint = TopologyModificationUtils.findTeePoint(lineToBeMerged1, lineToBeMerged2, lineToBeDeleted); if (teePoint == null) { noTeePointAndOrTappedVoltageLevelReport(reportNode, oldLine1Id, oldLine2Id, lineToRemoveId); - LOG.error("Unable to find the tee point and the tapped voltage level from lines {}, {} and {}", oldLine1Id, oldLine2Id, lineToRemoveId); - if (throwException) { - throw new PowsyblException(String.format("Unable to find the attachment point and the tapped voltage level from lines %s, %s and %s", oldLine1Id, oldLine2Id, lineToRemoveId)); - } else { - return; - } + ModificationLogs.logOrThrow(throwException, String.format("Unable to find the attachment point and the tapped voltage level from lines %s, %s and %s", oldLine1Id, oldLine2Id, lineToRemoveId)); + return; } // tapped voltage level is the voltage level of lineToBeDeleted, at the opposite side of the tee point diff --git a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationLogs.java b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationLogs.java index ffffac62c21..d275c8078e2 100644 --- a/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationLogs.java +++ b/iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/util/ModificationLogs.java @@ -19,14 +19,20 @@ public final class ModificationLogs { private static final Logger LOGGER = LoggerFactory.getLogger(ModificationLogs.class); + public static void logOrThrow(boolean throwException, String message) { + if (throwException) { + throw new PowsyblException(message); + } else { + LOGGER.warn("Error while applying modification : {}", message); + } + } + private ModificationLogs() { } public static void busOrBbsDoesNotExist(String bbsId, ReportNode reportNode, boolean throwException) { LOGGER.error("Bus or busbar section {} not found.", bbsId); ModificationReports.notFoundBusOrBusbarSectionReport(reportNode, bbsId); - if (throwException) { - throw new PowsyblException(String.format("Bus or busbar section %s not found", bbsId)); - } + logOrThrow(throwException, String.format("Bus or busbar section %s not found", bbsId)); } } diff --git a/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/PercentChangeLoadModificationTest.java b/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/PercentChangeLoadModificationTest.java index c4b87f8e6db..2a9721a8f9f 100644 --- a/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/PercentChangeLoadModificationTest.java +++ b/iidm/iidm-modification/src/test/java/com/powsybl/iidm/modification/PercentChangeLoadModificationTest.java @@ -27,7 +27,7 @@ void shouldIncreaseP0() { Network network = EurostagTutorialExample1Factory.create(); Load load = network.getLoad("LOAD"); assertEquals(600.0, load.getP0()); - PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 3.51, 0); + PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 3.51, 0, true); modification.apply(network); assertEquals(621.06, load.getP0(), 0.001); } @@ -37,7 +37,7 @@ void shouldDecreaseP0() { Network network = EurostagTutorialExample1Factory.create(); Load load = network.getLoad("LOAD"); assertEquals(600.0, load.getP0()); - PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", -3.5, 0); + PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", -3.5, 0, true); modification.apply(network); assertEquals(579.0, load.getP0()); } @@ -47,7 +47,7 @@ void shouldIncreaseQ0() { Network network = EurostagTutorialExample1Factory.create(); Load load = network.getLoad("LOAD"); assertEquals(200.0, load.getQ0()); - PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 0, 2.5); + PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 0, 2.5, true); modification.apply(network); assertEquals(205.0, load.getQ0()); } @@ -57,42 +57,42 @@ void shouldDecreaseQ0() { Network network = EurostagTutorialExample1Factory.create(); Load load = network.getLoad("LOAD"); assertEquals(200.0, load.getQ0()); - PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 0, -2.5); + PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 0, -2.5, true); modification.apply(network); assertEquals(195.0, load.getQ0()); } @Test void shouldCreatePercentChangeLoadModificationAtLimit() { - PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", -100, -100); + PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", -100, -100, true); assertEquals("PercentChangeLoadModification", modification.getName()); } @Test void shouldThrowWhenLoadDecreasesTooMuch() { - assertThrows(PowsyblException.class, () -> new PercentChangeLoadModification("LOAD", -101, 0)); - assertThrows(PowsyblException.class, () -> new PercentChangeLoadModification("LOAD", 0, -101)); + assertThrows(PowsyblException.class, () -> new PercentChangeLoadModification("LOAD", -101, 0, true)); + assertThrows(PowsyblException.class, () -> new PercentChangeLoadModification("LOAD", 0, -101, true)); } @Test void shouldThrowWhenLoadNotFound() { Network network = EurostagTutorialExample1Factory.create(); - PercentChangeLoadModification modification = new PercentChangeLoadModification("LoadNotFound", 2.5, 2.5); + PercentChangeLoadModification modification = new PercentChangeLoadModification("LoadNotFound", 2.5, 2.5, true); assertThrows(PowsyblException.class, () -> modification.apply(network, true, null)); } @Test void impactOnNetwork() { Network network = EurostagTutorialExample1Factory.create(); - assertEquals(NO_IMPACT_ON_NETWORK, new PercentChangeLoadModification("LOAD", 0, 0).hasImpactOnNetwork(network)); - assertEquals(HAS_IMPACT_ON_NETWORK, new PercentChangeLoadModification("LOAD", 3, 0).hasImpactOnNetwork(network)); - assertEquals(HAS_IMPACT_ON_NETWORK, new PercentChangeLoadModification("LOAD", 0, 3).hasImpactOnNetwork(network)); - assertEquals(CANNOT_BE_APPLIED, new PercentChangeLoadModification("LoadNotFound", 3, 2).hasImpactOnNetwork(network)); + assertEquals(NO_IMPACT_ON_NETWORK, new PercentChangeLoadModification("LOAD", 0, 0, true).hasImpactOnNetwork(network)); + assertEquals(HAS_IMPACT_ON_NETWORK, new PercentChangeLoadModification("LOAD", 3, 0, true).hasImpactOnNetwork(network)); + assertEquals(HAS_IMPACT_ON_NETWORK, new PercentChangeLoadModification("LOAD", 0, 3, true).hasImpactOnNetwork(network)); + assertEquals(CANNOT_BE_APPLIED, new PercentChangeLoadModification("LoadNotFound", 3, 2, true).hasImpactOnNetwork(network)); } @Test void pctLoadModificationName() { - PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 3.5, 0); + PercentChangeLoadModification modification = new PercentChangeLoadModification("LOAD", 3.5, 0, true); assertEquals("PercentChangeLoadModification", modification.getName()); }