Skip to content

Commit 050c738

Browse files
committed
Merge branch 'applysamethreadflush' into applynoblocktomcat
2 parents 10abce4 + 7d5828e commit 050c738

File tree

66 files changed

+1716
-718
lines changed

Some content is hidden

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

66 files changed

+1716
-718
lines changed

pom.xml

Lines changed: 24 additions & 6 deletions
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.25.0-SNAPSHOT</version>
2525

2626
<packaging>jar</packaging>
2727
<name>Network modification server</name>
@@ -51,6 +51,10 @@
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.42.0</network-modification.version>
56+
<!-- FIXME: powsybl-network-store modules'version is overloaded in the dependencies section.The overloads and this property below have to be removed at next powsybl-ws-dependencies.version upgrade -->
57+
<powsybl-network-store.version>1.31.0</powsybl-network-store.version>
5458
<powsybl-balances-adjustment.version>2.14.1</powsybl-balances-adjustment.version>
5559
</properties>
5660

@@ -94,6 +98,24 @@
9498
<type>pom</type>
9599
<scope>import</scope>
96100
</dependency>
101+
<!-- FIXME: to be removed at next powsybl-ws-dependencies upgrade -->
102+
<dependency>
103+
<groupId>com.powsybl</groupId>
104+
<artifactId>powsybl-network-store-model</artifactId>
105+
<version>${powsybl-network-store.version}</version>
106+
</dependency>
107+
<!-- FIXME: to be removed at next powsybl-ws-dependencies upgrade -->
108+
<dependency>
109+
<groupId>com.powsybl</groupId>
110+
<artifactId>powsybl-network-store-iidm-impl</artifactId>
111+
<version>${powsybl-network-store.version}</version>
112+
</dependency>
113+
<!-- FIXME: to be removed at next powsybl-ws-dependencies upgrade -->
114+
<dependency>
115+
<groupId>com.powsybl</groupId>
116+
<artifactId>powsybl-network-store-client</artifactId>
117+
<version>${powsybl-network-store.version}</version>
118+
</dependency>
97119

98120
<dependency>
99121
<groupId>com.powsybl</groupId>
@@ -124,6 +146,7 @@
124146
<dependency>
125147
<groupId>org.gridsuite</groupId>
126148
<artifactId>gridsuite-network-modification</artifactId>
149+
<version>${network-modification.version}</version>
127150
</dependency>
128151
<dependency>
129152
<groupId>com.powsybl</groupId>
@@ -204,11 +227,6 @@
204227
<artifactId>powsybl-open-loadflow</artifactId>
205228
<scope>runtime</scope>
206229
</dependency>
207-
<dependency>
208-
<groupId>com.powsybl</groupId>
209-
<artifactId>powsybl-config-classic</artifactId>
210-
<scope>runtime</scope>
211-
</dependency>
212230

213231
<!-- Test dependencies -->
214232
<dependency>

src/main/java/org/gridsuite/modification/server/dto/catalog/LineTypeInfos.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,6 @@ public class LineTypeInfos {
6767

6868
@JsonIgnore
6969
public LineTypeEntity toEntity() {
70-
throw new UnsupportedOperationException("TODO");
70+
throw new UnsupportedOperationException("toEntity() should be implemented in subclasses");
7171
}
7272
}

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

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package org.gridsuite.modification.server.elasticsearch;
88

