Skip to content

Commit 36e0515

Browse files
authored
Merge branch 'main' into applytoolongtransactionmini
2 parents 2c1dd52 + 26591dd commit 36e0515

File tree

46 files changed

+901
-629
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+901
-629
lines changed

pom.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
<groupId>org.gridsuite</groupId>
2323
<artifactId>gridsuite-network-modification-server</artifactId>
24-
<version>2.23.0-SNAPSHOT</version>
24+
<version>2.24.0-SNAPSHOT</version>
2525

2626
<packaging>jar</packaging>
2727
<name>Network modification server</name>
@@ -51,6 +51,8 @@
5151
<sonar.coverage.exclusions>**/migration/**/*</sonar.coverage.exclusions>
5252
<sonar.organization>gridsuite</sonar.organization>
5353
<sonar.projectKey>org.gridsuite:network-modification-server</sonar.projectKey>
54+
<!-- TODO network-modification.version remove when upgrading gridsuite dependencies -->
55+
<network-modification.version>0.37.0</network-modification.version>
5456
<powsybl-balances-adjustment.version>2.14.1</powsybl-balances-adjustment.version>
5557
</properties>
5658

@@ -124,6 +126,7 @@
124126
<dependency>
125127
<groupId>org.gridsuite</groupId>
126128
<artifactId>gridsuite-network-modification</artifactId>
129+
<version>${network-modification.version}</version>
127130
</dependency>
128131
<dependency>
129132
<groupId>com.powsybl</groupId>

