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 loadTabularModificationSubEntities(List subModificationsUuids, ModificationType modificationType) { List 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 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 modifications = loadTabularModificationSubEntities(subModificationsUuids, tabularModificationEntity.getModificationType()); + List 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 loadTabularCreationSubEntities(List subModificationsUuids, ModificationType modificationType) { - List 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 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;