Skip to content

Commit b286aba

Browse files
committed
Merge branch 'main' into applynoblocktomcat
2 parents c8bb81e + 0a74098 commit b286aba

File tree

4 files changed

+21
-28
lines changed

4 files changed

+21
-28
lines changed

src/main/java/org/gridsuite/modification/server/modifications/NetworkModificationApplicator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,7 @@ public NetworkModificationResult applyModifications(List<ModificationApplication
164164

165165
private NetworkModificationResult applyAndFlush(List<ModificationApplicationGroup> modificationInfosGroups,
166166
NetworkStoreListener listener) {
167-
List<ApplicationStatus> groupsApplicationStatuses = apply(modificationInfosGroups, listener);
168-
return flushModificationApplications(groupsApplicationStatuses, listener);
167+
return flushModificationApplications(apply(modificationInfosGroups, listener), listener);
169168
}
170169

171170
// This method is used when building a variant

src/main/java/org/gridsuite/modification/server/repositories/NetworkModificationRepository.java

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,14 @@ public void deleteAll() {
106106
}
107107

108108
@Transactional // To have all create in the same transaction (atomic)
109-
// TODO Remove transaction when errors will no longer be sent to the front
110109
// This method should be package-private and not used as API of the service as it uses ModificationEntity and
111110
// we want to encapsulate the use of Entity related objects to this service.
112111
// Nevertheless We have to keep it public for transactional annotation.
113112
public List<ModificationEntity> saveModifications(UUID groupUuid, List<ModificationEntity> modifications) {
114113
return saveModificationsNonTransactional(groupUuid, modifications);
115114
}
116115

117-
@Transactional // To have all create in the same transaction (atomic)
118-
// TODO Remove transaction when errors will no longer be sent to the front
116+
@Transactional
119117
public List<ModificationEntity> saveModificationInfos(UUID groupUuid, List<ModificationInfos> modifications) {
120118
return saveModificationInfosNonTransactional(groupUuid, modifications);
121119
}
@@ -170,18 +168,9 @@ private List<ModificationEntity> saveModificationsNonTransactional(UUID groupUui
170168
}
171169

172170
@Transactional
173-
// TODO Remove transaction when errors will no longer be sent to the front
174171
public List<ModificationEntity> moveModifications(UUID destinationGroupUuid, UUID originGroupUuid, List<UUID> modificationsToMoveUUID, UUID referenceModificationUuid) {
175-
return moveModificationsNonTransactional(destinationGroupUuid, originGroupUuid, modificationsToMoveUUID, referenceModificationUuid);
176-
}
177-
178-
@Transactional
179-
public List<ModificationEntity> moveModificationsFullDto(UUID destinationGroupUuid, UUID originGroupUuid, List<UUID> modificationsToMoveUUID, UUID referenceModificationUuid) {
180172
List<ModificationEntity> movedModifications = moveModificationsNonTransactional(destinationGroupUuid, originGroupUuid, modificationsToMoveUUID, referenceModificationUuid);
181-
// Force load subentities/collections, needed later when the transaction is closed
182-
// to avoid LazyInitialisationException. Maybe better to refactor to return the dto ?
183-
// And refactor to more efficiently load the data (avoid 1+N) ?
184-
movedModifications.forEach(ModificationEntity::toModificationInfos);
173+
loadFullModificationsEntities(movedModifications);
185174
return movedModifications;
186175
}
187176

@@ -292,7 +281,7 @@ public List<ModificationInfos> getModifications(UUID groupUuid, boolean onlyMeta
292281

293282
public List<ModificationInfos> getModifications(UUID groupUuid, boolean onlyMetadata, boolean errorOnGroupNotFound, boolean onlyStashed) {
294283
try {
295-
return onlyMetadata ? getModificationsMetadata(groupUuid, onlyStashed) : getModificationsEntities(List.of(groupUuid), onlyStashed).stream().map(this::getModificationInfos).toList();
284+
return onlyMetadata ? getModificationsMetadata(groupUuid, onlyStashed) : getModificationsInfos(List.of(groupUuid), onlyStashed);
296285
} catch (NetworkModificationException e) {
297286
if (e.getType() == MODIFICATION_GROUP_NOT_FOUND && !errorOnGroupNotFound) {
298287
return List.of();
@@ -451,7 +440,7 @@ private TabularCreationInfos loadTabularCreation(ModificationEntity modification
451440
.build();
452441
}
453442

454-
public ModificationInfos getModificationInfos(ModificationEntity modificationEntity) {
443+
private ModificationInfos getModificationInfos(ModificationEntity modificationEntity) {
455444
if (modificationEntity instanceof TabularModificationEntity) {
456445
return loadTabularModification(modificationEntity);
457446
} else if (modificationEntity instanceof TabularCreationEntity) {
@@ -469,19 +458,24 @@ private List<ModificationEntity> getModificationsEntitiesNonTransactional(List<U
469458
}
470459
}
471460

472-
//TODO ? should be @Transactional(readOnly = true)
461+
@Transactional(readOnly = true)
473462
public List<ModificationEntity> getModificationsEntities(List<UUID> groupUuids, boolean onlyStashed) {
474-
return getModificationsEntitiesNonTransactional(groupUuids, onlyStashed);
463+
List<ModificationEntity> modificationsEntities = getModificationsEntitiesNonTransactional(groupUuids, onlyStashed);
464+
loadFullModificationsEntities(modificationsEntities);
465+
return modificationsEntities;
475466
}
476467

477-
@Transactional(readOnly = true)
478-
public List<ModificationEntity> getModificationsEntitiesFullDto(List<UUID> groupUuids, boolean onlyStashed) {
479-
List<ModificationEntity> modificationsEntities = getModificationsEntitiesNonTransactional(groupUuids, onlyStashed);
468+
private void loadFullModificationsEntities(List<ModificationEntity> modificationsEntities) {
480469
// Force load subentities/collections, needed later when the transaction is closed
470+
// Necessary for applying network modifications
481471
// to avoid LazyInitialisationException. Maybe better to refactor to return the dto ?
482472
// And refactor to more efficiently load the data (avoid 1+N) ?
483-
modificationsEntities.forEach(ModificationEntity::toModificationInfos);
484-
return modificationsEntities;
473+
modificationsEntities.forEach(this::getModificationInfos);
474+
}
475+
476+
private List<ModificationInfos> getModificationsInfos(List<UUID> groupUuids, boolean onlyStashed) {
477+
return getModificationsEntitiesNonTransactional(groupUuids, onlyStashed).stream()
478+
.map(this::getModificationInfos).toList();
485479
}
486480

487481
@Transactional(readOnly = true)

src/main/java/org/gridsuite/modification/server/service/NetworkModificationService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ public NetworkModificationResult buildVariant(@NonNull UUID networkUuid, @NonNul
276276
List<ModificationEntity> modifications = List.of();
277277
try {
278278
// FullDto needed for toModificationInfos() after the modifications have been applied
279-
modifications = networkModificationRepository.getModificationsEntitiesFullDto(List.of(groupUuid), false)
279+
modifications = networkModificationRepository.getModificationsEntities(List.of(groupUuid), false)
280280
.stream()
281281
.filter(m -> modificationsToExclude == null || !modificationsToExclude.contains(m.getId()))
282282
.filter(m -> !m.getStashed())
@@ -322,7 +322,7 @@ public CompletableFuture<NetworkModificationsResult> moveModifications(@NonNull
322322
boolean applyModifications) {
323323
// update origin/destinations groups to cut and paste all modificationsToMove
324324
// FullDto needed for toModificationInfos() after the modifications have been applied
325-
List<ModificationEntity> modificationEntities = networkModificationRepository.moveModificationsFullDto(destinationGroupUuid, originGroupUuid, modificationsToMoveUuids, beforeModificationUuid);
325+
List<ModificationEntity> modificationEntities = networkModificationRepository.moveModifications(destinationGroupUuid, originGroupUuid, modificationsToMoveUuids, beforeModificationUuid);
326326

327327
CompletableFuture<List<Optional<NetworkModificationResult>>> futureResult = applyModifications && !modificationEntities.isEmpty() ? applyModifications(destinationGroupUuid, modificationEntities, applicationContexts) : CompletableFuture.completedFuture(List.of());
328328
return futureResult.thenApply(result -> new NetworkModificationsResult(modificationEntities.stream().map(ModificationEntity::getId).toList(), result));

src/test/java/org/gridsuite/modification/server/service/ModificationRepositoryTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ void testMoveModificationInSameGroup() {
510510

511511
SQLStatementCountValidator.reset();
512512
networkModificationRepository.moveModifications(TEST_GROUP_ID, TEST_GROUP_ID, List.of(tabularModificationEntity.getId()), groovyScriptEntity2.getId());
513-
assertRequestsCount(2, 0, 2, 0);
513+
assertRequestsCount(6, 0, 2, 0);
514514

515515
var modification = networkModificationRepository.getModifications(TEST_GROUP_ID, true, true);
516516
// [0:1, 1:6, 2:2, 3:3, 4:4 ,5:5 ]
@@ -521,7 +521,7 @@ void testMoveModificationInSameGroup() {
521521

522522
SQLStatementCountValidator.reset();
523523
networkModificationRepository.moveModifications(TEST_GROUP_ID, TEST_GROUP_ID, List.of(groovyScriptEntity3.getId(), tabularModificationEntity.getId()), null);
524-
assertRequestsCount(2, 0, 2, 0);
524+
assertRequestsCount(6, 0, 2, 0);
525525

526526
// [0:1, 1:2, 2:4, 3:5, 4:6, 5:3 ]
527527
modification = networkModificationRepository.getModifications(TEST_GROUP_ID, true, true);

0 commit comments

Comments
 (0)