99
import com.google.common.collect.Lists;
10+
import com.google.common.collect.Sets;
1011
import com.powsybl.iidm.network.IdentifiableType;
1112
import org.gridsuite.modification.server.dto.elasticsearch.EquipmentInfos;
1213
import org.gridsuite.modification.server.dto.elasticsearch.TombstonedEquipmentInfos;
@@ -38,7 +39,7 @@ public class EquipmentInfosService {
3839
@Value("${spring.data.elasticsearch.partition-size-for-deletion:2048}")
3940
public int partitionSizeForDeletion;
4041

41-
public static final Set<IdentifiableType> TYPES_FOR_INDEXING = Set.of(
42+
private static final Set<IdentifiableType> TYPES_FOR_EQUIPMENT_INDEXING = Set.of(
4243
IdentifiableType.SUBSTATION,
4344
IdentifiableType.VOLTAGE_LEVEL,
4445
IdentifiableType.HVDC_LINE,
@@ -53,6 +54,18 @@ public class EquipmentInfosService {
5354
IdentifiableType.STATIC_VAR_COMPENSATOR,
5455
IdentifiableType.HVDC_CONVERTER_STATION);
5556

57+
private static final Set<IdentifiableType> TYPES_FOR_MODIFICATION_INDEXING = Sets.union(
58+
TYPES_FOR_EQUIPMENT_INDEXING,
59+
Set.of(IdentifiableType.SWITCH, IdentifiableType.BUSBAR_SECTION));
60+
61+
public static Set<IdentifiableType> getIndexedEquipmentTypes() {
62+
return TYPES_FOR_EQUIPMENT_INDEXING;
63+
}
64+
65+
public static Set<IdentifiableType> getIndexedEquipmentTypesInModification() {
66+
return TYPES_FOR_MODIFICATION_INDEXING;
67+
}
68+
5669
public EquipmentInfosService(EquipmentInfosRepository equipmentInfosRepository, TombstonedEquipmentInfosRepository tombstonedEquipmentInfosRepository) {
5770
this.equipmentInfosRepository = equipmentInfosRepository;
5871
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/EntityRegistry.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ private EntityRegistry() {
7474
register(VoltageLevelTopologyModificationInfos.class, VoltageLevelTopologyModificationEntity.class);
7575
register(CreateCouplingDeviceInfos.class, CreateCouplingDeviceEntity.class);
7676
register(CreateVoltageLevelTopologyInfos.class, CreateVoltageLevelTopologyEntity.class);
77+
register(MoveVoltageLevelFeederBaysInfos.class, MoveVoltageLevelFeederBaysEntity.class);
7778

7879
// // attatching and splitting
7980
register(LineAttachToVoltageLevelInfos.class, LineAttachToVoltageLevelEntity.class);

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ public class BatteryCreationEntity extends InjectionCreationEntity {
6161
@Column(name = "droop")
6262
private Float droop;
6363

64+
@Column(name = "directTransX")
65+
private Double directTransX;
66+
67+
@Column(name = "stepUpTransformerX")
68+
private Double stepUpTransformerX;
69+
6470
public BatteryCreationEntity(@NonNull BatteryCreationInfos batteryCreationInfos) {
6571
super(batteryCreationInfos);
6672
assignAttributes(batteryCreationInfos);
@@ -83,6 +89,8 @@ private void assignAttributes(BatteryCreationInfos batteryCreationInfos) {
8389
this.targetQ = batteryCreationInfos.getTargetQ();
8490
this.participate = batteryCreationInfos.getParticipate();
8591
this.droop = batteryCreationInfos.getDroop();
92+
this.directTransX = batteryCreationInfos.getDirectTransX();
93+
this.stepUpTransformerX = batteryCreationInfos.getStepUpTransformerX();
8694
}
8795

8896
@Override
@@ -117,6 +125,8 @@ public BatteryCreationInfos toModificationInfos() {
117125
.targetQ(getTargetQ())
118126
.participate(getParticipate())
119127
.droop(getDroop())
128+
.directTransX(getDirectTransX())
129+
.stepUpTransformerX(getStepUpTransformerX())
120130
// properties
121131
.properties(CollectionUtils.isEmpty(getProperties()) ? null :
122132
getProperties().stream()

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/BatteryModificationEntity.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,16 @@ public class BatteryModificationEntity extends InjectionModificationEntity {
6363
})
6464
private FloatModificationEmbedded droop;
6565

66+
@Embedded
67+
@AttributeOverrides(value = {@AttributeOverride(name = "value", column = @Column(name = "directTransX")), @AttributeOverride(name = "opType", column = @Column(name = "directTransxOp"))
68+
})
69+
private DoubleModificationEmbedded directTransX;
70+
71+
@Embedded
72+
@AttributeOverrides(value = {@AttributeOverride(name = "value", column = @Column(name = "stepUpTransformerX")), @AttributeOverride(name = "opType", column = @Column(name = "stepUpTransformerxOp"))
73+
})
74+
private DoubleModificationEmbedded stepUpTransformerX;
75+
6676
@Embedded
6777
@AttributeOverrides(value = {@AttributeOverride(name = "value", column = @Column(name = "minQ")), @AttributeOverride(name = "opType", column = @Column(name = "minqOp"))
6878
})
@@ -102,6 +112,8 @@ private void assignAttributes(BatteryModificationInfos batteryModificationInfos)
102112
this.maxQ = batteryModificationInfos.getMaxQ() != null ? new DoubleModificationEmbedded(batteryModificationInfos.getMaxQ()) : null;
103113
this.participate = batteryModificationInfos.getParticipate() != null ? new BooleanModificationEmbedded(batteryModificationInfos.getParticipate()) : null;
104114
this.droop = batteryModificationInfos.getDroop() != null ? new FloatModificationEmbedded(batteryModificationInfos.getDroop()) : null;
115+
this.directTransX = batteryModificationInfos.getDirectTransX() != null ? new DoubleModificationEmbedded(batteryModificationInfos.getDirectTransX()) : null;
116+
this.stepUpTransformerX = batteryModificationInfos.getStepUpTransformerX() != null ? new DoubleModificationEmbedded(batteryModificationInfos.getStepUpTransformerX()) : null;
105117
this.reactiveCapabilityCurve = batteryModificationInfos.getReactiveCapabilityCurve() != null ? new BooleanModificationEmbedded(batteryModificationInfos.getReactiveCapabilityCurve()) : null;
106118
this.reactiveCapabilityCurvePoints = toEmbeddablePoints(batteryModificationInfos.getReactiveCapabilityCurvePoints());
107119
}
@@ -134,6 +146,8 @@ public BatteryModificationInfos toModificationInfos() {
134146
.maxQ(toAttributeModification(getMaxQ()))
135147
.participate(toAttributeModification(getParticipate()))
136148
.droop(toAttributeModification(getDroop()))
149+
.directTransX(toAttributeModification(getDirectTransX()))
150+
.stepUpTransformerX(toAttributeModification(getStepUpTransformerX()))
137151
.reactiveCapabilityCurve(toAttributeModification(getReactiveCapabilityCurve()))
138152
.reactiveCapabilityCurvePoints(DTOUtils.toReactiveCapabilityCurvePointsModificationInfos(getReactiveCapabilityCurvePoints()))
139153
// properties

0 commit comments

Comments
 (0)