@@ -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 )
0 commit comments