Skip to content

Commit

Permalink
add get all modification with meta data
Browse files Browse the repository at this point in the history
Signed-off-by: jamal-khey <[email protected]>
  • Loading branch information
jamal-khey committed Oct 11, 2023
1 parent 021ebca commit 202a77a
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,16 @@ public ResponseEntity<List<ModificationInfos>> getNetworkModifications(@Paramete
return ResponseEntity.ok().body(networkModificationService.getNetworkModifications(groupUuid, onlyMetadata, errorOnGroupNotFound, stashed));
}

@GetMapping(value = "/groups/{groupUuid}/network-modifications-all", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Get modifications list of a group")
@ApiResponse(responseCode = "200", description = "List of modifications of the group")
public ResponseEntity<List<ModificationInfos>> getNetworkModificationsAll(@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 = "onlyStashed", required = false, defaultValue = "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.getAllNetworkModificationsWithMetaData(groupUuid, errorOnGroupNotFound));
}

@PostMapping(value = "/groups")
@Operation(summary = "Create a modification group based on another group")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "The group and its modifications have been duplicated")})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,16 +161,14 @@ public List<ModificationInfos> getAllModificationInfo(UUID groupUuid) {
.collect(Collectors.toList());
}

//find all stashed modifications
@Transactional(readOnly = true)
public List<ModificationInfos> getAllStashedModificationsInfo(UUID groupUuid) {
ModificationGroupEntity groupEntity = getModificationGroup(groupUuid);
return groupEntity.getModifications().stream()
.filter(ModificationEntity::getStashed)
public List<ModificationInfos> getAllModificationsMetaData(UUID groupUuid) {
return modificationRepository
.findAllBaseByGroupId(getModificationGroup(groupUuid).getId())
.stream()
.map(ModificationEntity::toModificationInfos)
.collect(Collectors.toList());
}

@Transactional // To have the 2 delete in the same transaction (atomic)
public void deleteModificationGroup(UUID groupUuid, boolean errorOnGroupNotFound) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,28 @@ public ModificationInfos getNetworkModification(UUID networkModificationUuid) {
//get all network modifications
@Transactional(readOnly = true)
public List<ModificationInfos> getAllNetworkModifications(UUID groupUuid) {
return networkModificationRepository.getAllModificationInfo(groupUuid);
List<ModificationInfos> modifications = networkModificationRepository.getAllModificationInfo(groupUuid);
return modifications;
}

@Transactional(readOnly = true)
public List<ModificationInfos> getAllStashedModifications(UUID groupUuid) {
return networkModificationRepository.getAllStashedModificationsInfo(groupUuid);
// Need a transaction for collections lazy loading
public List<ModificationInfos> getAllNetworkModificationsWithMetaData(UUID groupUuid, boolean errorOnGroupNotFound) {
List<ModificationInfos> modifications = networkModificationRepository.getAllModificationInfo(groupUuid);
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;
}

public void deleteModificationGroup(UUID groupUuid, boolean errorOnGroupNotFound) {
Expand Down

0 comments on commit 202a77a

Please sign in to comment.