diff --git a/src/main/java/org/gridsuite/modification/dto/ModificationInfos.java b/src/main/java/org/gridsuite/modification/dto/ModificationInfos.java index 8a74b37f..0b900691 100644 --- a/src/main/java/org/gridsuite/modification/dto/ModificationInfos.java +++ b/src/main/java/org/gridsuite/modification/dto/ModificationInfos.java @@ -118,6 +118,9 @@ public class ModificationInfos { @Schema(description = "Modification activated (defaults to true at creation when not provided)") private Boolean activated; + @Schema(description = "Modification applicability per root network tag (a tag without an entry is applicable)") + private Map applicabilityByRootNetworkTag; + @Schema(description = "User description") private String description; @@ -144,6 +147,20 @@ public Map getMapMessageValues() { return Map.of(); } + /** + * A modification is activated on a root network when it is not stashed, when it is globally activated and when + * its applicability for that root network tag is not explicitly set to false. A tag without any entry is + * applicable, and a null tag matches any root network. + */ + public boolean isActivatedOn(String rootNetworkTag) { + if (Boolean.TRUE.equals(stashed) || !Boolean.TRUE.equals(activated)) { + return false; + } + return rootNetworkTag == null + || applicabilityByRootNetworkTag == null + || !Boolean.FALSE.equals(applicabilityByRootNetworkTag.get(rootNetworkTag)); + } + @JsonIgnore public void check() { // To check input DTO before hypothesis creation. Nothing to check here diff --git a/src/main/java/org/gridsuite/modification/modifications/AbstractModification.java b/src/main/java/org/gridsuite/modification/modifications/AbstractModification.java index c9896729..e55d35bc 100644 --- a/src/main/java/org/gridsuite/modification/modifications/AbstractModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/AbstractModification.java @@ -6,6 +6,7 @@ */ package org.gridsuite.modification.modifications; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; @@ -16,6 +17,7 @@ import com.powsybl.iidm.network.Network; import lombok.AccessLevel; import lombok.EqualsAndHashCode; +import lombok.Getter; import lombok.NoArgsConstructor; import org.gridsuite.modification.IFilterService; import org.gridsuite.modification.ILoadFlowService; @@ -33,7 +35,7 @@ * the {@code @JsonSubTypes} registry of this class. * *

The injected application context ({@code filterService}, {@code loadFlowService}) is not serialized. - * After deserialization, {@link #initApplicationContext(IFilterService, ILoadFlowService)} must be called + * After deserialization, {@link #initApplicationContext(IFilterService, ILoadFlowService, String)} must be called * again with valid services before the modification can be applied. * * @author Slimane Amar @@ -96,6 +98,11 @@ @NoArgsConstructor(access = AccessLevel.PROTECTED) public abstract class AbstractModification extends AbstractNetworkModification { + @JsonIgnore + @EqualsAndHashCode.Exclude + @Getter + private String rootNetworkTag; + @Override public void apply(Network network, NamingStrategy namingStrategy, boolean throwException, ComputationManager computationManager, ReportNode reportNode) { apply(network, reportNode); @@ -106,13 +113,18 @@ public void check(Network network) throws NetworkModificationException { } /** - * Injects the application context services ({@code filterService}, {@code loadFlowService}) required - * to {@link #apply(Network, ReportNode)}. + * Injects the application context required to {@link #apply(Network, ReportNode)}: the services, and the tag of + * the root network being applied on. * - *

These services are not serialized with the modification: after deserialization, this method must - * be called again with valid services before the modification can be applied. + *

None of it is serialized with the modification: after deserialization, this method must be called again + * before the modification can be applied. */ - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + public final void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService, String rootNetworkTag) { + this.rootNetworkTag = rootNetworkTag; + initServices(filterService, loadFlowService); + } + + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { // To add some specific information } diff --git a/src/main/java/org/gridsuite/modification/modifications/AbstractScaling.java b/src/main/java/org/gridsuite/modification/modifications/AbstractScaling.java index 8008878e..5d26ee6e 100644 --- a/src/main/java/org/gridsuite/modification/modifications/AbstractScaling.java +++ b/src/main/java/org/gridsuite/modification/modifications/AbstractScaling.java @@ -53,7 +53,7 @@ protected AbstractScaling(List variations, VariationType } @Override - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { this.filterService = filterService; } diff --git a/src/main/java/org/gridsuite/modification/modifications/BalancesAdjustmentModification.java b/src/main/java/org/gridsuite/modification/modifications/BalancesAdjustmentModification.java index 02dcf2dd..16d73e6b 100644 --- a/src/main/java/org/gridsuite/modification/modifications/BalancesAdjustmentModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/BalancesAdjustmentModification.java @@ -82,7 +82,7 @@ public BalancesAdjustmentModification(List areas, } @Override - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { this.loadFlowService = loadFlowService; } diff --git a/src/main/java/org/gridsuite/modification/modifications/ByFilterDeletion.java b/src/main/java/org/gridsuite/modification/modifications/ByFilterDeletion.java index e13344c9..d13d7186 100644 --- a/src/main/java/org/gridsuite/modification/modifications/ByFilterDeletion.java +++ b/src/main/java/org/gridsuite/modification/modifications/ByFilterDeletion.java @@ -69,7 +69,7 @@ public ByFilterDeletion(IdentifiableType equipmentType, List filter } @Override - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { this.filterService = filterService; } diff --git a/src/main/java/org/gridsuite/modification/modifications/CompositeModification.java b/src/main/java/org/gridsuite/modification/modifications/CompositeModification.java index 138f1674..fca45b59 100644 --- a/src/main/java/org/gridsuite/modification/modifications/CompositeModification.java +++ b/src/main/java/org/gridsuite/modification/modifications/CompositeModification.java @@ -48,7 +48,7 @@ public CompositeModification(CompositeModificationInfos compositeModificationInf } @Override - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { this.filterService = filterService; this.loadFlowService = loadFlowService; } @@ -61,15 +61,14 @@ public void apply(Network network, ReportNode subReportNode) { @Override public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) { compositeModificationInfos.getModificationsInfos().stream() - .filter(modificationInfos -> Boolean.TRUE.equals(modificationInfos.getActivated()) - && Boolean.FALSE.equals(modificationInfos.getStashed())) + .filter(modificationInfos -> modificationInfos.isActivatedOn(getRootNetworkTag())) .forEach( modif -> { ReportNode modifNode = modif.createSubReportNode(subReportNode); AbstractModification modification = modif.toModification(); try { modification.check(network); - modification.initApplicationContext(filterService, loadFlowService); + modification.initApplicationContext(filterService, loadFlowService, getRootNetworkTag()); modification.apply(network, namingStrategy, modifNode); } catch (Exception e) { // in case of error in a network modification, the composite modification doesn't interrupt its execution : diff --git a/src/main/java/org/gridsuite/modification/modifications/GenerationDispatch.java b/src/main/java/org/gridsuite/modification/modifications/GenerationDispatch.java index 1fe51ec3..d0b73d7f 100644 --- a/src/main/java/org/gridsuite/modification/modifications/GenerationDispatch.java +++ b/src/main/java/org/gridsuite/modification/modifications/GenerationDispatch.java @@ -366,7 +366,7 @@ private static final class GeneratorsFrequencyReserve { } @Override - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { this.filterService = filterService; } diff --git a/src/main/java/org/gridsuite/modification/modifications/ModificationReference.java b/src/main/java/org/gridsuite/modification/modifications/ModificationReference.java index 34fbbb33..2b37e118 100644 --- a/src/main/java/org/gridsuite/modification/modifications/ModificationReference.java +++ b/src/main/java/org/gridsuite/modification/modifications/ModificationReference.java @@ -52,7 +52,7 @@ public ModificationReference(UUID referenceId, } @Override - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { this.filterService = filterService; this.loadFlowService = loadFlowService; } @@ -75,7 +75,7 @@ public void apply(Network network, ReportNode subReportNode) { public void apply(Network network, NamingStrategy namingStrategy, ReportNode subReportNode) { AbstractModification modification = referenceInfos.toModification(); modification.check(network); - modification.initApplicationContext(filterService, loadFlowService); + modification.initApplicationContext(filterService, loadFlowService, getRootNetworkTag()); modification.apply(network, namingStrategy, referenceInfos.createSubReportNode(subReportNode)); } diff --git a/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java b/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java index 9a3ea5a6..aeb233ec 100644 --- a/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java +++ b/src/main/java/org/gridsuite/modification/modifications/byfilter/AbstractModificationByAssignment.java @@ -154,7 +154,7 @@ protected String applyValue(Identifiable equipment, AbstractAssignmentInfos a } @Override - public void initApplicationContext(IFilterService filterService, ILoadFlowService loadFlowService) { + protected void initServices(IFilterService filterService, ILoadFlowService loadFlowService) { this.filterService = filterService; } diff --git a/src/test/java/org/gridsuite/modification/dto/ModificationInfosTest.java b/src/test/java/org/gridsuite/modification/dto/ModificationInfosTest.java index b8029c5a..9934b513 100644 --- a/src/test/java/org/gridsuite/modification/dto/ModificationInfosTest.java +++ b/src/test/java/org/gridsuite/modification/dto/ModificationInfosTest.java @@ -9,6 +9,9 @@ import com.powsybl.commons.report.ReportNode; import org.junit.jupiter.api.Test; +import java.util.Collections; +import java.util.Map; + import static org.junit.jupiter.api.Assertions.*; /** @@ -17,11 +20,21 @@ */ class ModificationInfosTest { + private static final String TAG = "PH1"; + private static final String OTHER_TAG = "PH2"; + private static final class TestModificationInfos extends ModificationInfos { // Intentionally does not override createSubReportNode() or toModification() // to test the UnsupportedOperationException throwing behavior } + private static ModificationInfos modificationInfos(Boolean activated, Map applicabilityByRootNetworkTag) { + ModificationInfos modificationInfos = new TestModificationInfos(); + modificationInfos.setActivated(activated); + modificationInfos.setApplicabilityByRootNetworkTag(applicabilityByRootNetworkTag); + return modificationInfos; + } + @Test void testCreateSubReportNodeThrowsUnsupportedOperationException() { ModificationInfos modificationInfos = new TestModificationInfos(); @@ -52,4 +65,71 @@ void testToModificationThrowsUnsupportedOperationException() { assertEquals(expectedMessage, exception.getMessage(), "Exception message should indicate which method and class need implementation"); } + + @Test + void testNotActivatedWhenModificationIsStashed() { + ModificationInfos modificationInfos = modificationInfos(true, Map.of(TAG, true)); + modificationInfos.setStashed(true); + assertFalse(modificationInfos.isActivatedOn(TAG), + "A stashed modification is activated on no root network, whatever its applicabilities"); + assertFalse(modificationInfos.isActivatedOn(null), + "A stashed modification is not activated without a root network context"); + } + + @Test + void testActivatedWhenStashedIsUndefined() { + ModificationInfos modificationInfos = modificationInfos(true, Map.of(TAG, true)); + modificationInfos.setStashed(null); + assertTrue(modificationInfos.isActivatedOn(TAG), + "An undefined stash flag keeps the default of the field: the modification is not stashed"); + } + + @Test + void testNotActivatedWhenModificationIsDeactivated() { + assertFalse(modificationInfos(false, Map.of(TAG, true)).isActivatedOn(TAG), + "A deactivated modification is activated on no root network, whatever its applicabilities"); + assertFalse(modificationInfos(null, Map.of(TAG, true)).isActivatedOn(TAG), + "An undefined activation flag is not an activation"); + } + + @Test + void testActivatedWhenNoRootNetworkTagGiven() { + assertTrue(modificationInfos(true, Map.of(TAG, false)).isActivatedOn(null), + "A null tag means no root network context: the per root network applicabilities are then ignored"); + } + + @Test + void testActivatedWhenNoApplicabilityDefined() { + assertTrue(modificationInfos(true, null).isActivatedOn(TAG), + "A modification without any applicability is activated on every root network"); + } + + @Test + void testActivatedWhenTagHasNoEntry() { + assertTrue(modificationInfos(true, Map.of()).isActivatedOn(TAG), + "A modification without any applicability entry for a tag is activated on it"); + assertTrue(modificationInfos(true, Map.of(OTHER_TAG, false)).isActivatedOn(TAG), + "An entry deactivating another tag leaves this one applicable"); + } + + @Test + void testActivatedWhenTagEntryIsNull() { + // singletonMap, not Map.of, which rejects a null value + assertTrue(modificationInfos(true, Collections.singletonMap(TAG, null)).isActivatedOn(TAG), + "A tag mapped to no value is applicable: only an explicit false deactivates it"); + } + + @Test + void testActivationFollowsTagEntry() { + assertTrue(modificationInfos(true, Map.of(TAG, true)).isActivatedOn(TAG)); + assertFalse(modificationInfos(true, Map.of(TAG, false)).isActivatedOn(TAG)); + } + + @Test + void testTagsAreIndependent() { + ModificationInfos modificationInfos = modificationInfos(true, Map.of(TAG, false, OTHER_TAG, true)); + assertFalse(modificationInfos.isActivatedOn(TAG)); + assertTrue(modificationInfos.isActivatedOn(OTHER_TAG), + "Deactivating a tag must not affect the other ones"); + } } diff --git a/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java b/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java index 334c637a..dd4675c4 100644 --- a/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/AbstractNetworkModificationTest.java @@ -84,7 +84,7 @@ public void testRoundTripSerializationDeserialization() throws JsonProcessingExc ILoadFlowService loadFlowServiceMock = mock(ILoadFlowService.class); IFilterService filterServiceMock = mock(IFilterService.class); AbstractModification expectedModification = buildModification().toModification(); - expectedModification.initApplicationContext(filterServiceMock, loadFlowServiceMock); + expectedModification.initApplicationContext(filterServiceMock, loadFlowServiceMock, null); String serializedModification = mapper.writeValueAsString(expectedModification); AbstractModification deserializedModification = mapper.readValue(serializedModification, AbstractModification.class); diff --git a/src/test/java/org/gridsuite/modification/modifications/BalancesAdjustmentModificationTest.java b/src/test/java/org/gridsuite/modification/modifications/BalancesAdjustmentModificationTest.java index 41d69a17..466c3145 100644 --- a/src/test/java/org/gridsuite/modification/modifications/BalancesAdjustmentModificationTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/BalancesAdjustmentModificationTest.java @@ -156,7 +156,7 @@ void testApplyWithLoadFlow() { ))) .build()); BalancesAdjustmentModification modification = (BalancesAdjustmentModification) infos.toModification(); - modification.initApplicationContext(null, loadFlowService); + modification.initApplicationContext(null, loadFlowService, null); modification.apply(getNetwork(), new DefaultNamingStrategy(), ReportNode.NO_OP); assertEquals(-58d, getNetwork().getGenerator("GH1").getTerminal().getP(), PRECISION); @@ -193,7 +193,7 @@ void testLoadFlowParametersNotFound() { .thenReturn(null); BalancesAdjustmentModification modification = (BalancesAdjustmentModification) infos.toModification(); - modification.initApplicationContext(null, loadFlowService); + modification.initApplicationContext(null, loadFlowService, null); Network network = getNetwork(); ReportNode reportNode = ReportNode.newRootReportNode() @@ -236,7 +236,7 @@ void testLoadFlowProviderNotSpecified() { .build()); BalancesAdjustmentModification modification = (BalancesAdjustmentModification) infos.toModification(); - modification.initApplicationContext(null, loadFlowService); + modification.initApplicationContext(null, loadFlowService, null); Network network = getNetwork(); ReportNode reportNode = ReportNode.newRootReportNode() @@ -272,7 +272,7 @@ void testLoadFlowParametersIdNull() { .build(); BalancesAdjustmentModification modification = (BalancesAdjustmentModification) infos.toModification(); - modification.initApplicationContext(null, loadFlowService); + modification.initApplicationContext(null, loadFlowService, null); Network network = getNetwork(); ReportNode reportNode = ReportNode.newRootReportNode() diff --git a/src/test/java/org/gridsuite/modification/modifications/GenerationDispatchTest.java b/src/test/java/org/gridsuite/modification/modifications/GenerationDispatchTest.java index bf581125..589ed776 100644 --- a/src/test/java/org/gridsuite/modification/modifications/GenerationDispatchTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/GenerationDispatchTest.java @@ -101,7 +101,7 @@ private void assertLogReportsForDefaultNetwork(double batteryBalanceOnSc2, Repor @Test public void testApply() throws Exception { GenerationDispatch modif = (GenerationDispatch) buildModification().toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork()); assertAfterNetworkModificationApplication(); } @@ -118,7 +118,7 @@ void testGenerationDispatch() throws Exception { .withMessageTemplate("test") .build()); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork(), report); assertNetworkAfterCreationWithStandardLossCoefficient(); @@ -141,7 +141,7 @@ void testGenerationDispatchWithBattery() throws Exception { .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork(), report); assertLogReportsForDefaultNetwork(batteryTotalTargetP, report); } @@ -164,7 +164,7 @@ void testGenerationDispatchWithBatteryConnection() throws Exception { .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork(), report); assertLogReportsForDefaultNetwork(batteryTotalTargetP, report); } @@ -179,7 +179,7 @@ void testGenerationDispatchWithMultipleEnergySource() throws Exception { .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork(), report); assertLogMessageWithoutRank("The total demand is : 768.0 MW", "network.modification.TotalDemand", report); @@ -204,7 +204,7 @@ void testGenerationDispatchWithHigherLossCoefficient() throws Exception { .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork(), report); assertEquals(100., getNetwork().getGenerator(GH1_ID).getTargetP(), 0.001); @@ -247,7 +247,7 @@ void testGenerationDispatchWithInternalHvdc() throws Exception { .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork(), report); assertEquals(100., getNetwork().getGenerator(GH1_ID).getTargetP(), 0.001); @@ -297,7 +297,7 @@ void testGenerationDispatchWithMaxPReduction() throws Exception { when(filterService.getFilters(List.of(FILTER_ID_1, FILTER_ID_2, FILTER_ID_3))).thenReturn(filters); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); ReportNode report = modification.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); @@ -368,7 +368,7 @@ void testGenerationDispatchGeneratorsWithFixedSupply() throws Exception { when(filterService.getFilters(List.of(FILTER_ID_1, FILTER_ID_2, FILTER_ID_3, FILTER_ID_4))).thenReturn(filters); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); ReportNode report = modification.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); @@ -469,7 +469,7 @@ void testGenerationDispatchWithFrequencyReserve() throws Exception { when(filterService.getFilters(List.of(FILTER_ID_1, FILTER_ID_2, FILTER_ID_3, FILTER_ID_4, FILTER_ID_5, FILTER_ID_6))).thenReturn(filters); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); ReportNode report = modification.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); @@ -520,7 +520,7 @@ void testGenerationDispatchWithSubstationsHierarchy() throws Exception { // network setNetwork(Network.read("ieee118cdf_testDemGroupe.xiidm", getClass().getResourceAsStream("/ieee118cdf_testDemGroupe.xiidm"))); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork()); // generators modified @@ -618,7 +618,7 @@ void testGenerationDispatchWithSubstationsHierarchyAndFixedSupply() { when(filterService.getFilters(List.of(FILTER_ID_1))).thenReturn(filters); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); modif.apply(getNetwork()); // Check expected target active power values @@ -697,7 +697,7 @@ void testGenerationDispatchWithMaxValueLessThanMinP() throws Exception { when(filterService.getFilters(List.of(FILTER_ID_1, FILTER_ID_2, FILTER_ID_3, FILTER_ID_4, FILTER_ID_5, FILTER_ID_6))).thenReturn(filters); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); ReportNode report = modification.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); @@ -801,7 +801,7 @@ void testGenerationDispatchWithMissingFilters() { setNetwork(Network.read("testGenerationDispatchReduceMaxP.xiidm", getClass().getResourceAsStream("/testGenerationDispatchReduceMaxP.xiidm"))); GenerationDispatch modif = (GenerationDispatch) modification.toModification(); - modif.initApplicationContext(filterService, null); + modif.initApplicationContext(filterService, null, null); ReportNode report = modification.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); diff --git a/src/test/java/org/gridsuite/modification/modifications/GeneratorScalingTest.java b/src/test/java/org/gridsuite/modification/modifications/GeneratorScalingTest.java index 36d7fa43..e6332de8 100644 --- a/src/test/java/org/gridsuite/modification/modifications/GeneratorScalingTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/GeneratorScalingTest.java @@ -108,7 +108,7 @@ public void testApply() throws Exception { GeneratorScalingInfos modificationInfo = (GeneratorScalingInfos) buildModification(); when(filterService.getUuidFilterEquipmentsMap(any(), any())).thenReturn(getTestFilters()); GeneratorScaling generatorScaling = (GeneratorScaling) modificationInfo.toModification(); - generatorScaling.initApplicationContext(filterService, null); + generatorScaling.initApplicationContext(filterService, null, null); generatorScaling.apply(getNetwork()); assertAfterNetworkModificationApplication(); } @@ -140,7 +140,7 @@ void testVentilationModeWithoutDistributionKey() throws Exception { .build(); GeneratorScaling generatorScaling = (GeneratorScaling) modificationToCreate.toModification(); - generatorScaling.initApplicationContext(filterService, null); + generatorScaling.initApplicationContext(filterService, null, null); generatorScaling.apply(getNetwork()); assertEquals(200, getNetwork().getGenerator(GENERATOR_ID_2).getTargetP(), 0.01D); @@ -168,7 +168,7 @@ void testFilterWithWrongIds() throws Exception { .build(); GeneratorScaling generatorScaling = (GeneratorScaling) generatorScalingInfo.toModification(); - generatorScaling.initApplicationContext(filterService, null); + generatorScaling.initApplicationContext(filterService, null, null); ReportNode report = generatorScalingInfo.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); @@ -213,7 +213,7 @@ void testScalingCreationWithWarning() throws Exception { .build(); GeneratorScaling generatorScaling = (GeneratorScaling) generatorScalingInfo.toModification(); - generatorScaling.initApplicationContext(filterService, null); + generatorScaling.initApplicationContext(filterService, null, null); generatorScaling.apply(getNetwork()); assertEquals(600, getNetwork().getGenerator(GENERATOR_ID_9).getTargetP(), 0.01D); @@ -358,7 +358,7 @@ private void testVariationWithSomeDisconnections(VariationMode variationMode, Li .build(); GeneratorScaling generatorScaling = (GeneratorScaling) generatorScalingInfo.toModification(); - generatorScaling.initApplicationContext(filterService, null); + generatorScaling.initApplicationContext(filterService, null, null); generatorScaling.apply(getNetwork()); // If we sum the targetP for all expected modified generators, we should have the requested variation value diff --git a/src/test/java/org/gridsuite/modification/modifications/LoadScalingTest.java b/src/test/java/org/gridsuite/modification/modifications/LoadScalingTest.java index 1333c070..46b6d889 100644 --- a/src/test/java/org/gridsuite/modification/modifications/LoadScalingTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/LoadScalingTest.java @@ -109,7 +109,7 @@ public void testApply() throws Exception { LoadScalingInfos modificationInfo = (LoadScalingInfos) buildModification(); when(filterService.getUuidFilterEquipmentsMap(any(), any())).thenReturn(getTestFilters()); LoadScaling loadScaling = (LoadScaling) modificationInfo.toModification(); - loadScaling.initApplicationContext(filterService, null); + loadScaling.initApplicationContext(filterService, null, null); loadScaling.apply(getNetwork()); assertAfterNetworkModificationApplication(); } @@ -141,7 +141,7 @@ void testVentilationModeWithoutDistributionKey() throws Exception { .build(); LoadScaling loadScaling = (LoadScaling) modificationToCreate.toModification(); - loadScaling.initApplicationContext(filterService, null); + loadScaling.initApplicationContext(filterService, null, null); loadScaling.apply(getNetwork()); assertEquals(200, getNetwork().getLoad(LOAD_ID_2).getP0(), 0.01D); @@ -170,7 +170,7 @@ void testFilterWithWrongIds() throws Exception { .variations(List.of(variation)) .build(); LoadScaling loadScaling = (LoadScaling) loadScalingInfo.toModification(); - loadScaling.initApplicationContext(filterService, null); + loadScaling.initApplicationContext(filterService, null, null); ReportNode report = loadScalingInfo.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test").build()); @@ -216,7 +216,7 @@ void testScalingCreationWithWarning() throws Exception { .build(); LoadScaling loadScaling = (LoadScaling) loadScalingInfo.toModification(); - loadScaling.initApplicationContext(filterService, null); + loadScaling.initApplicationContext(filterService, null, null); loadScaling.apply(getNetwork()); assertEquals(600, getNetwork().getLoad(LOAD_ID_9).getP0(), 0.01D); assertEquals(300, getNetwork().getLoad(LOAD_ID_10).getP0(), 0.01D); @@ -367,7 +367,7 @@ private void testVariationWithSomeDisconnections(VariationMode variationMode, Li .build(); LoadScaling loadScaling = (LoadScaling) loadScalingInfo.toModification(); - loadScaling.initApplicationContext(filterService, null); + loadScaling.initApplicationContext(filterService, null, null); loadScaling.apply(getNetwork()); // If we sum the P0 for all expected modified loads, we should have the requested variation value diff --git a/src/test/java/org/gridsuite/modification/modifications/ModificationReferenceTest.java b/src/test/java/org/gridsuite/modification/modifications/ModificationReferenceTest.java index 510b25cd..3d9134ae 100644 --- a/src/test/java/org/gridsuite/modification/modifications/ModificationReferenceTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/ModificationReferenceTest.java @@ -38,7 +38,7 @@ public void checkModification() { @Override protected void initApplicationContext(AbstractModification modification) { - modification.initApplicationContext(null, null); + modification.initApplicationContext(null, null, null); } @Override diff --git a/src/test/java/org/gridsuite/modification/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java index dc0ad5bb..c3664838 100644 --- a/src/test/java/org/gridsuite/modification/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java @@ -250,7 +250,8 @@ void testCreateTwoWindingsTransformerWithRatioTapChangerInNodeBreaker() { testCreateTwoWindingsTransformerInNodeBreaker(twoWindingsTransformerCreationInfos2); assertEquals( "TwoWindingsTransformerCreationInfos(super=BranchCreationInfos(super=EquipmentCreationInfos(super=EquipmentModificationInfos(super=ModificationInfos(uuid=null, " - + "type=TWO_WINDINGS_TRANSFORMER_CREATION, date=null, stashed=false, messageType=null, messageValues=null, activated=true, description=a dummy description), " + + "type=TWO_WINDINGS_TRANSFORMER_CREATION, date=null, stashed=false, messageType=null, messageValues=null, activated=true, applicabilityByRootNetworkTag=null, " + + "description=a dummy description), " + "equipmentId=id2wt1WithRatioTapChanger2, properties=null), equipmentName=2wtName), r=400.0, x=300.0, voltageLevelId1=v1, voltageLevelId2=v4, " + "busOrBusbarSectionId1=1.1, busOrBusbarSectionId2=1.A, operationalLimitsGroups=null, selectedOperationalLimitsGroupId1=null, " + "selectedOperationalLimitsGroupId2=null, connectionName1=null, connectionDirection1=TOP, connectionName2=null, connectionDirection2=TOP, " diff --git a/src/test/java/org/gridsuite/modification/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java b/src/test/java/org/gridsuite/modification/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java index 46500cee..a18a4677 100644 --- a/src/test/java/org/gridsuite/modification/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/byfilter/assignment/AbstractModificationByAssignmentTest.java @@ -78,7 +78,7 @@ public void testApply() throws Exception { ModificationInfos modificationInfo = buildModification(); when(filterService.getUuidFilterEquipmentsMap(any(), any())).thenReturn(getTestFilters()); AbstractModification modification = modificationInfo.toModification(); - modification.initApplicationContext(filterService, null); + modification.initApplicationContext(filterService, null, null); modification.apply(getNetwork(), reportNode); assertAfterNetworkModificationApplication(); } @@ -104,7 +104,7 @@ protected void checkModification() { protected void apply(ModificationByAssignmentInfos modificationByAssignmentInfos) { AbstractModification modification = modificationByAssignmentInfos.toModification(); - modification.initApplicationContext(filterService, null); + modification.initApplicationContext(filterService, null, null); modification.apply(getNetwork()); } diff --git a/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/AbstractByFormulaModificationTest.java b/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/AbstractByFormulaModificationTest.java index 1feb2da2..ff743b55 100644 --- a/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/AbstractByFormulaModificationTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/byfilter/formula/AbstractByFormulaModificationTest.java @@ -75,7 +75,7 @@ public void testApply() throws Exception { ModificationInfos modificationInfo = buildModification(); when(filterService.getUuidFilterEquipmentsMap(any(), any())).thenReturn(getTestFilters()); AbstractModification modification = modificationInfo.toModification(); - modification.initApplicationContext(filterService, null); + modification.initApplicationContext(filterService, null, null); modification.apply(getNetwork(), reportNode); assertAfterNetworkModificationApplication(); } @@ -101,7 +101,7 @@ protected void checkModification() { protected void apply(ByFormulaModificationInfos modificationInfos) { AbstractModification modification = modificationInfos.toModification(); - modification.initApplicationContext(filterService, null); + modification.initApplicationContext(filterService, null, null); modification.apply(getNetwork()); } diff --git a/src/test/java/org/gridsuite/modification/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java b/src/test/java/org/gridsuite/modification/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java index c95c361b..7c1515e7 100644 --- a/src/test/java/org/gridsuite/modification/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java +++ b/src/test/java/org/gridsuite/modification/modifications/byfilterdeletion/AbstractByFilterDeletionTest.java @@ -64,7 +64,7 @@ public void testApply() throws Exception { ModificationInfos modificationInfo = buildModification(); when(filterService.getUuidFilterEquipmentsMap(any(), any())).thenReturn(getTestFilters()); AbstractModification modification = modificationInfo.toModification(); - modification.initApplicationContext(filterService, null); + modification.initApplicationContext(filterService, null, null); modification.apply(getNetwork()); assertAfterNetworkModificationApplication(); } @@ -90,7 +90,7 @@ protected void checkModification() { when(filterService.getUuidFilterEquipmentsMap(any(), any())).thenReturn(filterEquipments); ByFilterDeletion byFilterDeletion = (ByFilterDeletion) byFilterDeletionInfos.toModification(); - byFilterDeletion.initApplicationContext(filterService, null); + byFilterDeletion.initApplicationContext(filterService, null, null); ReportNode report = byFilterDeletionInfos.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test") @@ -120,7 +120,7 @@ void testCreateAllFiltersWrong() throws Exception { when(filterService.getUuidFilterEquipmentsMap(any(), any())).thenReturn(filters); ByFilterDeletion byFilterDeletion = (ByFilterDeletion) byFilterDeletionInfos.toModification(); - byFilterDeletion.initApplicationContext(filterService, null); + byFilterDeletion.initApplicationContext(filterService, null, null); ReportNode report = byFilterDeletionInfos.createSubReportNode(ReportNode.newRootReportNode() .withResourceBundles(NetworkModificationReportResourceBundle.BASE_NAME) .withMessageTemplate("test")