Skip to content

Commit

Permalink
refactor GET modification to return all modification , stashed or not
Browse files Browse the repository at this point in the history
  • Loading branch information
jamal-khey committed Sep 29, 2023
1 parent a40111d commit be15241
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,14 @@ public NetworkModificationController(NetworkModificationService networkModificat
@ApiResponse(responseCode = "200", description = "List of modifications of the group")
public ResponseEntity<List<ModificationInfos>> getNetworkModifications(@Parameter(description = "Group UUID") @PathVariable("groupUuid") UUID groupUuid,
@Parameter(description = "Only metadata") @RequestParam(name = "onlyMetadata", required = false, defaultValue = "false") Boolean onlyMetadata,
@Parameter(description = "Stashed modifications") @RequestParam(name = "stashed", required = false, defaultValue = "false") Boolean stashed,
@Parameter(description = "Stashed modifications") @RequestParam(name = "stashed", required = false) Boolean stashed,
@Parameter(description = "Return 404 if group is not found or an empty list") @RequestParam(name = "errorOnGroupNotFound", required = false, defaultValue = "true") Boolean errorOnGroupNotFound) {
return ResponseEntity.ok().body(networkModificationService.getNetworkModifications(groupUuid, onlyMetadata, errorOnGroupNotFound, stashed));
if(stashed == null) {
return ResponseEntity.ok().body(networkModificationService.getAllNetworkModificationsWithMetaData(groupUuid, errorOnGroupNotFound));
}
else {
return ResponseEntity.ok().body(networkModificationService.getNetworkModifications(groupUuid, onlyMetadata, errorOnGroupNotFound, stashed));
}
}

@PostMapping(value = "/groups")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,27 @@ public List<ModificationInfos> getModifications(UUID groupUuid, boolean onlyMeta
}
}

@Transactional(readOnly = true)
public List<ModificationInfos> getAllModifications(UUID groupUuid, boolean errorOnGroupNotFound) {
try {
return getAllModificationsInfos(List.of(groupUuid));
} catch (NetworkModificationException e) {
if (e.getType() == MODIFICATION_GROUP_NOT_FOUND && !errorOnGroupNotFound) {
return List.of();
}
throw e;
}
}

@Transactional(readOnly = true)
public List<ModificationInfos> getAllModificationsMetaData(UUID groupUuid) {
return modificationRepository
.findAllBaseByGroupId(getModificationGroup(groupUuid).getId())
.stream()
.map(ModificationEntity::toModificationInfos)
.collect(Collectors.toList());
}

public List<ModificationInfos> getModificationsMetadata(UUID groupUuid, boolean stashedModifications) {
return modificationRepository
.findAllBaseByGroupId(getModificationGroup(groupUuid).getId())
Expand All @@ -144,6 +165,12 @@ public List<ModificationInfos> getModificationsInfos(List<UUID> groupUuids, bool
.collect(Collectors.toList());
}

public List<ModificationInfos> getAllModificationsInfos(List<UUID> groupUuids) {
return groupUuids.stream().flatMap(this::getModificationEntityStream)
.map(ModificationEntity::toModificationInfos)
.collect(Collectors.toList());
}

@Transactional(readOnly = true)
public ModificationInfos getModificationInfo(UUID modificationUuid) {
return modificationRepository
Expand Down Expand Up @@ -255,4 +282,5 @@ public void deleteStashedModificationInGroup(UUID groupUuid, boolean errorOnGrou
throw e;
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,26 @@ public List<ModificationInfos> getNetworkModifications(UUID groupUuid, boolean o
return networkModificationRepository.getModifications(groupUuid, onlyMetadata, errorOnGroupNotFound, stashedModifications);
}

@Transactional(readOnly = true)
// Need a transaction for collections lazy loading
public List<ModificationInfos> getAllNetworkModificationsWithMetaData(UUID groupUuid, boolean errorOnGroupNotFound) {
List<ModificationInfos> modifications = networkModificationRepository.getAllModifications(groupUuid, errorOnGroupNotFound);
List<ModificationInfos> metaData = networkModificationRepository.getAllModificationsMetaData(groupUuid);
//put modification in a hashmap
Map<UUID, ModificationInfos> modificationInfosMap = modifications.stream().collect(Collectors.toMap(ModificationInfos::getUuid, m -> m));
//put metadata in a hashmap
Map<UUID, ModificationInfos> metaDataMap = metaData.stream().collect(Collectors.toMap(ModificationInfos::getUuid, m -> m));

modificationInfosMap.forEach((uuid,modificationInfos) -> {
ModificationInfos metadata = metaDataMap.get(uuid);
if (modificationInfos != null) {
modificationInfos.setStashed(metadata.getStashed());
modificationInfos.setDate(metadata.getDate());
}
});
return modifications;
}

@Transactional(readOnly = true)
// Need a transaction for collections lazy loading
public List<ModificationInfos> getNetworkModifications(UUID groupUuid, boolean onlyMetadata, boolean errorOnGroupNotFound) {
Expand Down

0 comments on commit be15241

Please sign in to comment.