diff --git a/pom.xml b/pom.xml
index 229d6770a..ec108e017 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,7 +52,7 @@
gridsuite
org.gridsuite:network-modification-server
- 0.28.0
+ 0.29.0
2.14.1
diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java
index 6bc79aac0..9d8cf0b7e 100644
--- a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java
+++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/BranchCreationEntity.java
@@ -71,16 +71,9 @@ public class BranchCreationEntity extends EquipmentCreationEntity {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinTable(
joinColumns = @JoinColumn(name = "branch_id"), foreignKey = @ForeignKey(name = "branch_id_fk"),
- inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id1_fk"))
+ inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id_fk"))
@OrderColumn(name = "pos_operationalLimitsGroups")
- private List operationalLimitsGroups1;
-
- @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
- @JoinTable(
- joinColumns = @JoinColumn(name = "branch_id"), foreignKey = @ForeignKey(name = "branch_id_fk"),
- inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id2_fk"))
- @OrderColumn(name = "pos_operationalLimitsGroups")
- private List operationalLimitsGroups2;
+ private List operationalLimitsGroups;
@Column(name = "selectedOperationalLimitsGroupId1")
private String selectedOperationalLimitsGroupId1;
@@ -107,8 +100,7 @@ private void assignAttributes(BranchCreationInfos branchCreationInfos) {
voltageLevelId2 = branchCreationInfos.getVoltageLevelId2();
busOrBusbarSectionId1 = branchCreationInfos.getBusOrBusbarSectionId1();
busOrBusbarSectionId2 = branchCreationInfos.getBusOrBusbarSectionId2();
- operationalLimitsGroups1 = assignOperationalLimitsGroups(branchCreationInfos.getOperationalLimitsGroups1(), operationalLimitsGroups1);
- operationalLimitsGroups2 = assignOperationalLimitsGroups(branchCreationInfos.getOperationalLimitsGroups2(), operationalLimitsGroups2);
+ operationalLimitsGroups = assignOperationalLimitsGroups(branchCreationInfos.getOperationalLimitsGroups(), operationalLimitsGroups);
connectionDirection1 = branchCreationInfos.getConnectionDirection1();
connectionName1 = branchCreationInfos.getConnectionName1();
connectionDirection2 = branchCreationInfos.getConnectionDirection2();
diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/LineCreationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/LineCreationEntity.java
index c0abdf2be..122e7221b 100644
--- a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/LineCreationEntity.java
+++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/LineCreationEntity.java
@@ -97,8 +97,7 @@ public LineCreationInfos toModificationInfos() {
getProperties().stream()
.map(FreePropertyEntity::toInfos)
.toList())
- .operationalLimitsGroups1(OperationalLimitsGroupEntity.fromOperationalLimitsGroupsEntities(getOperationalLimitsGroups1()))
- .operationalLimitsGroups2(OperationalLimitsGroupEntity.fromOperationalLimitsGroupsEntities(getOperationalLimitsGroups2()));
+ .operationalLimitsGroups(OperationalLimitsGroupEntity.fromOperationalLimitsGroupsEntities(getOperationalLimitsGroups()));
return builder;
}
diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/OperationalLimitsGroupEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/OperationalLimitsGroupEntity.java
index 8230165f7..90f9ea594 100644
--- a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/OperationalLimitsGroupEntity.java
+++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/OperationalLimitsGroupEntity.java
@@ -34,6 +34,10 @@ public class OperationalLimitsGroupEntity {
@Column(name = "id")
private String id;
+ @Column(name = "applicability")
+ @Enumerated(EnumType.STRING)
+ private OperationalLimitsGroupInfos.Applicability applicability;
+
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
@JoinColumn(name = "current_limits_id",
referencedColumnName = "id",
@@ -49,6 +53,7 @@ public static List toOperationalLimitsGroupsEntiti
new OperationalLimitsGroupEntity(
null,
limitsGroup.getId(),
+ limitsGroup.getApplicability(),
new CurrentLimitsEntity(limitsGroup.getCurrentLimits())
)
)
@@ -61,6 +66,7 @@ public static List fromOperationalLimitsGroupsEntit
.map(limitsGroupEntity ->
OperationalLimitsGroupInfos.builder()
.id(limitsGroupEntity.getId())
+ .applicability(limitsGroupEntity.getApplicability())
.currentLimits(limitsGroupEntity.getCurrentLimits().toCurrentLimitsInfos())
.build()
)
diff --git a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/TwoWindingsTransformerCreationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/TwoWindingsTransformerCreationEntity.java
index d2d99bab8..8a50f88b9 100644
--- a/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/TwoWindingsTransformerCreationEntity.java
+++ b/src/main/java/org/gridsuite/modification/server/entities/equipment/creation/TwoWindingsTransformerCreationEntity.java
@@ -211,8 +211,7 @@ public TwoWindingsTransformerCreationInfos toModificationInfos() {
getProperties().stream()
.map(FreePropertyEntity::toInfos)
.toList())
- .operationalLimitsGroups1(OperationalLimitsGroupEntity.fromOperationalLimitsGroupsEntities(getOperationalLimitsGroups1()))
- .operationalLimitsGroups2(OperationalLimitsGroupEntity.fromOperationalLimitsGroupsEntities(getOperationalLimitsGroups2()));
+ .operationalLimitsGroups(OperationalLimitsGroupEntity.fromOperationalLimitsGroupsEntities(getOperationalLimitsGroups()));
if (!ratioTapChangerSteps.isEmpty()) {
List ratioTapChangerStepCreationInfos = ratioTapChangerSteps.stream().map(TapChangerStepCreationEmbeddable::toModificationInfos).collect(Collectors.toList());
diff --git a/src/main/java/org/gridsuite/modification/server/migration/MergeLimitSetsGroupsTables.java b/src/main/java/org/gridsuite/modification/server/migration/MergeLimitSetsGroupsTables.java
new file mode 100644
index 000000000..dfa415070
--- /dev/null
+++ b/src/main/java/org/gridsuite/modification/server/migration/MergeLimitSetsGroupsTables.java
@@ -0,0 +1,231 @@
+package org.gridsuite.modification.server.migration;
+
+import liquibase.change.custom.CustomSqlChange;
+import liquibase.database.Database;
+import liquibase.database.jvm.JdbcConnection;
+import liquibase.exception.CustomChangeException;
+import liquibase.exception.DatabaseException;
+import liquibase.exception.SetupException;
+import liquibase.exception.ValidationErrors;
+import liquibase.resource.ResourceAccessor;
+import liquibase.statement.SqlStatement;
+import liquibase.statement.core.DeleteStatement;
+import liquibase.statement.core.InsertStatement;
+import liquibase.statement.core.UpdateStatement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+public class MergeLimitSetsGroupsTables implements CustomSqlChange {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(MergeLimitSetsGroupsTables.class);
+ private static final String UUID_COL = "uuid";
+ private static final String ID_COL = "id";
+ private static final String OPERATIONAL_LG_ID_COL = "operational_limits_groups_id";
+ private static final String CURRENT_LIMITS_ID_COL = "current_limits_id";
+ private static final String POS_OP_LG_COL = "pos_operational_limits_groups";
+ private static final String OPERATIONAL_LIMITS_GROUPS_TABLE = "operational_limits_group";
+ private static final String BRANCH_ID_COL = "branch_id";
+
+ private String createQueryLineOpLimitsGroups(String id, String tableName) {
+ return "select * from " + tableName + " where branch_id = '" + id + "'";
+ }
+
+ private String createQueryLineOpLimitsGroupsWithPos(String tableName, String id, String pos) {
+ return "select * from " + tableName + " where branch_id = '" + id + "' and pos_operational_limits_groups = " + pos;
+ }
+
+ private int getLength(ResultSet resultSet) throws SQLException {
+ resultSet.last();
+ int length = resultSet.getRow();
+ resultSet.beforeFirst();
+ return length;
+ }
+
+ private boolean compareOperationalLimitsInfos(JdbcConnection connection, String operationalLimitsIds1, String operationalLimitsIds2) throws DatabaseException, SQLException {
+ final String query = "select current_limits_id from operational_limits_group where uuid =''";
+ ResultSet currentLimits1 = connection.createStatement().executeQuery(query.replace("", operationalLimitsIds1));
+ ResultSet currentLimits2 = connection.createStatement().executeQuery(query.replace("", operationalLimitsIds2));
+
+ if (currentLimits1.next() && currentLimits2.next()) {
+ String currentLimitsQuery = "select permanent_limit from current_limits where id = ''";
+ String currentLimitsId1 = currentLimits1.getString(CURRENT_LIMITS_ID_COL);
+ String currentLimitsId2 = currentLimits2.getString(CURRENT_LIMITS_ID_COL);
+ ResultSet permanentLimit = connection.createStatement().executeQuery(currentLimitsQuery.replace("", currentLimitsId1));
+ ResultSet permanentLimit2 = connection.createStatement().executeQuery(currentLimitsQuery.replace("", currentLimitsId2));
+
+ boolean haspermanentLimit = permanentLimit.next();
+ boolean haspermanentLimit2 = permanentLimit2.next();
+ if (haspermanentLimit != haspermanentLimit2) {
+ return false;
+ }
+ if (haspermanentLimit && !Objects.equals(permanentLimit.getString("permanent_limit"),
+ permanentLimit2.getString("permanent_limit"))) {
+ return false;
+ }
+
+ final String queryTemporary = "select * from current_temporary_limits where id =''";
+ Statement statement1 = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ Statement statement2 = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
+ ResultSet temporaryLimit = statement1.executeQuery(queryTemporary.replace("", currentLimitsId1));
+ ResultSet temporaryLimit2 = statement2.executeQuery(queryTemporary.replace("", currentLimitsId2));
+ if (getLength(temporaryLimit) != getLength(temporaryLimit2)) {
+ return false;
+ }
+
+ while (temporaryLimit.next()) {
+ String name = temporaryLimit.getString("name");
+ boolean found = false;
+ temporaryLimit2.beforeFirst();
+ while (temporaryLimit2.next()) {
+ if (Objects.equals(temporaryLimit2.getString("name"), name)) {
+ if (!Objects.equals(temporaryLimit.getString("value_"), temporaryLimit2.getString("value_")) ||
+ !Objects.equals(temporaryLimit.getString("acceptable_duration"), temporaryLimit2.getString("acceptable_duration"))) {
+ return false;
+ }
+ found = true;
+ break;
+ }
+ }
+ // temporary limit not found
+ if (!found) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
+ private void addOperationalLimitsGroupApplicability(Database database, ResultSet operationalLimitsGroups,
+ List statements, String applicability) throws SQLException {
+
+ if (operationalLimitsGroups.next()) {
+ statements.add(new UpdateStatement(database.getDefaultCatalogName(), database.getDefaultSchemaName(), OPERATIONAL_LIMITS_GROUPS_TABLE)
+ .setWhereClause(UUID_COL + " = '" + operationalLimitsGroups.getString(UUID_COL) + "'")
+ .addNewColumnValue("applicability", applicability));
+ }
+ }
+
+ @Override
+ public SqlStatement[] generateStatements(Database database) throws CustomChangeException {
+ JdbcConnection connection = (JdbcConnection) database.getConnection();
+
+ List statements = new ArrayList<>();
+
+ try {
+ for (int i = 0; i < 2; i++) {
+ // Define tables names ( i= 0 => lines, i=1 => twoWindingsTransformers)
+ final String branchCreationTable = i == 0 ? "line_creation" : "two_windings_transformer_creation";
+ final String branchCreationOpLimitsGroups1Table = i == 0 ? "line_creation_operational_limits_groups1"
+ : "two_windings_transformer_creation_operational_limits_groups1";
+ final String branchCreationOpLimitsGroups2Table = i == 0 ? "line_creation_operational_limits_groups2"
+ : "two_windings_transformer_creation_operational_limits_groups2";
+ final String branchCreationOpLimitsGroupsTable = i == 0 ? "line_creation_operational_limits_groups"
+ : "two_windings_transformer_creation_operational_limits_groups";
+
+ String branchesToProcess = "Select id, selected_operational_limits_group_id1, selected_operational_limits_group_id2 from ";
+ try (ResultSet branches = connection.createStatement().executeQuery(branchesToProcess.replace("", branchCreationTable))) {
+ while (branches.next()) {
+ int position = 0;
+ //get operational limits groups1
+ ResultSet branchCreationOpLimitsGroups1 = connection.createStatement()
+ .executeQuery(createQueryLineOpLimitsGroups(branches.getString(ID_COL), branchCreationOpLimitsGroups1Table));
+
+ while (branchCreationOpLimitsGroups1.next()) {
+ String branchCreationOpLimitsGroup1Id = branchCreationOpLimitsGroups1.getString(OPERATIONAL_LG_ID_COL);
+ String branchCreationOpLimitsGroup1Pos = branchCreationOpLimitsGroups1.getString(POS_OP_LG_COL);
+
+ ResultSet branchCreationOpLimitsGroups2 = connection.createStatement()
+ .executeQuery(createQueryLineOpLimitsGroupsWithPos(branchCreationOpLimitsGroups2Table, branches.getString(ID_COL),
+ branchCreationOpLimitsGroup1Pos));
+
+ branchCreationOpLimitsGroups2.next();
+ String branchCreationOpLimitsGroup2Id = branchCreationOpLimitsGroups2.getString(OPERATIONAL_LG_ID_COL);
+
+ // Compare Both limitsGroups 1 and 2 limits
+ String query = "select * from operational_limits_group where uuid = ''";
+ ResultSet operationalLimitsGroups1 = connection.createStatement().executeQuery(query.replace("", branchCreationOpLimitsGroup1Id));
+
+ if (compareOperationalLimitsInfos(connection, branchCreationOpLimitsGroup1Id, branchCreationOpLimitsGroup2Id)) {
+ String query2 = "select current_limits_id from operational_limits_group where uuid = ''";
+ ResultSet operationalLimitsGroups2 = connection.createStatement().executeQuery(query2.replace("", branchCreationOpLimitsGroup2Id));
+
+ // - remove line from operational_limits_group
+ // - remove related permanent limit from current_limits
+ // - remove all other related limits from current_temporary_limits
+ if (operationalLimitsGroups2.next()) {
+ statements.add(new DeleteStatement(database.getDefaultCatalogName(), database.getDefaultSchemaName(), OPERATIONAL_LIMITS_GROUPS_TABLE)
+ .setWhere(UUID_COL + " = '" + branchCreationOpLimitsGroup2Id + "'"));
+ String currentLimitId = operationalLimitsGroups2.getString(CURRENT_LIMITS_ID_COL);
+ statements.add(new DeleteStatement(database.getDefaultCatalogName(), database.getDefaultSchemaName(), "current_temporary_limits")
+ .setWhere(ID_COL + " = '" + currentLimitId + "'"));
+ statements.add(new DeleteStatement(database.getDefaultCatalogName(), database.getDefaultSchemaName(), "current_limits")
+ .setWhere(ID_COL + " = '" + currentLimitId + "'"));
+ }
+
+ addOperationalLimitsGroupApplicability(database, operationalLimitsGroups1, statements, "EQUIPMENT");
+
+ // if they are equal then add only one limitGroup in new Table with application side = equipment (both)
+ statements.add(new InsertStatement(database.getDefaultCatalogName(), database.getDefaultSchemaName(), branchCreationOpLimitsGroupsTable)
+ .addColumnValue(BRANCH_ID_COL, branches.getString(ID_COL))
+ .addColumnValue(OPERATIONAL_LG_ID_COL, branchCreationOpLimitsGroup1Id)
+ .addColumnValue(POS_OP_LG_COL, position++));
+ } else {
+ // change Applicability side 1
+ addOperationalLimitsGroupApplicability(database, operationalLimitsGroups1, statements, "SIDE1");
+
+ // Add to merged table
+ statements.add(new InsertStatement(database.getDefaultCatalogName(), database.getDefaultSchemaName(), branchCreationOpLimitsGroupsTable)
+ .addColumnValue(BRANCH_ID_COL, branches.getString(ID_COL))
+ .addColumnValue(OPERATIONAL_LG_ID_COL, branchCreationOpLimitsGroup1Id)
+ .addColumnValue(POS_OP_LG_COL, position++));
+
+ // Change Applicability side 2
+ String query3 = "select * from operational_limits_group where uuid = ''";
+ ResultSet operationalLimitsGroups2 = connection.createStatement().executeQuery(query3.replace("", branchCreationOpLimitsGroup2Id));
+ addOperationalLimitsGroupApplicability(database, operationalLimitsGroups2, statements, "SIDE2");
+
+ // Add to merged table
+ statements.add(new InsertStatement(database.getDefaultCatalogName(), database.getDefaultSchemaName(), branchCreationOpLimitsGroupsTable)
+ .addColumnValue(BRANCH_ID_COL, branches.getString(ID_COL))
+ .addColumnValue(OPERATIONAL_LG_ID_COL, branchCreationOpLimitsGroup2Id)
+ .addColumnValue(POS_OP_LG_COL, position++));
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception throwables) {
+ LOGGER.error(throwables.getMessage());
+ return new SqlStatement[0]; // If any exception occurs don't do any migration
+ }
+ return statements.toArray(new SqlStatement[0]);
+ }
+
+ @Override
+ public String getConfirmationMessage() {
+ return "tables line_creation_operational_limits_group1 and 2, merged successfully into line_creation_operational_limits_group";
+ }
+
+ @Override
+ public void setUp() throws SetupException {
+
+ }
+
+ @Override
+ public void setFileOpener(ResourceAccessor resourceAccessor) {
+
+ }
+
+ @Override
+ public ValidationErrors validate(Database database) {
+ return null;
+ }
+}
diff --git a/src/main/resources/db/changelog/changesets/changelog_20250710T153644Z.xml b/src/main/resources/db/changelog/changesets/changelog_20250710T153644Z.xml
new file mode 100644
index 000000000..f1d3e198e
--- /dev/null
+++ b/src/main/resources/db/changelog/changesets/changelog_20250710T153644Z.xml
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml
index aa16b48ff..2487a931d 100644
--- a/src/main/resources/db/changelog/db.changelog-master.yaml
+++ b/src/main/resources/db/changelog/db.changelog-master.yaml
@@ -378,6 +378,9 @@ databaseChangeLog:
- include:
file: changesets/changelog_20250722T125427Z.xml
relativeToChangelogFile: true
+ - include:
+ file: changesets/changelog_20250710T153644Z.xml
+ relativeToChangelogFile: true
- include:
file: changesets/changelog_20250723T155748Z.xml
relativeToChangelogFile: true
diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java
index b357ca3a3..7b5433b65 100644
--- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java
+++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java
@@ -58,6 +58,7 @@
import static org.gridsuite.modification.ModificationType.EQUIPMENT_ATTRIBUTE_MODIFICATION;
import static org.gridsuite.modification.NetworkModificationException.Type.*;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.server.NetworkModificationServerException.Type.DUPLICATION_ARGUMENT_INVALID;
import static org.gridsuite.modification.server.elasticsearch.EquipmentInfosService.TYPES_FOR_INDEXING;
import static org.gridsuite.modification.server.impacts.TestImpactUtils.*;
@@ -1002,14 +1003,10 @@ void testDuplicateModificationGroup() throws Exception {
.busOrBusbarSectionId1("bus1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("bus2")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
- OperationalLimitsGroupInfos.builder().currentLimits(c1).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
- OperationalLimitsGroupInfos.builder().currentLimits(c2).build()
+ OperationalLimitsGroupInfos.builder().currentLimits(c1).applicability(SIDE1).build(),
+ OperationalLimitsGroupInfos.builder().currentLimits(c2).applicability(SIDE2).build()
)
)
.build();
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java
index f59bf6bd3..49253cb29 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInBusBreakerTest.java
@@ -21,6 +21,7 @@
import java.util.UUID;
import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;
import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat;
@@ -110,13 +111,13 @@ void testCreateLineOptionalParameters3() throws Exception {
.busOrBusbarSectionId1("bus1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("bus2")
- .operationalLimitsGroups2(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder()
.currentLimits(
CurrentLimitsInfos.builder().permanentLimit(1.0).temporaryLimits(Collections.emptyList()).build()
)
- .id("limitSet1")
+ .id("limitSet1").applicability(SIDE2)
.build()
)
)
@@ -144,21 +145,19 @@ void testCreateLineOptionalParameters4() throws Exception {
.busOrBusbarSectionId1("bus1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("bus2")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.0).temporaryLimits(Collections.emptyList()).build()
- ).build()
+ ).applicability(SIDE1).build()
)
)
- .operationalLimitsGroups2(null)
.build();
String lineCreationInfosPermanentLimitOKJson = getJsonBody(lineCreationInfosPermanentLimitOK, null);
mockMvc.perform(post(getNetworkModificationUri()).content(lineCreationInfosPermanentLimitOKJson).contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
- lineCreationInfosPermanentLimitOK.setOperationalLimitsGroups2(null); // if permanentLimit is null then no currentLimit created
LineCreationInfos createdModification = (LineCreationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0);
assertThat(createdModification).recursivelyEquals(lineCreationInfosPermanentLimitOK);
@@ -177,12 +176,12 @@ void testCreateLineOptionalParameters5() throws Exception {
.busOrBusbarSectionId1("bus1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("bus2")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder()
.currentLimits(
CurrentLimitsInfos.builder().permanentLimit(-1.0).build())
- .build()
+ .applicability(SIDE1).build()
)
)
.build();
@@ -204,11 +203,11 @@ void testCreateLineOptionalParameters6() throws Exception {
.busOrBusbarSectionId1("bus1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("bus2")
- .operationalLimitsGroups2(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(1.0).build())
- .build()
+ .applicability(SIDE2).build()
)
)
.build();
@@ -240,18 +239,14 @@ protected ModificationInfos buildModification() {
.b2(20.0)
.voltageLevelId1("v1")
.busOrBusbarSectionId1("bus1")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.).temporaryLimits(Collections.emptyList()).build())
- .build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ .applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.).temporaryLimits(Collections.emptyList()).build())
- .build()
+ .applicability(SIDE2).build()
)
)
.voltageLevelId2("v2")
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java
index d4872349b..f6c645256 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/LineCreationInNodeBreakerTest.java
@@ -21,6 +21,7 @@
import java.util.*;
import static org.gridsuite.modification.NetworkModificationException.Type.*;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;
import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
import static org.junit.jupiter.api.Assertions.*;
@@ -114,18 +115,14 @@ void testCreateLineWithOnlyPermanentCurrentLimits() throws Exception {
.busOrBusbarSectionId1("1A")
.voltageLevelId2("v1")
.busOrBusbarSectionId2("1.1")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.).build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(6.).build()
- ).build()
+ CurrentLimitsInfos.builder().permanentLimit(6.).build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn1LineEdited")
@@ -141,11 +138,10 @@ void testCreateLineWithOnlyPermanentCurrentLimits() throws Exception {
.andExpect(status().isOk()).andReturn();
LineCreationInfos createdModification = (LineCreationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0);
- assertEquals(5., createdModification.getOperationalLimitsGroups1().get(0).getCurrentLimits().getPermanentLimit(), 0.);
- assertEquals(6., createdModification.getOperationalLimitsGroups2().get(0).getCurrentLimits().getPermanentLimit(), 0.);
- assertTrue(createdModification.getOperationalLimitsGroups1().get(0).getCurrentLimits().getTemporaryLimits().isEmpty());
- assertTrue(createdModification.getOperationalLimitsGroups2().get(0).getCurrentLimits().getTemporaryLimits().isEmpty());
-
+ assertEquals(5., createdModification.getOperationalLimitsGroups().get(0).getCurrentLimits().getPermanentLimit(), 0.);
+ assertEquals(6., createdModification.getOperationalLimitsGroups().get(1).getCurrentLimits().getPermanentLimit(), 0.);
+ assertTrue(createdModification.getOperationalLimitsGroups().get(0).getCurrentLimits().getTemporaryLimits().isEmpty());
+ assertTrue(createdModification.getOperationalLimitsGroups().get(1).getCurrentLimits().getTemporaryLimits().isEmpty());
testNetworkModificationsCount(getGroupId(), 1);
}
@@ -164,25 +160,21 @@ void testCreateLineWithOnlyTemporaryCurrentLimits() throws Exception {
.busOrBusbarSectionId1("1A")
.voltageLevelId2("v1")
.busOrBusbarSectionId2("1.1")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder()
.temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").value(200.0).acceptableDuration(600).build()))
.build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder()
.temporaryLimits(List.of(
CurrentTemporaryLimitCreationInfos.builder().name("IT10").value(200.0).acceptableDuration(600).build(),
CurrentTemporaryLimitCreationInfos.builder().name("IT20").value(100.0).acceptableDuration(1200).build()))
.build()
- ).build()
- )
+ ).applicability(SIDE2).build()
+ )
)
.connectionName1("cn1LineEdited")
.connectionDirection1(ConnectablePosition.Direction.BOTTOM)
@@ -197,10 +189,10 @@ void testCreateLineWithOnlyTemporaryCurrentLimits() throws Exception {
.andExpect(status().isOk()).andReturn();
LineCreationInfos createdModification = (LineCreationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0);
- assertNull(createdModification.getOperationalLimitsGroups1().get(0).getCurrentLimits().getPermanentLimit());
- assertNull(createdModification.getOperationalLimitsGroups2().get(0).getCurrentLimits().getPermanentLimit());
- assertEquals(1, createdModification.getOperationalLimitsGroups1().get(0).getCurrentLimits().getTemporaryLimits().size());
- assertEquals(2, createdModification.getOperationalLimitsGroups2().get(0).getCurrentLimits().getTemporaryLimits().size());
+ assertNull(createdModification.getOperationalLimitsGroups().get(0).getCurrentLimits().getPermanentLimit());
+ assertNull(createdModification.getOperationalLimitsGroups().get(1).getCurrentLimits().getPermanentLimit());
+ assertEquals(1, createdModification.getOperationalLimitsGroups().get(0).getCurrentLimits().getTemporaryLimits().size());
+ assertEquals(2, createdModification.getOperationalLimitsGroups().get(1).getCurrentLimits().getTemporaryLimits().size());
testNetworkModificationsCount(getGroupId(), 1);
}
@@ -220,24 +212,20 @@ void testCreateLineWithBothCurrentLimits() throws Exception {
.busOrBusbarSectionId1("1A")
.voltageLevelId2("v1")
.busOrBusbarSectionId2("1.1")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder()
.permanentLimit(200.)
.temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").value(200.0).acceptableDuration(600).build()))
.build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder()
.permanentLimit(100.)
.temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT20").value(600.0).acceptableDuration(1200).build()))
- .build()
- ).build()
+ .build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn1LineEdited")
@@ -256,15 +244,15 @@ void testCreateLineWithBothCurrentLimits() throws Exception {
.andExpect(status().isOk()).andReturn();
LineCreationInfos createdModification = (LineCreationInfos) networkModificationRepository.getModifications(getGroupId(), false, true).get(0);
- assertEquals(200., createdModification.getOperationalLimitsGroups1().get(0).getCurrentLimits().getPermanentLimit(), 0.);
- assertEquals(100., createdModification.getOperationalLimitsGroups2().get(0).getCurrentLimits().getPermanentLimit(), 0.);
- assertEquals(1, createdModification.getOperationalLimitsGroups1().get(0).getCurrentLimits().getTemporaryLimits().size());
- assertEquals(1, createdModification.getOperationalLimitsGroups2().get(0).getCurrentLimits().getTemporaryLimits().size());
+ assertEquals(200., createdModification.getOperationalLimitsGroups().get(0).getCurrentLimits().getPermanentLimit(), 0.);
+ assertEquals(100., createdModification.getOperationalLimitsGroups().get(1).getCurrentLimits().getPermanentLimit(), 0.);
+ assertEquals(1, createdModification.getOperationalLimitsGroups().get(0).getCurrentLimits().getTemporaryLimits().size());
+ assertEquals(1, createdModification.getOperationalLimitsGroups().get(1).getCurrentLimits().getTemporaryLimits().size());
testNetworkModificationsCount(getGroupId(), 1);
assertEquals(
- "LineCreationInfos(super=BranchCreationInfos(super=EquipmentCreationInfos(super=EquipmentModificationInfos(super=ModificationInfos(uuid=null, type=LINE_CREATION, date=null, stashed=false, messageType=null, messageValues=null, activated=true), equipmentId=idLineEdited, properties=null), equipmentName=nameLineEdited), r=110.0, x=110.0, voltageLevelId1=v2, voltageLevelId2=v1, busOrBusbarSectionId1=1A, busOrBusbarSectionId2=1.1, operationalLimitsGroups1=[OperationalLimitsGroupInfos(id=null, currentLimits=CurrentLimitsInfos(permanentLimit=200.0, temporaryLimits=[CurrentTemporaryLimitCreationInfos(name=IT10, value=200.0, acceptableDuration=600)]))], operationalLimitsGroups2=[OperationalLimitsGroupInfos(id=null, currentLimits=CurrentLimitsInfos(permanentLimit=100.0, temporaryLimits=[CurrentTemporaryLimitCreationInfos(name=IT20, value=600.0, acceptableDuration=1200)]))], selectedOperationalLimitsGroup1=null, selectedOperationalLimitsGroup2=null, connectionName1=cn1LineEdited, connectionDirection1=BOTTOM, connectionName2=cn2LineEdited, connectionDirection2=TOP, connectionPosition1=0, connectionPosition2=0, connected1=true, connected2=false), g1=15.0, b1=15.0, g2=25.0, b2=25.0)",
+ "LineCreationInfos(super=BranchCreationInfos(super=EquipmentCreationInfos(super=EquipmentModificationInfos(super=ModificationInfos(uuid=null, type=LINE_CREATION, date=null, stashed=false, messageType=null, messageValues=null, activated=true), equipmentId=idLineEdited, properties=null), equipmentName=nameLineEdited), r=110.0, x=110.0, voltageLevelId1=v2, voltageLevelId2=v1, busOrBusbarSectionId1=1A, busOrBusbarSectionId2=1.1, operationalLimitsGroups=[OperationalLimitsGroupInfos(id=null, currentLimits=CurrentLimitsInfos(permanentLimit=200.0, temporaryLimits=[CurrentTemporaryLimitCreationInfos(name=IT10, value=200.0, acceptableDuration=600)]), applicability=SIDE1), OperationalLimitsGroupInfos(id=null, currentLimits=CurrentLimitsInfos(permanentLimit=100.0, temporaryLimits=[CurrentTemporaryLimitCreationInfos(name=IT20, value=600.0, acceptableDuration=1200)]), applicability=SIDE2)], selectedOperationalLimitsGroup1=null, selectedOperationalLimitsGroup2=null, connectionName1=cn1LineEdited, connectionDirection1=BOTTOM, connectionName2=cn2LineEdited, connectionDirection2=TOP, connectionPosition1=0, connectionPosition2=0, connected1=true, connected2=false), g1=15.0, b1=15.0, g2=25.0, b2=25.0)",
lineCreation.toString()
);
}
@@ -316,18 +304,14 @@ protected ModificationInfos buildModificationUpdate() {
.busOrBusbarSectionId1("1A")
.voltageLevelId2("v1")
.busOrBusbarSectionId2("1.1")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.).temporaryLimits(Collections.emptyList()).build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.).temporaryLimits(Collections.emptyList()).build()
- ).build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn1LineEdited")
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java
index 1670f703b..b01a81c8d 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationBusBreakerTest.java
@@ -24,6 +24,7 @@
import java.util.UUID;
import static org.gridsuite.modification.NetworkModificationException.Type.BUS_NOT_FOUND;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.server.impacts.TestImpactUtils.testBranchCreationImpacts;
import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;
import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
@@ -60,18 +61,14 @@ protected ModificationInfos buildModification() {
.voltageLevelId2("v12")
.busOrBusbarSectionId2("bus12")
.connected2(true)
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(3.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT5").acceptableDuration(98647).value(45.).build())).build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
- ).build()
+ CurrentLimitsInfos.builder().permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn201")
@@ -180,18 +177,15 @@ protected ModificationInfos buildModificationUpdate() {
.busOrBusbarSectionId1("bus1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("bus3")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
- OperationalLimitsGroupInfos.builder().currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(3.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT5").acceptableDuration(98647).value(45.).build())).build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
- OperationalLimitsGroupInfos.builder().currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
- ).build()
+ OperationalLimitsGroupInfos.builder().currentLimits(CurrentLimitsInfos.builder()
+ .permanentLimit(3.)
+ .temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT5").acceptableDuration(98647).value(45.).build())).build()
+ ).applicability(SIDE1).build(),
+ OperationalLimitsGroupInfos.builder().currentLimits(CurrentLimitsInfos.builder()
+ .permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn2012")
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java
index 4f70286a7..ac619a863 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationMixedBreakerTest.java
@@ -21,6 +21,7 @@
import java.util.Map;
import java.util.UUID;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;
import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
import static org.junit.jupiter.api.Assertions.*;
@@ -162,22 +163,20 @@ protected ModificationInfos buildModificationUpdate() {
.busOrBusbarSectionId1("bus1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("bus3")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder()
.currentLimits(CurrentLimitsInfos.builder()
.permanentLimit(3.)
.temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT5").acceptableDuration(98647).value(45.).build()))
.build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder()
- .currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
- ).build()
+ .currentLimits(CurrentLimitsInfos.builder()
+ .permanentLimit(2.)
+ .temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build()))
+ .build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn2012")
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java
index a5aa87997..9750f636e 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/TwoWindingsTransformerCreationNodeBreakerTest.java
@@ -26,6 +26,7 @@
import java.util.UUID;
import static org.gridsuite.modification.NetworkModificationException.Type.TWO_WINDINGS_TRANSFORMER_ALREADY_EXISTS;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.server.impacts.TestImpactUtils.testBranchCreationImpacts;
import static org.gridsuite.modification.server.report.NetworkModificationServerReportResourceBundle.ERROR_MESSAGE_KEY;
import static org.gridsuite.modification.server.utils.TestUtils.assertLogMessage;
@@ -62,21 +63,17 @@ protected ModificationInfos buildModification() {
.voltageLevelId2("v2")
.busOrBusbarSectionId2("1A")
.connected2(true)
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(3.).temporaryLimits(List.of(
CurrentTemporaryLimitCreationInfos.builder().name("IT5").acceptableDuration(2147483647).value(671.).build()
)
).build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
- ).build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn201")
@@ -187,18 +184,14 @@ protected ModificationInfos buildModificationUpdate() {
.busOrBusbarSectionId1("1.1")
.voltageLevelId2("v2")
.busOrBusbarSectionId2("1A")
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(3.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT5").acceptableDuration(98647).value(45.).build())).build()
- ).build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ ).applicability(SIDE1).build(),
OperationalLimitsGroupInfos.builder().currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
- ).build()
+ CurrentLimitsInfos.builder().permanentLimit(2.).temporaryLimits(List.of(CurrentTemporaryLimitCreationInfos.builder().name("IT10").acceptableDuration(683647).value(791.).build())).build()
+ ).applicability(SIDE2).build()
)
)
.connectionName1("cn2012")
@@ -371,7 +364,7 @@ void testCreateTwoWindingsTransformerWithRatioTapChangerInNodeBreaker() throws E
testCreateTwoWindingsTransformerInNodeBreaker(twoWindingsTransformerCreationInfos2, 2);
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), equipmentId=id2wt1WithRatioTapChanger2, properties=null), equipmentName=2wtName), r=400.0, x=300.0, voltageLevelId1=v1, voltageLevelId2=v4, busOrBusbarSectionId1=1.1, busOrBusbarSectionId2=1.A, operationalLimitsGroups1=null, operationalLimitsGroups2=null, selectedOperationalLimitsGroup1=null, selectedOperationalLimitsGroup2=null, connectionName1=null, connectionDirection1=TOP, connectionName2=null, connectionDirection2=TOP, connectionPosition1=null, connectionPosition2=null, connected1=true, connected2=true), g=100.0, b=200.0, ratedU1=1000.0, ratedU2=1010.0, ratedS=null, ratioTapChanger=RatioTapChangerCreationInfos(super=TapChangerCreationInfos(lowTapPosition=0, tapPosition=1, regulating=true, targetDeadband=null, regulatingTerminalId=v1load, regulatingTerminalType=LOAD, regulatingTerminalVlId=v1, steps=[TapChangerStepCreationInfos(index=0, rho=1.0, r=39.78473, x=39.784725, g=0.0, b=0.0, alpha=0.0), TapChangerStepCreationInfos(index=0, rho=1.0, r=39.78474, x=39.784726, g=0.0, b=0.0, alpha=0.0), TapChangerStepCreationInfos(index=0, rho=1.0, r=39.78475, x=39.784727, g=0.0, b=0.0, alpha=0.0)], loadTapChangingCapabilities=true), targetV=220.0), phaseTapChanger=null)",
+ "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), equipmentId=id2wt1WithRatioTapChanger2, properties=null), equipmentName=2wtName), r=400.0, x=300.0, voltageLevelId1=v1, voltageLevelId2=v4, busOrBusbarSectionId1=1.1, busOrBusbarSectionId2=1.A, operationalLimitsGroups=null, selectedOperationalLimitsGroup1=null, selectedOperationalLimitsGroup2=null, connectionName1=null, connectionDirection1=TOP, connectionName2=null, connectionDirection2=TOP, connectionPosition1=null, connectionPosition2=null, connected1=true, connected2=true), g=100.0, b=200.0, ratedU1=1000.0, ratedU2=1010.0, ratedS=null, ratioTapChanger=RatioTapChangerCreationInfos(super=TapChangerCreationInfos(lowTapPosition=0, tapPosition=1, regulating=true, targetDeadband=null, regulatingTerminalId=v1load, regulatingTerminalType=LOAD, regulatingTerminalVlId=v1, steps=[TapChangerStepCreationInfos(index=0, rho=1.0, r=39.78473, x=39.784725, g=0.0, b=0.0, alpha=0.0), TapChangerStepCreationInfos(index=0, rho=1.0, r=39.78474, x=39.784726, g=0.0, b=0.0, alpha=0.0), TapChangerStepCreationInfos(index=0, rho=1.0, r=39.78475, x=39.784727, g=0.0, b=0.0, alpha=0.0)], loadTapChangingCapabilities=true), targetV=220.0), phaseTapChanger=null)",
twoWindingsTransformerCreationInfos2.toString()
);
diff --git a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java
index a71458102..3df4d22ff 100644
--- a/src/test/java/org/gridsuite/modification/server/service/BuildTest.java
+++ b/src/test/java/org/gridsuite/modification/server/service/BuildTest.java
@@ -66,6 +66,7 @@
import java.util.concurrent.*;
import static com.powsybl.iidm.network.ReactiveLimitsKind.MIN_MAX;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.server.impacts.TestImpactUtils.*;
import static org.gridsuite.modification.server.service.BuildWorkerService.CANCEL_MESSAGE;
import static org.junit.jupiter.api.Assertions.*;
@@ -537,7 +538,7 @@ void runBuildTest(final MockWebServer server) throws Exception {
.connectionPosition(0)
.terminalConnected(true)
.build()));
- entities2.add(ModificationEntity.fromDTO(LineCreationInfos.builder().equipmentId("newLine").equipmentName("newLine").r(1.0).x(2.0).g1(3.0).b1(4.0).g2(5.0).b2(6.0).voltageLevelId1("v1").busOrBusbarSectionId1("1.1").voltageLevelId2("v2").busOrBusbarSectionId2("1B").operationalLimitsGroups1(null).operationalLimitsGroups2(null).connectionName1("cn101").connectionDirection1(ConnectablePosition.Direction.TOP).connectionName2("cn102").connectionDirection2(ConnectablePosition.Direction.TOP).connected1(true).connected2(true).build()));
+ entities2.add(ModificationEntity.fromDTO(LineCreationInfos.builder().equipmentId("newLine").equipmentName("newLine").r(1.0).x(2.0).g1(3.0).b1(4.0).g2(5.0).b2(6.0).voltageLevelId1("v1").busOrBusbarSectionId1("1.1").voltageLevelId2("v2").busOrBusbarSectionId2("1B").operationalLimitsGroups(null).connectionName1("cn101").connectionDirection1(ConnectablePosition.Direction.TOP).connectionName2("cn102").connectionDirection2(ConnectablePosition.Direction.TOP).connected1(true).connected2(true).build()));
List tapChangerStepCreationEmbeddables = new ArrayList<>();
tapChangerStepCreationEmbeddables.add(new TapChangerStepCreationEmbeddable(TapChangerType.PHASE, 1, 1, 0, 0, 0, 0, 0.));
@@ -593,18 +594,14 @@ void runBuildTest(final MockWebServer server) throws Exception {
.voltageLevelId2("v2")
.busOrBusbarSectionId2("1A")
.connected2(true)
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(3.).build())
- .build()
- )
- )
- .operationalLimitsGroups2(
- List.of(
+ CurrentLimitsInfos.builder().permanentLimit(3.).build()).applicability(SIDE1)
+ .build(),
OperationalLimitsGroupInfos.builder().currentLimits(
- CurrentLimitsInfos.builder().permanentLimit(2.).build())
- .build()
+ CurrentLimitsInfos.builder().permanentLimit(2.).build()).applicability(SIDE2)
+ .build()
)
)
.connectionName1("cn201")
diff --git a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java
index e8ba353d5..4a3ddb6be 100644
--- a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java
+++ b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java
@@ -34,6 +34,7 @@
import static com.powsybl.iidm.network.StaticVarCompensator.RegulationMode.VOLTAGE;
import static org.gridsuite.modification.NetworkModificationException.Type.*;
+import static org.gridsuite.modification.dto.OperationalLimitsGroupInfos.Applicability.*;
import static org.gridsuite.modification.dto.VoltageRegulationType.DISTANT;
import static org.gridsuite.modification.server.utils.TestUtils.assertRequestsCount;
import static org.gridsuite.modification.server.utils.assertions.Assertions.assertThat;
@@ -404,42 +405,46 @@ void testShuntCompensatorCreation() {
void testLineCreation() {
var createLineEntity1 = ModificationEntity.fromDTO(LineCreationInfos.builder().equipmentId("idLine1").equipmentName("nameLine1").r(1.0).x(1.1).g1(10.0).b1(11.0).g2(100.0).b2(100.1).voltageLevelId1("vlId11").busOrBusbarSectionId1("busId11").voltageLevelId2("vlId12").busOrBusbarSectionId2("busId12").connectionName1("cn11").connectionDirection1(ConnectablePosition.Direction.TOP).connectionName2("cn22").connectionDirection2(ConnectablePosition.Direction.TOP).build());
var createLineEntity2 = ModificationEntity.fromDTO(LineCreationInfos.builder().equipmentId("idLine2").equipmentName("nameLine2").r(2.0).x(2.2).g1(20.0).b1(22.0).g2(200.0).b2(200.2).voltageLevelId1("vlId21").busOrBusbarSectionId1("busId21").voltageLevelId2("vlId22").busOrBusbarSectionId2("busId22").connectionName1("cn33").connectionDirection1(ConnectablePosition.Direction.TOP).connectionName2("cn44").connectionDirection2(ConnectablePosition.Direction.BOTTOM)
- .operationalLimitsGroups2(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.0).temporaryLimits(Collections.emptyList()).build())
+ .applicability(SIDE2)
.build()
)
)
.build());
var createLineEntity3 = ModificationEntity.fromDTO(LineCreationInfos.builder().equipmentId("idLine3").equipmentName("nameLine3").r(3.0).x(3.3).g1(30.0).b1(33.0).g2(300.0).b2(300.3).voltageLevelId1("vlId31").busOrBusbarSectionId1("busId31").voltageLevelId2("vlId32").busOrBusbarSectionId2("busId32").connectionName1("cn55").connectionDirection1(ConnectablePosition.Direction.TOP).connectionName2("cn66").connectionDirection2(ConnectablePosition.Direction.TOP)
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.0).temporaryLimits(Collections.emptyList()).build())
+ .applicability(SIDE1)
.build()
)
)
.build());
var createLineEntity4 = ModificationEntity.fromDTO(LineCreationInfos.builder().equipmentId("idLine4").equipmentName("nameLine4").r(3.0).x(3.3).g1(null).b1(null).g2(null).b2(null).voltageLevelId1("vlId41").busOrBusbarSectionId1("busId41").voltageLevelId2("vlId42").busOrBusbarSectionId2("busId42").connectionName1("cn77").connectionDirection1(ConnectablePosition.Direction.TOP).connectionName2("cn88").connectionDirection2(ConnectablePosition.Direction.BOTTOM)
- .operationalLimitsGroups1(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(5.0).temporaryLimits(Collections.emptyList()).build())
+ .applicability(SIDE1)
.build()
)
)
- .operationalLimitsGroups2(
+ .operationalLimitsGroups(
List.of(
OperationalLimitsGroupInfos.builder().currentLimits(
CurrentLimitsInfos.builder().permanentLimit(4.0).temporaryLimits(Collections.emptyList()).build())
+ .applicability(SIDE2)
.build()
)
)
.build());
networkModificationRepository.saveModifications(TEST_GROUP_ID, List.of(createLineEntity1, createLineEntity2, createLineEntity3, createLineEntity4));
- assertRequestsCount(2, 7, 0, 0);
+ assertRequestsCount(2, 6, 0, 0);
List modificationInfos = networkModificationRepository.getModifications(TEST_GROUP_ID, true, true);
assertEquals(4, modificationInfos.size());
@@ -460,17 +465,17 @@ void testLineCreation() {
networkModificationRepository.deleteModifications(TEST_GROUP_ID, List.of(createLineEntity2.getId(), createLineEntity3.getId()));
// TODO : Due to an issue the deletion counter is not deterministic
// https://github.com/jdbc-observations/datasource-proxy/issues/123
- assertRequestsCount(12, 0, 0);
+ assertRequestsCount(10, 0, 0);
SQLStatementCountValidator.reset();
assertEquals(2, networkModificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
- assertRequestsCount(12, 0, 0, 0);
+ assertRequestsCount(8, 0, 0, 0);
SQLStatementCountValidator.reset();
networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true);
// TODO : Due to an issue the deletion counter is not deterministic
// https://github.com/jdbc-observations/datasource-proxy/issues/123
- assertRequestsCount(12, 0, 0);
+ assertRequestsCount(9, 0, 0);
assertThrows(NetworkModificationException.class, () -> networkModificationRepository.getModifications(TEST_GROUP_ID, true, true),
new NetworkModificationException(MODIFICATION_GROUP_NOT_FOUND, TEST_GROUP_ID.toString()).getMessage());
@@ -961,7 +966,7 @@ void testLineAttachToVoltageLevel() {
SQLStatementCountValidator.reset();
networkModificationRepository.deleteModifications(TEST_GROUP_ID, List.of(lineAttachToEntity1.getId(),
lineAttachToEntity2.getId()));
- assertRequestsCount(12, 0, 0, 12);
+ assertRequestsCount(10, 0, 0, 12);
SQLStatementCountValidator.reset();
networkModificationRepository.deleteModificationGroup(TEST_GROUP_ID, true);