src/main/java/org/gridsuite/modification/server/elasticsearch/EquipmentInfosService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class EquipmentInfosService {
3838
@Value("${spring.data.elasticsearch.partition-size-for-deletion:2048}")
3939
public int partitionSizeForDeletion;
4040

41-
public static final Set<IdentifiableType> TYPES_FOR_INDEXING = Set.of(
41+
private static final Set<IdentifiableType> TYPES_FOR_INDEXING = Set.of(
4242
IdentifiableType.SUBSTATION,
4343
IdentifiableType.VOLTAGE_LEVEL,
4444
IdentifiableType.HVDC_LINE,
@@ -53,6 +53,10 @@ public class EquipmentInfosService {
5353
IdentifiableType.STATIC_VAR_COMPENSATOR,
5454
IdentifiableType.HVDC_CONVERTER_STATION);
5555

56+
public static Set<IdentifiableType> getIndexedEquipmentTypes() {
57+
return TYPES_FOR_INDEXING;
58+
}
59+
5660
public EquipmentInfosService(EquipmentInfosRepository equipmentInfosRepository, TombstonedEquipmentInfosRepository tombstonedEquipmentInfosRepository) {
5761
this.equipmentInfosRepository = equipmentInfosRepository;
5862
this.tombstonedEquipmentInfosRepository = tombstonedEquipmentInfosRepository;

src/main/java/org/gridsuite/modification/server/elasticsearch/ModificationApplicationInfosService.java

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,30 @@
66
*/
77
package org.gridsuite.modification.server.elasticsearch;
88

9+
import com.google.common.collect.Lists;
910
import org.gridsuite.modification.server.dto.elasticsearch.ModificationApplicationInfos;
1011
import org.gridsuite.modification.server.entities.ModificationApplicationEntity;
1112
import org.gridsuite.modification.server.repositories.ModificationApplicationRepository;
13+
import org.springframework.beans.factory.annotation.Value;
1214
import org.springframework.stereotype.Service;
1315

1416
import java.util.List;
1517
import java.util.UUID;
1618

19+
import static org.gridsuite.modification.server.utils.DatabaseConstants.SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE;
20+
import static org.gridsuite.modification.server.utils.DatabaseConstants.SQL_SUB_MODIFICATION_SAVE_BATCH_SIZE;
21+
1722
/**
1823
* @author Kevin Le Saulnier <kevin.lesaulnier at rte-france.com>
1924
*/
2025
@Service
2126
public class ModificationApplicationInfosService {
2227
private final ModificationApplicationInfosRepository modificationApplicationInfosRepository;
2328
private final ModificationApplicationRepository modificationApplicationRepository;
29+
@Value("${spring.data.elasticsearch.partition-size:10000}")
30+
private int partitionSize;
31+
@Value("${spring.data.elasticsearch.partition-size-for-deletion:2048}")
32+
public int partitionSizeForDeletion;
2433

2534
public ModificationApplicationInfosService(ModificationApplicationInfosRepository modificationApplicationInfosRepository,
2635
ModificationApplicationRepository modificationApplicationRepository) {
@@ -29,33 +38,45 @@ public ModificationApplicationInfosService(ModificationApplicationInfosRepositor
2938
}
3039

3140
public void addAll(List<ModificationApplicationInfos> modificationApplicationInfos) {
32-
modificationApplicationRepository.saveAll(modificationApplicationInfos.stream()
33-
.map(modificationInfo -> {
34-
ModificationApplicationEntity newModificationApplicationEntity = ModificationApplicationEntity.builder()
35-
.networkUuid(modificationInfo.getNetworkUuid())
36-
.createdEquipmentIds(modificationInfo.getCreatedEquipmentIds())
37-
.modifiedEquipmentIds(modificationInfo.getModifiedEquipmentIds())
38-
.deletedEquipmentIds(modificationInfo.getDeletedEquipmentIds())
39-
.build();
40-
newModificationApplicationEntity.setModification(modificationInfo.getModification());
41-
return newModificationApplicationEntity;
42-
}).toList());
43-
modificationApplicationInfosRepository.saveAll(modificationApplicationInfos);
41+
Lists.partition(modificationApplicationInfos, SQL_SUB_MODIFICATION_SAVE_BATCH_SIZE)
42+
.parallelStream()
43+
.forEach(modificationApplicationInfosBatch ->
44+
modificationApplicationRepository.saveAll(modificationApplicationInfosBatch.stream()
45+
.map(modificationInfo -> {
46+
ModificationApplicationEntity newModificationApplicationEntity = ModificationApplicationEntity
47+
.builder()
48+
.networkUuid(modificationInfo.getNetworkUuid())
49+
.createdEquipmentIds(modificationInfo.getCreatedEquipmentIds())
50+
.modifiedEquipmentIds(modificationInfo.getModifiedEquipmentIds())
51+
.deletedEquipmentIds(modificationInfo.getDeletedEquipmentIds())
52+
.build();
53+
newModificationApplicationEntity.setModification(modificationInfo.getModification());
54+
return newModificationApplicationEntity;
55+
}).toList()));
56+
Lists.partition(modificationApplicationInfos, partitionSize)
57+
.parallelStream()
58+
.forEach(modificationApplicationInfosRepository::saveAll);
4459
}
4560

4661
public void deleteAllByGroupUuidsAndNetworkUuid(List<UUID> groupUuids, UUID networkUuid) {
47-
modificationApplicationRepository.deleteAllByNetworkUuidAndModificationGroupIdIn(networkUuid, groupUuids);
48-
modificationApplicationInfosRepository.deleteAllByNetworkUuidAndGroupUuidIn(networkUuid, groupUuids);
62+
Lists.partition(groupUuids, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).parallelStream().forEach(ids ->
63+
modificationApplicationRepository.deleteAllByNetworkUuidAndModificationGroupIdIn(networkUuid, ids));
64+
Lists.partition(groupUuids, partitionSizeForDeletion).parallelStream().forEach(ids ->
65+
modificationApplicationInfosRepository.deleteAllByNetworkUuidAndGroupUuidIn(networkUuid, ids));
4966
}
5067

5168
public void deleteAllByGroupUuids(List<UUID> groupUuids) {
52-
modificationApplicationRepository.deleteAllByModificationGroupIdIn(groupUuids);
53-
modificationApplicationInfosRepository.deleteAllByGroupUuidIn(groupUuids);
69+
Lists.partition(groupUuids, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).parallelStream()
70+
.forEach(modificationApplicationRepository::deleteAllByModificationGroupIdIn);
71+
Lists.partition(groupUuids, partitionSizeForDeletion).parallelStream()
72+
.forEach(modificationApplicationInfosRepository::deleteAllByGroupUuidIn);
5473
}
5574

5675
public void deleteAllByModificationIds(List<UUID> modificationIds) {
57-
modificationApplicationRepository.deleteAllByModificationIdIn(modificationIds);
58-
modificationApplicationInfosRepository.deleteAllByModificationUuidIn(modificationIds);
76+
Lists.partition(modificationIds, SQL_SUB_MODIFICATION_DELETION_BATCH_SIZE).parallelStream()
77+
.forEach(modificationApplicationRepository::deleteAllByModificationIdIn);
78+
Lists.partition(modificationIds, partitionSizeForDeletion).parallelStream()
79+
.forEach(modificationApplicationInfosRepository::deleteAllByModificationUuidIn);
5980
}
6081

6182
public void deleteAll() {

src/main/java/org/gridsuite/modification/server/entities/equipment/creation/TwoWindingsTransformerCreationEntity.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,9 @@ private void assignRatioTapChanger(RatioTapChangerCreationInfos ratioTapChanger)
141141
this.ratioTapChangerTapPosition = ratioTapChanger.getTapPosition();
142142
this.ratioTapChangerRegulating = ratioTapChanger.isRegulating();
143143
this.ratioTapChangerTargetDeadband = ratioTapChanger.getTargetDeadband();
144-
this.ratioTapChangerTerminalRefConnectableId = ratioTapChanger.getRegulatingTerminalId();
145-
this.ratioTapChangerTerminalRefVoltageLevelId = ratioTapChanger.getRegulatingTerminalVlId();
146-
this.ratioTapChangerTerminalRefType = ratioTapChanger.getRegulatingTerminalType();
144+
this.ratioTapChangerTerminalRefConnectableId = ratioTapChanger.getTerminalRefConnectableId();
145+
this.ratioTapChangerTerminalRefVoltageLevelId = ratioTapChanger.getTerminalRefConnectableVlId();
146+
this.ratioTapChangerTerminalRefType = ratioTapChanger.getTerminalRefConnectableType();
147147
this.ratioTapChangerLoadTapChangingCapabilities = ratioTapChanger.isLoadTapChangingCapabilities();
148148
this.ratioTapChangerTargetV = ratioTapChanger.getTargetV();
149149
this.tapChangerSteps.addAll(TapChangerStepCreationEmbeddable.toEmbeddableRatioTapChangerSteps(ratioTapChanger.getSteps()));
@@ -154,9 +154,9 @@ private void assignPhaseTapChanger(PhaseTapChangerCreationInfos phaseTapChangerC
154154
this.phaseTapChangerTapPosition = phaseTapChangerCreationInfos.getTapPosition();
155155
this.phaseTapChangerRegulating = phaseTapChangerCreationInfos.isRegulating();
156156
this.phaseTapChangerTargetDeadband = phaseTapChangerCreationInfos.getTargetDeadband();
157-
this.phaseTapChangerTerminalRefConnectableId = phaseTapChangerCreationInfos.getRegulatingTerminalId();
158-
this.phaseTapChangerTerminalRefVoltageLevelId = phaseTapChangerCreationInfos.getRegulatingTerminalVlId();
159-
this.phaseTapChangerTerminalRefType = phaseTapChangerCreationInfos.getRegulatingTerminalType();
157+
this.phaseTapChangerTerminalRefConnectableId = phaseTapChangerCreationInfos.getTerminalRefConnectableId();
158+
this.phaseTapChangerTerminalRefVoltageLevelId = phaseTapChangerCreationInfos.getTerminalRefConnectableVlId();
159+
this.phaseTapChangerTerminalRefType = phaseTapChangerCreationInfos.getTerminalRefConnectableType();
160160
this.phaseTapChangerRegulationMode = phaseTapChangerCreationInfos.getRegulationMode();
161161
this.phaseTapChangerRegulationValue = phaseTapChangerCreationInfos.getRegulationValue();
162162
this.tapChangerSteps.addAll(TapChangerStepCreationEmbeddable.toEmbeddablePhaseTapChangerSteps(phaseTapChangerCreationInfos.getSteps()));
@@ -222,9 +222,9 @@ public TwoWindingsTransformerCreationInfos toModificationInfos() {
222222
.regulating(getRatioTapChangerRegulating())
223223
.loadTapChangingCapabilities(getRatioTapChangerLoadTapChangingCapabilities())
224224
.targetV(getRatioTapChangerTargetV())
225-
.regulatingTerminalId(getRatioTapChangerTerminalRefConnectableId())
226-
.regulatingTerminalVlId(getRatioTapChangerTerminalRefVoltageLevelId())
227-
.regulatingTerminalType(getRatioTapChangerTerminalRefType())
225+
.terminalRefConnectableId(getRatioTapChangerTerminalRefConnectableId())
226+
.terminalRefConnectableVlId(getRatioTapChangerTerminalRefVoltageLevelId())
227+
.terminalRefConnectableType(getRatioTapChangerTerminalRefType())
228228
.steps(ratioTapChangerStepCreationInfos)
229229
.build());
230230
}
@@ -240,9 +240,9 @@ public TwoWindingsTransformerCreationInfos toModificationInfos() {
240240
.loadTapChangingCapabilities(true)
241241
.regulationMode(getPhaseTapChangerRegulationMode())
242242
.regulationValue(getPhaseTapChangerRegulationValue())
243-
.regulatingTerminalId(getPhaseTapChangerTerminalRefConnectableId())
244-
.regulatingTerminalVlId(getPhaseTapChangerTerminalRefVoltageLevelId())
245-
.regulatingTerminalType(getPhaseTapChangerTerminalRefType())
243+
.terminalRefConnectableId(getPhaseTapChangerTerminalRefConnectableId())
244+
.terminalRefConnectableVlId(getPhaseTapChangerTerminalRefVoltageLevelId())
245+
.terminalRefConnectableType(getPhaseTapChangerTerminalRefType())
246246
.steps(phaseTapChangerStepCreationInfos)
247247
.build());
248248
}

src/main/java/org/gridsuite/modification/server/entities/equipment/modification/BranchModificationEntity.java

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -40,35 +40,26 @@ public class BranchModificationEntity extends BasicEquipmentModificationEntity {
4040
})
4141
private DoubleModificationEmbedded x;
4242

43-
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
44-
@JoinColumn(name = "current_limits_modification_id1",
45-
referencedColumnName = "id",
46-
foreignKey = @ForeignKey(
47-
name = "current_limits_modification_id1_fk"
48-
), nullable = true)
49-
private CurrentLimitsModificationEntity currentLimits1;
50-
51-
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
52-
@JoinColumn(name = "current_limits_modification_id2",
53-
referencedColumnName = "id",
54-
foreignKey = @ForeignKey(
55-
name = "current_limits_modification_id2_fk"
56-
), nullable = true)
57-
private CurrentLimitsModificationEntity currentLimits2;
58-
5943
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
6044
@JoinTable(
61-
joinColumns = @JoinColumn(name = "branch_id"),
62-
inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id1_fk"))
45+
joinColumns = @JoinColumn(name = "branch_id"), foreignKey = @ForeignKey(name = "branch_modification_id_fk"),
46+
inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id_fk"))
6347
@OrderColumn(name = "pos_operationalLimitsGroups")
64-
private List<OperationalLimitsGroupModificationEntity> opLimitsGroups1;
48+
private List<OperationalLimitsGroupModificationEntity> operationalLimitsGroups;
6549

66-
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
67-
@JoinTable(
68-
joinColumns = @JoinColumn(name = "branch_id"),
69-
inverseJoinColumns = @JoinColumn(name = "operational_limits_groups_id"), inverseForeignKey = @ForeignKey(name = "operational_limits_groups_id2_fk"))
70-
@OrderColumn(name = "pos_operationalLimitsGroups")
71-
private List<OperationalLimitsGroupModificationEntity> opLimitsGroups2;
50+
@Embedded
51+
@AttributeOverrides(value = {
52+
@AttributeOverride(name = "value", column = @Column(name = "selectedOperationalLimitsGroupId1")),
53+
@AttributeOverride(name = "opType", column = @Column(name = "selectedOperationalLimitsGroupId1Op"))
54+
})
55+
private StringModificationEmbedded selectedOperationalLimitsGroupId1;
56+
57+
@Embedded
58+
@AttributeOverrides(value = {
59+
@AttributeOverride(name = "value", column = @Column(name = "selectedOperationalLimitsGroupId2")),
60+
@AttributeOverride(name = "opType", column = @Column(name = "selectedOperationalLimitsGroupId2Op"))
61+
})
62+
private StringModificationEmbedded selectedOperationalLimitsGroupId2;
7263

7364
@Embedded
7465
@AttributeOverrides(value = {
@@ -225,24 +216,15 @@ public void update(ModificationInfos modificationInfos) {
225216
private void assignAttributes(BranchModificationInfos branchModificationInfos) {
226217
x = new DoubleModificationEmbedded(branchModificationInfos.getX());
227218
r = new DoubleModificationEmbedded(branchModificationInfos.getR());
228-
if (branchModificationInfos.getCurrentLimits1() != null) {
229-
currentLimits1 = new CurrentLimitsModificationEntity(branchModificationInfos.getCurrentLimits1());
230-
} else {
231-
currentLimits1 = null;
232-
}
233-
this.opLimitsGroups1 = assignOperationalLimitsGroups(branchModificationInfos.getOperationalLimitsGroup1(), opLimitsGroups1);
234-
if (branchModificationInfos.getCurrentLimits2() != null) {
235-
currentLimits2 = new CurrentLimitsModificationEntity(branchModificationInfos.getCurrentLimits2());
236-
} else {
237-
currentLimits2 = null;
238-
}
239-
this.opLimitsGroups2 = assignOperationalLimitsGroups(branchModificationInfos.getOperationalLimitsGroup2(), opLimitsGroups2);
219+
this.operationalLimitsGroups = assignOperationalLimitsGroups(branchModificationInfos.getOperationalLimitsGroups(), operationalLimitsGroups);
240220
this.voltageLevelId1 = branchModificationInfos.getVoltageLevelId1() != null ? new StringModificationEmbedded(branchModificationInfos.getVoltageLevelId1()) : null;
241221
this.voltageLevelId2 = branchModificationInfos.getVoltageLevelId2() != null ? new StringModificationEmbedded(branchModificationInfos.getVoltageLevelId2()) : null;
242222
this.busOrBusbarSectionId1 = branchModificationInfos.getBusOrBusbarSectionId1() != null ? new StringModificationEmbedded(branchModificationInfos.getBusOrBusbarSectionId1()) : null;
243223
this.busOrBusbarSectionId2 = branchModificationInfos.getBusOrBusbarSectionId2() != null ? new StringModificationEmbedded(branchModificationInfos.getBusOrBusbarSectionId2()) : null;
244224
this.connectionName1 = branchModificationInfos.getConnectionName1() != null ? new StringModificationEmbedded(branchModificationInfos.getConnectionName1()) : null;
245225
this.connectionName2 = branchModificationInfos.getConnectionName2() != null ? new StringModificationEmbedded(branchModificationInfos.getConnectionName2()) : null;
226+
this.selectedOperationalLimitsGroupId1 = branchModificationInfos.getSelectedOperationalLimitsGroup1() != null ? new StringModificationEmbedded(branchModificationInfos.getSelectedOperationalLimitsGroup1()) : null;
227+
this.selectedOperationalLimitsGroupId2 = branchModificationInfos.getSelectedOperationalLimitsGroup2() != null ? new StringModificationEmbedded(branchModificationInfos.getSelectedOperationalLimitsGroup2()) : null;
246228
this.connectionDirection1 = branchModificationInfos.getConnectionDirection1() != null ? new EnumModificationEmbedded<>(branchModificationInfos.getConnectionDirection1()) : null;
247229
this.connectionDirection2 = branchModificationInfos.getConnectionDirection2() != null ? new EnumModificationEmbedded<>(branchModificationInfos.getConnectionDirection2()) : null;
248230
this.connectionPosition1 = branchModificationInfos.getConnectionPosition1() != null ? new IntegerModificationEmbedded(branchModificationInfos.getConnectionPosition1()) : null;

0 commit comments

Comments
 (0)