diff --git a/pom.xml b/pom.xml
index c51e3df94..7b3f41608 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,7 +52,7 @@
gridsuite
org.gridsuite:network-modification-server
- 0.43.0
+ 0.44.0
1.31.0
2.14.1
diff --git a/src/main/java/org/gridsuite/modification/server/entities/EntityRegistry.java b/src/main/java/org/gridsuite/modification/server/entities/EntityRegistry.java
index a3a61c8ee..ae45b7142 100644
--- a/src/main/java/org/gridsuite/modification/server/entities/EntityRegistry.java
+++ b/src/main/java/org/gridsuite/modification/server/entities/EntityRegistry.java
@@ -10,6 +10,7 @@
import java.util.Map;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.*;
import org.gridsuite.modification.server.entities.equipment.creation.*;
import org.gridsuite.modification.server.entities.equipment.deletion.*;
import org.gridsuite.modification.server.entities.equipment.modification.*;
@@ -20,8 +21,7 @@
import org.gridsuite.modification.server.entities.equipment.modification.attribute.IntegerEquipmentAttributeModificationEntity;
import org.gridsuite.modification.server.entities.equipment.modification.attribute.StringEquipmentAttributeModificationEntity;
import org.gridsuite.modification.server.entities.equipment.modification.byfilter.*;
-import org.gridsuite.modification.server.entities.tabular.TabularCreationEntity;
-import org.gridsuite.modification.server.entities.tabular.TabularModificationEntity;
+import org.gridsuite.modification.server.entities.tabular.TabularModificationsEntity;
/**
* @author Ayoub LABIDI
@@ -50,7 +50,6 @@ private EntityRegistry() {
register(ConverterStationCreationInfos.class, ConverterStationCreationEntity.class);
register(LccCreationInfos.class, LccCreationEntity.class);
register(LccConverterStationCreationInfos.class, LccConverterStationCreationEntity.class);
- register(TabularCreationInfos.class, TabularCreationEntity.class);
register(CreateVoltageLevelSectionInfos.class, CreateVoltageLevelSectionEntity.class);
// // modification
@@ -64,8 +63,6 @@ private EntityRegistry() {
register(ShuntCompensatorModificationInfos.class, ShuntCompensatorModificationEntity.class);
register(VscModificationInfos.class, VscModificationEntity.class);
register(ConverterStationModificationInfos.class, ConverterStationModificationEntity.class);
- register(TabularModificationInfos.class, TabularModificationEntity.class);
- register(LimitSetsTabularModificationInfos.class, TabularModificationEntity.class);
register(ByFormulaModificationInfos.class, ByFormulaModificationEntity.class);
register(ModificationByAssignmentInfos.class, ModificationByAssignmentEntity.class);
register(EquipmentAttributeModificationInfos.class, EquipmentAttributeModificationEntity.class);
@@ -76,6 +73,11 @@ private EntityRegistry() {
register(CreateVoltageLevelTopologyInfos.class, CreateVoltageLevelTopologyEntity.class);
register(MoveVoltageLevelFeederBaysInfos.class, MoveVoltageLevelFeederBaysEntity.class);
+ // tabular
+ register(TabularCreationInfos.class, TabularModificationsEntity.class);
+ register(TabularModificationInfos.class, TabularModificationsEntity.class);
+ register(LimitSetsTabularModificationInfos.class, TabularModificationsEntity.class);
+
// // attatching and splitting
register(LineAttachToVoltageLevelInfos.class, LineAttachToVoltageLevelEntity.class);
register(LineSplitWithVoltageLevelInfos.class, LineSplitWithVoltageLevelEntity.class);
diff --git a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularBaseEntity.java b/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularBaseEntity.java
deleted file mode 100644
index 9f350afdf..000000000
--- a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularBaseEntity.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- Copyright (c) 2021, RTE (http://www.rte-france.com)
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-package org.gridsuite.modification.server.entities.tabular;
-
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.FetchType;
-import jakarta.persistence.JoinColumn;
-import jakarta.persistence.MappedSuperclass;
-import jakarta.persistence.OneToMany;
-import jakarta.persistence.OrderColumn;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import org.gridsuite.modification.dto.ModificationInfos;
-import org.gridsuite.modification.dto.TabularBaseInfos;
-import org.gridsuite.modification.server.entities.ModificationEntity;
-
-import java.util.List;
-
-/**
- * @author Franck Lecuyer
- */
-@NoArgsConstructor
-@Getter
-@MappedSuperclass
-public class TabularBaseEntity extends ModificationEntity {
-
- @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
- @JoinColumn(name = "tabular_modification_id")
- @OrderColumn(name = "insert_position")
- private List properties;
-
- private String csvFilename;
-
- protected TabularBaseEntity(TabularBaseInfos tabularBaseInfos) {
- super(tabularBaseInfos);
- assignAttributes(tabularBaseInfos);
- }
-
- @Override
- public void update(ModificationInfos modificationInfos) {
- super.update(modificationInfos);
- assignAttributes((TabularBaseInfos) modificationInfos);
- }
-
- private void assignAttributes(TabularBaseInfos tabularBaseInfos) {
- List newProperties = tabularBaseInfos.getProperties() == null ? null :
- tabularBaseInfos.getProperties().stream()
- .map(TabularPropertyEntity::new)
- .toList();
- if (this.properties != null) {
- this.properties.clear();
- if (newProperties != null) {
- this.properties.addAll(newProperties);
- }
- } else {
- this.properties = newProperties;
- }
- this.csvFilename = tabularBaseInfos.getCsvFilename();
- }
-}
diff --git a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularCreationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularCreationEntity.java
deleted file mode 100644
index dbd5abc30..000000000
--- a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularCreationEntity.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- Copyright (c) 2024, RTE (http://www.rte-france.com)
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-package org.gridsuite.modification.server.entities.tabular;
-
-import jakarta.persistence.CascadeType;
-import jakarta.persistence.Column;
-import jakarta.persistence.Entity;
-import jakarta.persistence.EnumType;
-import jakarta.persistence.Enumerated;
-import jakarta.persistence.OneToMany;
-import jakarta.persistence.OrderColumn;
-import jakarta.persistence.Table;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.NonNull;
-import lombok.Setter;
-import org.gridsuite.modification.ModificationType;
-import org.gridsuite.modification.dto.ModificationInfos;
-import org.gridsuite.modification.dto.TabularCreationInfos;
-import org.gridsuite.modification.server.entities.ModificationEntity;
-import org.springframework.util.CollectionUtils;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author Franck Lecuyer
- */
-@NoArgsConstructor
-@Getter
-@Setter
-@Entity
-@Table(name = "tabular_creation")
-public class TabularCreationEntity extends TabularBaseEntity {
-
- @Column(name = "creationType")
- @Enumerated(EnumType.STRING)
- private ModificationType creationType;
-
- @OneToMany(cascade = CascadeType.ALL)
- @OrderColumn
- private List creations;
-
- public TabularCreationEntity(@NonNull TabularCreationInfos tabularCreationInfos) {
- super(tabularCreationInfos);
- assignAttributes(tabularCreationInfos);
- }
-
- @Override
- public TabularCreationInfos toModificationInfos() {
- List creationsInfos = creations.stream().map(ModificationEntity::toModificationInfos).collect(Collectors.toList());
- return TabularCreationInfos.builder()
- .date(getDate())
- .uuid(getId())
- .stashed(getStashed())
- .activated(getActivated())
- .creationType(creationType)
- .creations(creationsInfos)
- .properties(CollectionUtils.isEmpty(getProperties()) ? null : getProperties().stream()
- .map(TabularPropertyEntity::toInfos)
- .toList())
- .csvFilename(getCsvFilename())
- .build();
- }
-
- @Override
- public void update(@NonNull ModificationInfos modificationInfos) {
- super.update(modificationInfos);
- assignAttributes((TabularCreationInfos) modificationInfos);
- }
-
- private void assignAttributes(TabularCreationInfos tabularCreationInfos) {
- creationType = tabularCreationInfos.getCreationType();
- if (creations == null) {
- creations = tabularCreationInfos.getCreations().stream()
- .map(ModificationEntity::fromDTO)
- .toList();
- } else {
- creations.clear();
- creations.addAll(tabularCreationInfos.getCreations().stream()
- .map(ModificationEntity::fromDTO)
- .toList());
- }
- }
-}
diff --git a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularModificationEntity.java
deleted file mode 100644
index c9af5f86b..000000000
--- a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularModificationEntity.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- Copyright (c) 2023, RTE (http://www.rte-france.com)
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-package org.gridsuite.modification.server.entities.tabular;
-
-import jakarta.persistence.*;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.NonNull;
-import lombok.Setter;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.gridsuite.modification.ModificationType;
-import org.gridsuite.modification.dto.*;
-import org.gridsuite.modification.server.entities.ModificationEntity;
-import org.springframework.util.CollectionUtils;
-
-/**
- * @author Etienne Homer
- */
-@NoArgsConstructor
-@Getter
-@Setter
-@Entity
-@Table(name = "tabular_modification")
-public class TabularModificationEntity extends TabularBaseEntity {
-
- @Column(name = "modificationType")
- @Enumerated(EnumType.STRING)
- private ModificationType modificationType;
-
- @OneToMany(cascade = CascadeType.ALL)
- @OrderColumn
- private List modifications;
-
- public TabularModificationEntity(@NonNull TabularModificationInfos tabularModificationInfos) {
- super(tabularModificationInfos);
- assignAttributes(tabularModificationInfos);
- }
-
- public TabularModificationEntity(@NonNull LimitSetsTabularModificationInfos tabularModificationInfos) {
- super(tabularModificationInfos);
- assignAttributes(tabularModificationInfos);
- }
-
- @Override
- public TabularModificationInfos toModificationInfos() {
- List modificationsInfos = modifications.stream().map(ModificationEntity::toModificationInfos).collect(Collectors.toList());
- return TabularModificationInfos.builder()
- .date(getDate())
- .uuid(getId())
- .stashed(getStashed())
- .activated(getActivated())
- .modificationType(modificationType)
- .modifications(modificationsInfos)
- .properties(CollectionUtils.isEmpty(getProperties()) ? null : getProperties().stream()
- .map(TabularPropertyEntity::toInfos)
- .toList())
- .csvFilename(getCsvFilename())
- .build();
- }
-
- @Override
- public void update(@NonNull ModificationInfos modificationInfos) {
- super.update(modificationInfos);
- assignAttributes((TabularModificationInfos) modificationInfos);
- }
-
- private void assignAttributes(TabularModificationInfos tabularModificationInfos) {
- modificationType = tabularModificationInfos.getModificationType();
- if (modifications == null) {
- modifications = tabularModificationInfos.getModifications().stream()
- .map(ModificationEntity::fromDTO)
- .collect(Collectors.toList());
- } else {
- modifications.clear();
- modifications.addAll(tabularModificationInfos.getModifications().stream()
- .map(ModificationEntity::fromDTO)
- .toList());
- }
- }
-}
diff --git a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularModificationsEntity.java b/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularModificationsEntity.java
new file mode 100644
index 000000000..36ef44d3c
--- /dev/null
+++ b/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularModificationsEntity.java
@@ -0,0 +1,118 @@
+/*
+ Copyright (c) 2025, RTE (http://www.rte-france.com)
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+package org.gridsuite.modification.server.entities.tabular;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.NonNull;
+import lombok.Setter;
+import org.gridsuite.modification.ModificationType;
+import org.gridsuite.modification.dto.ModificationInfos;
+import org.gridsuite.modification.dto.tabular.*;
+import org.gridsuite.modification.server.entities.ModificationEntity;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author David Braquart
+ */
+@NoArgsConstructor
+@Getter
+@Setter
+@Entity
+@Table(name = "tabular_modifications")
+public class TabularModificationsEntity extends ModificationEntity {
+
+ @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
+ @JoinColumn(name = "tabular_modification_id")
+ @OrderColumn(name = "insert_position")
+ private List properties;
+
+ private String csvFilename;
+
+ @Enumerated(EnumType.STRING)
+ private ModificationType modificationType;
+
+ @OneToMany(cascade = CascadeType.ALL)
+ @OrderColumn
+ private List modifications;
+
+ public TabularModificationsEntity(@NonNull TabularModificationInfos tabularModificationInfos) {
+ super(tabularModificationInfos);
+ assignAttributes(tabularModificationInfos);
+ }
+
+ public TabularModificationsEntity(@NonNull LimitSetsTabularModificationInfos tabularModificationInfos) {
+ super(tabularModificationInfos);
+ assignAttributes(tabularModificationInfos);
+ }
+
+ public TabularModificationsEntity(@NonNull TabularCreationInfos tabularCreationInfos) {
+ super(tabularCreationInfos);
+ assignAttributes(tabularCreationInfos);
+ }
+
+ @Override
+ public void update(ModificationInfos modificationInfos) {
+ super.update(modificationInfos);
+ assignAttributes((TabularBaseInfos) modificationInfos);
+ }
+
+ @Override
+ public TabularBaseInfos toModificationInfos() {
+ var builder = switch (ModificationType.valueOf(getType())) {
+ case ModificationType.TABULAR_CREATION -> TabularCreationInfos.builder();
+ case ModificationType.LIMIT_SETS_TABULAR_MODIFICATION -> LimitSetsTabularModificationInfos.builder();
+ default -> TabularModificationInfos.builder();
+ };
+ List modificationsInfos = modifications.stream().map(ModificationEntity::toModificationInfos).collect(Collectors.toList());
+ return builder
+ .date(getDate())
+ .uuid(getId())
+ .stashed(getStashed())
+ .activated(getActivated())
+ .modificationType(modificationType)
+ .modifications(modificationsInfos)
+ .properties(CollectionUtils.isEmpty(getProperties()) ? null : getProperties().stream()
+ .map(TabularPropertyEntity::toInfos)
+ .toList())
+ .csvFilename(getCsvFilename())
+ .build();
+ }
+
+ private void assignAttributes(TabularBaseInfos tabularBaseInfos) {
+ this.csvFilename = tabularBaseInfos.getCsvFilename();
+ modificationType = tabularBaseInfos.getModificationType();
+ // properties list
+ List newProperties = tabularBaseInfos.getProperties() == null ? null :
+ tabularBaseInfos.getProperties().stream()
+ .map(TabularPropertyEntity::new)
+ .toList();
+ if (this.properties != null) {
+ this.properties.clear();
+ if (newProperties != null) {
+ this.properties.addAll(newProperties);
+ }
+ } else {
+ this.properties = newProperties;
+ }
+ // modifications list
+ if (modifications == null) {
+ modifications = tabularBaseInfos.getModifications().stream()
+ .map(ModificationEntity::fromDTO)
+ .collect(Collectors.toList());
+ } else {
+ modifications.clear();
+ modifications.addAll(tabularBaseInfos.getModifications().stream()
+ .map(ModificationEntity::fromDTO)
+ .toList());
+ }
+ }
+}
diff --git a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularPropertyEntity.java b/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularPropertyEntity.java
index 397d830a2..db7da6912 100644
--- a/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularPropertyEntity.java
+++ b/src/main/java/org/gridsuite/modification/server/entities/tabular/TabularPropertyEntity.java
@@ -18,7 +18,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
-import org.gridsuite.modification.dto.TabularPropertyInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import java.util.UUID;
diff --git a/src/main/java/org/gridsuite/modification/server/repositories/GeneratorCreationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/GeneratorCreationRepository.java
index 230fdc167..315d8f395 100644
--- a/src/main/java/org/gridsuite/modification/server/repositories/GeneratorCreationRepository.java
+++ b/src/main/java/org/gridsuite/modification/server/repositories/GeneratorCreationRepository.java
@@ -34,20 +34,4 @@ public interface GeneratorCreationRepository extends JpaRepository subModificationIdsPart);
-
- @Modifying
- @Query(value = "BEGIN;" +
- "DELETE FROM tabular_creation_creations WHERE tabular_creation_entity_id = ?1 ;" +
- "DELETE FROM modification WHERE id IN ?2 ;" +
- "COMMIT;", nativeQuery = true)
- // This function is generic and can work on any creation
- void deleteTabularCreationCreations(UUID tabularModificationId, List subModificationIds);
-
- @Modifying
- @Query(value = "BEGIN;" +
- "DELETE FROM tabular_creation WHERE id = ?1 ;" +
- "DELETE FROM modification WHERE id = ?1 ;" +
- "COMMIT;", nativeQuery = true)
- // This function is generic and can work on any creation
- void deleteTabularCreationItself(UUID tabularModificationId);
}
diff --git a/src/main/java/org/gridsuite/modification/server/repositories/LineModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/LineModificationRepository.java
index a0cac072f..0aa459ae1 100644
--- a/src/main/java/org/gridsuite/modification/server/repositories/LineModificationRepository.java
+++ b/src/main/java/org/gridsuite/modification/server/repositories/LineModificationRepository.java
@@ -42,17 +42,17 @@ public interface LineModificationRepository extends JpaRepository subModificationIds);
@Modifying
@Query(value = "BEGIN;" +
- "DELETE FROM tabular_modification WHERE id = ?1 ;" +
+ "DELETE FROM tabular_modifications WHERE id = ?1 ;" +
"DELETE FROM modification WHERE id = ?1 ;" +
"COMMIT;", nativeQuery = true)
- // This function is generic and can work on any modification
+ // This function is generic and can work on any tabular modification/creation
void deleteTabularModificationItself(UUID tabularModificationId);
}
diff --git a/src/main/java/org/gridsuite/modification/server/repositories/ModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/ModificationRepository.java
index 93e97849f..6ec7ec599 100644
--- a/src/main/java/org/gridsuite/modification/server/repositories/ModificationRepository.java
+++ b/src/main/java/org/gridsuite/modification/server/repositories/ModificationRepository.java
@@ -49,18 +49,12 @@ public interface ModificationRepository extends JpaRepository findAllByIdInReverse(List uuids);
- @Query(value = "SELECT cast(modifications_id AS VARCHAR) FROM tabular_modification_modifications WHERE tabular_modification_entity_id = :uuid", nativeQuery = true)
+ @Query(value = "SELECT cast(modifications_id AS VARCHAR) FROM tabular_modifications_modifications WHERE tabular_modifications_entity_id = :uuid", nativeQuery = true)
List findSubModificationIdsByTabularModificationId(UUID uuid);
- @Query(value = "SELECT cast(modifications_id AS VARCHAR) FROM tabular_modification_modifications WHERE tabular_modification_entity_id = :uuid ORDER BY modifications_order", nativeQuery = true)
+ @Query(value = "SELECT cast(modifications_id AS VARCHAR) FROM tabular_modifications_modifications WHERE tabular_modifications_entity_id = :uuid ORDER BY modifications_order", nativeQuery = true)
List findSubModificationIdsByTabularModificationIdOrderByModificationsOrder(UUID uuid);
- @Query(value = "SELECT cast(creations_id AS VARCHAR) FROM tabular_creation_creations WHERE tabular_creation_entity_id = :uuid", nativeQuery = true)
- List findSubModificationIdsByTabularCreationId(UUID uuid);
-
- @Query(value = "SELECT cast(creations_id AS VARCHAR) FROM tabular_creation_creations WHERE tabular_creation_entity_id = :uuid ORDER BY creations_order", nativeQuery = true)
- List findSubModificationIdsByTabularCreationIdOrderByModificationsOrder(UUID uuid);
-
@Query(value = "SELECT cast(modification_id AS VARCHAR) FROM composite_modification_sub_modifications WHERE id = :uuid ORDER BY modifications_order", nativeQuery = true)
List findModificationIdsByCompositeModificationId(UUID uuid);
diff --git a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java
index ad9b63d24..038497488 100644
--- a/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java
+++ b/src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java
@@ -12,13 +12,12 @@
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.NetworkModificationException;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.*;
import org.gridsuite.modification.server.dto.ModificationMetadata;
import org.gridsuite.modification.server.elasticsearch.ModificationApplicationInfosService;
import org.gridsuite.modification.server.entities.*;
import org.gridsuite.modification.server.entities.equipment.modification.EquipmentModificationEntity;
-import org.gridsuite.modification.server.entities.tabular.TabularBaseEntity;
-import org.gridsuite.modification.server.entities.tabular.TabularCreationEntity;
-import org.gridsuite.modification.server.entities.tabular.TabularModificationEntity;
+import org.gridsuite.modification.server.entities.tabular.TabularModificationsEntity;
import org.gridsuite.modification.server.entities.tabular.TabularPropertyEntity;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@@ -322,6 +321,24 @@ private List reorderModifications(List extends Eq
private List extends EquipmentModificationEntity> loadTabularModificationSubEntities(List subModificationsUuids, ModificationType modificationType) {
List extends EquipmentModificationEntity> modifications;
switch (modificationType) {
+ case GENERATOR_CREATION -> {
+ // load generator modifications with curvePoints
+ modifications = generatorCreationRepository.findAllReactiveCapabilityCurvePointsByIdIn(subModificationsUuids).stream().toList();
+ // load properties too, it uses hibernate first-level cache to fill them up directly in modifications
+ generatorCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
+ }
+ case BATTERY_CREATION -> {
+ // load battery modifications with curvePoints
+ modifications = batteryCreationRepository.findAllReactiveCapabilityCurvePointsByIdIn(subModificationsUuids).stream().toList();
+ // load properties too, it uses hibernate first-level cache to fill them up directly in modifications
+ batteryCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
+ }
+ case LOAD_CREATION ->
+ // load Load modifications with properties
+ modifications = loadCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
+ case SHUNT_COMPENSATOR_CREATION ->
+ // load MCS modifications with properties
+ modifications = shuntCompensatorCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
case GENERATOR_MODIFICATION -> {
// load generator modifications with curvePoints
modifications = generatorModificationRepository.findAllReactiveCapabilityCurvePointsByIdIn(subModificationsUuids).stream().toList();
@@ -364,87 +381,34 @@ private List extends EquipmentModificationEntity> loadTabularModificationSubEn
return modifications;
}
- private TabularModificationInfos loadTabularModification(ModificationEntity modificationEntity) {
- TabularModificationEntity tabularModificationEntity = (TabularModificationEntity) modificationEntity;
+ private TabularBaseInfos loadTabularModification(TabularModificationsEntity tabularEntity) {
// fetch embedded modifications uuids only
- List subModificationsUuids = modificationRepository.findSubModificationIdsByTabularModificationIdOrderByModificationsOrder(modificationEntity.getId());
+ List subModificationsUuids = modificationRepository.findSubModificationIdsByTabularModificationIdOrderByModificationsOrder(tabularEntity.getId());
// optimized entities full loading, per type
- List extends EquipmentModificationEntity> modifications = loadTabularModificationSubEntities(subModificationsUuids, tabularModificationEntity.getModificationType());
+ List extends EquipmentModificationEntity> modifications = loadTabularModificationSubEntities(subModificationsUuids, tabularEntity.getModificationType());
// re-order the list of entities based on the ordered list of IDs
List orderedModifications = reorderModifications(modifications, subModificationsUuids);
- // then build DTOs
- var builder = TabularModificationInfos.builder();
- if (tabularModificationEntity.getType().equals(ModificationType.LIMIT_SETS_TABULAR_MODIFICATION.name())) {
- builder = LimitSetsTabularModificationInfos.builder();
- }
- return builder.uuid(tabularModificationEntity.getId())
- .date(tabularModificationEntity.getDate())
- .stashed(tabularModificationEntity.getStashed())
- .activated(tabularModificationEntity.getActivated())
- .modificationType(tabularModificationEntity.getModificationType())
+ var builder = switch (ModificationType.valueOf(tabularEntity.getType())) {
+ case ModificationType.TABULAR_CREATION -> TabularCreationInfos.builder();
+ case ModificationType.LIMIT_SETS_TABULAR_MODIFICATION -> LimitSetsTabularModificationInfos.builder();
+ default -> TabularModificationInfos.builder();
+ };
+ return builder.uuid(tabularEntity.getId())
+ .date(tabularEntity.getDate())
+ .stashed(tabularEntity.getStashed())
+ .activated(tabularEntity.getActivated())
+ .modificationType(tabularEntity.getModificationType())
.modifications(orderedModifications.stream().map(ModificationEntity::toModificationInfos).toList())
- .properties(CollectionUtils.isEmpty(tabularModificationEntity.getProperties()) ? null : tabularModificationEntity.getProperties().stream()
+ .properties(CollectionUtils.isEmpty(tabularEntity.getProperties()) ? null : tabularEntity.getProperties().stream()
.map(TabularPropertyEntity::toInfos)
.toList())
- .csvFilename(tabularModificationEntity.getCsvFilename())
+ .csvFilename(tabularEntity.getCsvFilename())
.build();
}
- private List extends EquipmentModificationEntity> loadTabularCreationSubEntities(List subModificationsUuids, ModificationType modificationType) {
- List extends EquipmentModificationEntity> modifications;
- switch (modificationType) {
- case GENERATOR_CREATION -> {
- // load generator modifications with curvePoints
- modifications = generatorCreationRepository.findAllReactiveCapabilityCurvePointsByIdIn(subModificationsUuids).stream().toList();
- // load properties too, it uses hibernate first-level cache to fill them up directly in modifications
- generatorCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
- }
- case BATTERY_CREATION -> {
- // load battery modifications with curvePoints
- modifications = batteryCreationRepository.findAllReactiveCapabilityCurvePointsByIdIn(subModificationsUuids).stream().toList();
- // load properties too, it uses hibernate first-level cache to fill them up directly in modifications
- batteryCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
- }
- case LOAD_CREATION ->
- // load Load modifications with properties
- modifications = loadCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
- case SHUNT_COMPENSATOR_CREATION ->
- // load MCS modifications with properties
- modifications = shuntCompensatorCreationRepository.findAllPropertiesByIdIn(subModificationsUuids);
- default ->
- throw new UnsupportedOperationException(String.format("No sub-modifications loading for creation type: %s", modificationType));
- }
- return modifications;
- }
-
- private TabularCreationInfos loadTabularCreation(ModificationEntity modificationEntity) {
- TabularCreationEntity tabularCreationEntity = (TabularCreationEntity) modificationEntity;
- // fetch embedded modifications uuids only
- List subModificationsUuids = modificationRepository.findSubModificationIdsByTabularCreationIdOrderByModificationsOrder(modificationEntity.getId());
- // optimized entities full loading, per type
- List extends EquipmentModificationEntity> modifications = loadTabularCreationSubEntities(subModificationsUuids, tabularCreationEntity.getCreationType());
- // re-order the list of entities based on the ordered list of IDs
- List orderedModifications = reorderModifications(modifications, subModificationsUuids);
- // then build DTOs
- return TabularCreationInfos.builder()
- .uuid(tabularCreationEntity.getId())
- .date(tabularCreationEntity.getDate())
- .stashed(tabularCreationEntity.getStashed())
- .activated(tabularCreationEntity.getActivated())
- .creationType(tabularCreationEntity.getCreationType())
- .creations(orderedModifications.stream().map(ModificationEntity::toModificationInfos).toList())
- .properties(CollectionUtils.isEmpty(tabularCreationEntity.getProperties()) ? null : tabularCreationEntity.getProperties().stream()
- .map(TabularPropertyEntity::toInfos)
- .toList())
- .csvFilename(tabularCreationEntity.getCsvFilename())
- .build();
- }
-
- private ModificationInfos getModificationInfos(ModificationEntity modificationEntity) {
- if (modificationEntity instanceof TabularModificationEntity) {
- return loadTabularModification(modificationEntity);
- } else if (modificationEntity instanceof TabularCreationEntity) {
- return loadTabularCreation(modificationEntity);
+ public ModificationInfos getModificationInfos(ModificationEntity modificationEntity) {
+ if (modificationEntity instanceof TabularModificationsEntity tabularEntity) {
+ return loadTabularModification(tabularEntity);
}
return modificationEntity.toModificationInfos();
}
@@ -671,14 +635,12 @@ public void updateModification(@NonNull UUID modificationUuid, @NonNull Modifica
// Tabular modifications optimization:
// Before updating/adding with new sub-modifications, we delete and clear existing sub-modifications manually
// to avoid JPA to make a huge query to find them (no need to read them, they are going to be replaced).
- if (modificationInfos.getType() == ModificationType.TABULAR_MODIFICATION || modificationInfos.getType() == ModificationType.LIMIT_SETS_TABULAR_MODIFICATION) {
- TabularModificationEntity tabularModificationEntity = (TabularModificationEntity) entity;
- deleteTabularModificationSubModifications(tabularModificationEntity);
- tabularModificationEntity.update(modificationInfos);
- } else if (modificationInfos.getType() == ModificationType.TABULAR_CREATION) {
- TabularCreationEntity tabularCreationEntity = (TabularCreationEntity) entity;
- deleteTabularCreationSubModifications(tabularCreationEntity);
- tabularCreationEntity.update(modificationInfos);
+ if (modificationInfos.getType() == ModificationType.TABULAR_CREATION
+ || modificationInfos.getType() == ModificationType.TABULAR_MODIFICATION
+ || modificationInfos.getType() == ModificationType.LIMIT_SETS_TABULAR_MODIFICATION) {
+ TabularModificationsEntity tabularEntity = (TabularModificationsEntity) entity;
+ deleteTabularModificationSubModifications(tabularEntity);
+ tabularEntity.update(modificationInfos);
} else {
entity.update(modificationInfos);
}
@@ -722,27 +684,17 @@ private void deleteModifications(List modificationEntities)
// efficient so no need to dig deeper about that for now.
// delete tabular modifications/creations
- List tabularModificationsToDelete = modificationEntities.stream().filter(TabularModificationEntity.class::isInstance).map(TabularModificationEntity.class::cast).toList();
+ List tabularModificationsToDelete = modificationEntities.stream().filter(TabularModificationsEntity.class::isInstance).map(TabularModificationsEntity.class::cast).toList();
tabularModificationsToDelete.forEach(this::deleteTabularModification);
- List tabularCreationsToDelete = modificationEntities.stream().filter(TabularCreationEntity.class::isInstance).map(TabularCreationEntity.class::cast).toList();
- tabularCreationsToDelete.forEach(this::deleteTabularCreation);
// delete other modification types with "in" requests
- List uuidsToDelete = modificationEntities.stream().filter(Predicate.not(TabularBaseEntity.class::isInstance)).map(ModificationEntity::getId).toList();
+ List uuidsToDelete = modificationEntities.stream().filter(Predicate.not(TabularModificationsEntity.class::isInstance)).map(ModificationEntity::getId).toList();
if (!uuidsToDelete.isEmpty()) {
modificationApplicationInfosService.deleteAllByModificationIds(uuidsToDelete);
modificationRepository.deleteAllByIdIn(uuidsToDelete);
}
}
- private void deleteTabularCreation(TabularCreationEntity tabularCreationEntity) {
- deleteTabular(tabularCreationEntity.getCreationType(), tabularCreationEntity);
- }
-
- private void deleteTabularModification(TabularModificationEntity tabularModificationEntity) {
- deleteTabular(tabularModificationEntity.getModificationType(), tabularModificationEntity);
- }
-
private void deleteSomeLineTabularSubModifications(List subModificationsIds) {
List opLimitsGroupsIds = modificationRepository.findLineModificationOpLimitsGroupsIdsByBranchIds(subModificationsIds);
List currentLimitsIds = modificationRepository.findCurrentLimitsIdsByOpLimitsGroupsIds(opLimitsGroupsIds);
@@ -758,74 +710,55 @@ private void deleteSomeTwtTabularSubModifications(List subModificationsIds
private void deleteAllTabularSubModificationsUsingPartition(ModificationType tabularModificationType, List subModificationsIds) {
switch (tabularModificationType) {
case GENERATOR_CREATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(generatorCreationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(generatorCreationRepository::deleteSomeTabularSubModifications);
case LOAD_CREATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(loadCreationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(loadCreationRepository::deleteSomeTabularSubModifications);
case SHUNT_COMPENSATOR_CREATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(shuntCompensatorCreationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(shuntCompensatorCreationRepository::deleteSomeTabularSubModifications);
case BATTERY_CREATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(batteryCreationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(batteryCreationRepository::deleteSomeTabularSubModifications);
case GENERATOR_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(generatorModificationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(generatorModificationRepository::deleteSomeTabularSubModifications);
case LOAD_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(loadModificationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(loadModificationRepository::deleteSomeTabularSubModifications);
case SHUNT_COMPENSATOR_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(shuntCompensatorModificationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(shuntCompensatorModificationRepository::deleteSomeTabularSubModifications);
case BATTERY_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(batteryModificationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(batteryModificationRepository::deleteSomeTabularSubModifications);
case VOLTAGE_LEVEL_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(voltageLevelModificationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(voltageLevelModificationRepository::deleteSomeTabularSubModifications);
case LINE_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_WITH_LIMITSET_DELETION_BATCH_SIZE).forEach(this::deleteSomeLineTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_WITH_LIMITSET_DELETION_BATCH_SIZE).forEach(this::deleteSomeLineTabularSubModifications);
case TWO_WINDINGS_TRANSFORMER_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_WITH_LIMITSET_DELETION_BATCH_SIZE).forEach(this::deleteSomeTwtTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_WITH_LIMITSET_DELETION_BATCH_SIZE).forEach(this::deleteSomeTwtTabularSubModifications);
case SUBSTATION_MODIFICATION ->
- Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(substationModificationRepository::deleteSomeTabularSubModifications);
+ Lists.partition(subModificationsIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).forEach(substationModificationRepository::deleteSomeTabularSubModifications);
default ->
- throw new UnsupportedOperationException(String.format("No sub-modifications deletion method for type: %s", tabularModificationType));
+ throw new UnsupportedOperationException(String.format("No sub-modifications deletion method for type: %s", tabularModificationType));
}
}
- private void deleteTabular(ModificationType tabularModificationType, ModificationEntity modificationEntity) {
- UUID modificationUuid = modificationEntity.getId();
+ private void deleteTabularModification(TabularModificationsEntity tabularEntity) {
+ UUID modificationUuid = tabularEntity.getId();
List modificationToCleanUuids = new ArrayList<>();
modificationToCleanUuids.add(modificationUuid);
- List subModificationsIds = modificationEntity instanceof TabularModificationEntity ?
- modificationRepository.findSubModificationIdsByTabularModificationId(modificationUuid) :
- modificationRepository.findSubModificationIdsByTabularCreationId(modificationUuid);
+ List subModificationsIds = modificationRepository.findSubModificationIdsByTabularModificationId(modificationUuid);
modificationToCleanUuids.addAll(subModificationsIds);
-
modificationApplicationInfosService.deleteAllByModificationIds(modificationToCleanUuids);
tabularPropertyRepository.deleteTabularProperties(modificationUuid);
- deleteAllTabularSubModificationsUsingPartition(tabularModificationType, subModificationsIds);
- if (modificationEntity instanceof TabularModificationEntity) {
- // line functions works for any modification case
- lineModificationRepository.deleteTabularModificationModifications(modificationUuid, subModificationsIds);
- lineModificationRepository.deleteTabularModificationItself(modificationUuid);
- } else {
- // generator functions works for any creation case
- generatorCreationRepository.deleteTabularCreationCreations(modificationUuid, subModificationsIds);
- generatorCreationRepository.deleteTabularCreationItself(modificationUuid);
- }
- }
-
- private void deleteTabularCreationSubModifications(TabularCreationEntity tabularCreationEntity) {
- UUID modificationId = tabularCreationEntity.getId();
- List subModificationsIds = modificationRepository.findSubModificationIdsByTabularCreationId(modificationId);
- tabularCreationEntity.setCreations(null);
- modificationApplicationInfosService.deleteAllByModificationIds(subModificationsIds);
- deleteAllTabularSubModificationsUsingPartition(tabularCreationEntity.getCreationType(), subModificationsIds);
- // generator function works for any creation case
- generatorCreationRepository.deleteTabularCreationCreations(modificationId, subModificationsIds);
+ deleteAllTabularSubModificationsUsingPartition(tabularEntity.getModificationType(), subModificationsIds);
+ // line functions work for any type
+ lineModificationRepository.deleteTabularModificationModifications(modificationUuid, subModificationsIds);
+ lineModificationRepository.deleteTabularModificationItself(modificationUuid);
}
- private void deleteTabularModificationSubModifications(TabularModificationEntity tabularModificationEntity) {
+ private void deleteTabularModificationSubModifications(TabularModificationsEntity tabularModificationEntity) {
UUID modificationId = tabularModificationEntity.getId();
List subModificationsIds = modificationRepository.findSubModificationIdsByTabularModificationId(modificationId);
tabularModificationEntity.setModifications(null);
modificationApplicationInfosService.deleteAllByModificationIds(subModificationsIds);
deleteAllTabularSubModificationsUsingPartition(tabularModificationEntity.getModificationType(), subModificationsIds);
- // line function works for any modification case
+ // line function works for any type
lineModificationRepository.deleteTabularModificationModifications(modificationId, subModificationsIds);
}
diff --git a/src/main/resources/db/changelog/changesets/changelog_20250930T101841Z.xml b/src/main/resources/db/changelog/changesets/changelog_20250930T101841Z.xml
new file mode 100644
index 000000000..73e86e60b
--- /dev/null
+++ b/src/main/resources/db/changelog/changesets/changelog_20250930T101841Z.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/db/changelog/changesets/changelog_20250930T132326Z.xml b/src/main/resources/db/changelog/changesets/changelog_20250930T132326Z.xml
new file mode 100644
index 000000000..dcbf5b3a4
--- /dev/null
+++ b/src/main/resources/db/changelog/changesets/changelog_20250930T132326Z.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/db/changelog/changesets/migrationTabularModifications_20250930T132326Z.sql b/src/main/resources/db/changelog/changesets/migrationTabularModifications_20250930T132326Z.sql
new file mode 100644
index 000000000..b1d95a7fc
--- /dev/null
+++ b/src/main/resources/db/changelog/changesets/migrationTabularModifications_20250930T132326Z.sql
@@ -0,0 +1,27 @@
+-- tabular_modification + tabular_creation -> tabular_modifications
+insert into tabular_modifications (id, modification_type, csv_filename)
+select
+ id,
+ modification_type,
+ csv_filename
+from tabular_modification;
+insert into tabular_modifications (id, modification_type, csv_filename)
+select
+ id,
+ creation_type,
+ csv_filename
+from tabular_creation;
+
+-- tabular_modification_modifications + tabular_creation_creations -> tabular_modifications_modifications
+insert into tabular_modifications_modifications (tabular_modifications_entity_id, modifications_id, modifications_order)
+select
+ tabular_modification_entity_id,
+ modifications_id,
+ modifications_order
+from tabular_modification_modifications;
+insert into tabular_modifications_modifications (tabular_modifications_entity_id, modifications_id, modifications_order)
+select
+ tabular_creation_entity_id,
+ creations_id,
+ creations_order
+from tabular_creation_creations;
\ No newline at end of file
diff --git a/src/main/resources/db/changelog/db.changelog-master.yaml b/src/main/resources/db/changelog/db.changelog-master.yaml
index 2ac6938dc..8ad4fa74e 100644
--- a/src/main/resources/db/changelog/db.changelog-master.yaml
+++ b/src/main/resources/db/changelog/db.changelog-master.yaml
@@ -417,3 +417,10 @@ databaseChangeLog:
- include:
file: changesets/changelog_20250923T141508Z.xml
relativeToChangelogFile: true
+
+ - include:
+ file: changesets/changelog_20250930T101841Z.xml
+ relativeToChangelogFile: true
+ - include:
+ file: changesets/changelog_20250930T132326Z.xml
+ relativeToChangelogFile: true
\ No newline at end of file
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularBatteryCreationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularBatteryCreationsTest.java
index 0c54ec7f3..5eddfb415 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularBatteryCreationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularBatteryCreationsTest.java
@@ -13,8 +13,8 @@
import org.gridsuite.modification.dto.BatteryCreationInfos;
import org.gridsuite.modification.dto.ModificationInfos;
import org.gridsuite.modification.dto.ReactiveCapabilityCurvePointsInfos;
-import org.gridsuite.modification.dto.TabularCreationInfos;
-import org.gridsuite.modification.dto.TabularPropertyInfos;
+import org.gridsuite.modification.dto.tabular.TabularCreationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.ModificationCreation;
import org.gridsuite.modification.server.utils.NetworkCreation;
@@ -58,8 +58,8 @@ protected ModificationInfos buildModification() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.BATTERY_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.BATTERY_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(false).build()))
.stashed(false)
.build();
@@ -75,8 +75,8 @@ protected ModificationInfos buildModificationUpdate() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.BATTERY_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.BATTERY_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(true).build()))
.stashed(false)
.build();
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java
index 0b0608824..ca7fb82f2 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularGeneratorCreationsTest.java
@@ -17,9 +17,8 @@
import org.gridsuite.modification.dto.GeneratorCreationInfos;
import org.gridsuite.modification.dto.ModificationInfos;
import org.gridsuite.modification.dto.SubstationCreationInfos;
-import org.gridsuite.modification.dto.TabularCreationInfos;
+import org.gridsuite.modification.dto.tabular.*;
import org.gridsuite.modification.server.dto.NetworkModificationsResult;
-import org.gridsuite.modification.dto.TabularPropertyInfos;
import org.gridsuite.modification.server.impacts.AbstractBaseImpact;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.NetworkCreation;
@@ -111,8 +110,8 @@ protected ModificationInfos buildModification() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.GENERATOR_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.GENERATOR_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(true).build()))
.stashed(false)
.build();
@@ -145,8 +144,8 @@ protected ModificationInfos buildModificationUpdate() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.GENERATOR_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.GENERATOR_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(false).build()))
.stashed(false)
.build();
@@ -202,8 +201,8 @@ void testCheckSqlRequestsCount() throws Exception {
.build()
);
TabularCreationInfos creationInfos = TabularCreationInfos.builder()
- .creationType(ModificationType.GENERATOR_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.GENERATOR_CREATION)
+ .modifications(creations)
.build();
modificationUuid = saveModification(creationInfos);
reset();
@@ -249,8 +248,8 @@ void testAllModificationsHaveSucceeded() throws Exception {
);
ModificationInfos creationInfos = TabularCreationInfos.builder()
- .creationType(ModificationType.GENERATOR_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.GENERATOR_CREATION)
+ .modifications(creations)
.build();
String tabularCreationJson = getJsonBody(creationInfos, null);
@@ -298,8 +297,8 @@ void testAllModificationsHaveFailed() throws Exception {
.build()
);
ModificationInfos creationInfos = TabularCreationInfos.builder()
- .creationType(ModificationType.GENERATOR_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.GENERATOR_CREATION)
+ .modifications(creations)
.build();
String tabularCreationJson = getJsonBody(creationInfos, null);
@@ -335,8 +334,8 @@ void testUnsupportedTabularCreationType() throws Exception {
.build()
);
ModificationInfos creationInfos = TabularCreationInfos.builder()
- .creationType(ModificationType.SUBSTATION_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.SUBSTATION_CREATION)
+ .modifications(creations)
.build();
String tabularCreationJson = getJsonBody(creationInfos, null);
@@ -354,14 +353,14 @@ void testUnsupportedTabularCreationType() throws Exception {
UnsupportedOperationException.class,
() -> networkModificationRepository.getModifications(TEST_GROUP_ID, false, true)
);
- assertEquals("No sub-modifications loading for creation type: SUBSTATION_CREATION", exception.getMessage());
+ assertEquals("No sub-modifications loading for modification type: SUBSTATION_CREATION", exception.getMessage());
// try to get via id
exception = assertThrows(
UnsupportedOperationException.class,
() -> networkModificationRepository.getModificationInfo(modifId)
);
- assertEquals("No sub-modifications loading for creation type: SUBSTATION_CREATION", exception.getMessage());
+ assertEquals("No sub-modifications loading for modification type: SUBSTATION_CREATION", exception.getMessage());
// try to update
exception = assertThrows(
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularLoadCreationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularLoadCreationsTest.java
index 0de39c63d..adb793725 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularLoadCreationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularLoadCreationsTest.java
@@ -14,8 +14,7 @@
import org.gridsuite.modification.dto.FreePropertyInfos;
import org.gridsuite.modification.dto.LoadCreationInfos;
import org.gridsuite.modification.dto.ModificationInfos;
-import org.gridsuite.modification.dto.TabularCreationInfos;
-import org.gridsuite.modification.dto.TabularPropertyInfos;
+import org.gridsuite.modification.dto.tabular.*;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;
@@ -57,8 +56,8 @@ protected ModificationInfos buildModification() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.LOAD_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.LOAD_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(true).build()))
.stashed(false)
.build();
@@ -76,8 +75,8 @@ protected ModificationInfos buildModificationUpdate() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.LOAD_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.LOAD_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(false).build()))
.stashed(false)
.build();
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularShuntCompensatorCreationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularShuntCompensatorCreationsTest.java
index c6d1c3222..73d84034b 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularShuntCompensatorCreationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularcreations/TabularShuntCompensatorCreationsTest.java
@@ -13,8 +13,7 @@
import org.gridsuite.modification.dto.FreePropertyInfos;
import org.gridsuite.modification.dto.ModificationInfos;
import org.gridsuite.modification.dto.ShuntCompensatorCreationInfos;
-import org.gridsuite.modification.dto.TabularCreationInfos;
-import org.gridsuite.modification.dto.TabularPropertyInfos;
+import org.gridsuite.modification.dto.tabular.*;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;
@@ -60,8 +59,8 @@ protected ModificationInfos buildModification() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.SHUNT_COMPENSATOR_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.SHUNT_COMPENSATOR_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(true).build()))
.stashed(false)
.build();
@@ -81,8 +80,8 @@ protected ModificationInfos buildModificationUpdate() {
.build()
);
return TabularCreationInfos.builder()
- .creationType(ModificationType.SHUNT_COMPENSATOR_CREATION)
- .creations(creations)
+ .modificationType(ModificationType.SHUNT_COMPENSATOR_CREATION)
+ .modifications(creations)
.properties(List.of(TabularPropertyInfos.builder().name("P1").predefined(true).selected(false).build()))
.stashed(false)
.build();
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java
index d4fd67fd4..2a8c50582 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularBatteryModificationsTest.java
@@ -10,6 +10,8 @@
import com.powsybl.iidm.network.Network;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java
index ceb79c2a8..edbdcd7bf 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularGeneratorModificationsTest.java
@@ -12,6 +12,8 @@
import com.powsybl.iidm.network.extensions.ConnectablePosition;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.dto.NetworkModificationsResult;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.repositories.ModificationRepository;
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java
index e69e4db03..9b8ac8298 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLineModificationsTest.java
@@ -10,6 +10,8 @@
import com.powsybl.iidm.network.Network;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.repositories.ModificationRepository;
import org.gridsuite.modification.server.utils.ApiUtils;
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java
index 2e665eaee..bdc13a86e 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularLoadModificationsTest.java
@@ -10,6 +10,8 @@
import com.powsybl.iidm.network.Network;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java
index fff9e845e..bf1ddb29b 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularShuntCompensatorModificationsTest.java
@@ -15,8 +15,10 @@
import com.powsybl.iidm.network.ShuntCompensatorModelType;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
-import org.gridsuite.modification.modifications.TabularModification;
+import org.gridsuite.modification.modifications.tabular.TabularModification;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@@ -130,13 +132,13 @@ void testCheckModificationConflict() {
.withMessageTemplate("test")
.build();
- tabularModification.checkShuntCompensatorModification(network, shuntModification, reportNode);
+ tabularModification.specificCheck(shuntModification, network, reportNode);
shuntModification.setShuntCompensatorType(AttributeModification.toAttributeModification(ShuntCompensatorType.CAPACITOR, OperationType.SET));
- tabularModification.checkShuntCompensatorModification(network, shuntModification, reportNode);
+ tabularModification.specificCheck(shuntModification, network, reportNode);
shuntModification.setMaxQAtNominalV(null);
- tabularModification.checkShuntCompensatorModification(network, shuntModification, reportNode);
+ tabularModification.specificCheck(shuntModification, network, reportNode);
assertEquals(TypedValue.WARN_SEVERITY, reportNode.getChildren().get(0).getValues().get(ReportConstants.SEVERITY_KEY));
}
@@ -165,7 +167,7 @@ void testCheckModificationNonLinear() {
.withResourceBundles("i18n.reports")
.withMessageTemplate("test")
.build();
- tabularModification.checkShuntCompensatorModification(network, shuntModification, reportNode);
+ tabularModification.specificCheck(shuntModification, network, reportNode);
assertEquals(TypedValue.ERROR_SEVERITY, reportNode.getChildren().get(0).getValues().get(ReportConstants.SEVERITY_KEY));
@@ -195,7 +197,7 @@ void testCheckModificationOK() {
.withMessageTemplate("test")
.build();
- tabularModification.checkShuntCompensatorModification(network, shuntModification, reportNode);
+ tabularModification.specificCheck(shuntModification, network, reportNode);
assertEquals(0, reportNode.getChildren().size());
}
}
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java
index cea05a375..19782c815 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularSubstationModificationsTest.java
@@ -11,6 +11,8 @@
import com.powsybl.iidm.network.Network;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java
index 465250d54..979ee312a 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularTwoWindingsTransformerModificationsTest.java
@@ -10,6 +10,8 @@
import com.powsybl.iidm.network.Network;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.repositories.ModificationRepository;
import org.gridsuite.modification.server.utils.ApiUtils;
diff --git a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java
index 13ecddf44..b290dbd72 100644
--- a/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java
+++ b/src/test/java/org/gridsuite/modification/server/modifications/tabularmodifications/TabularVoltageLevelModificationsTest.java
@@ -10,6 +10,8 @@
import com.powsybl.iidm.network.Network;
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
+import org.gridsuite.modification.dto.tabular.TabularPropertyInfos;
import org.gridsuite.modification.server.modifications.AbstractNetworkModificationTest;
import org.gridsuite.modification.server.utils.NetworkCreation;
import org.junit.jupiter.api.Tag;
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 eea19d1e8..a539dbef7 100644
--- a/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java
+++ b/src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java
@@ -12,6 +12,7 @@
import org.gridsuite.modification.ModificationType;
import org.gridsuite.modification.NetworkModificationException;
import org.gridsuite.modification.dto.*;
+import org.gridsuite.modification.dto.tabular.TabularModificationInfos;
import org.gridsuite.modification.server.entities.ModificationEntity;
import org.gridsuite.modification.server.entities.ModificationGroupEntity;
import org.gridsuite.modification.server.entities.equipment.creation.VoltageLevelCreationEntity;