Skip to content

Commit

Permalink
Add endpoint to retrieve modification count for a given group (#370)
Browse files Browse the repository at this point in the history
Signed-of-by: Hugo Marcellin <[email protected]>
  • Loading branch information
Meklo authored Nov 23, 2023
1 parent e537862 commit 841b4b3
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,14 @@ public ResponseEntity<List<ModificationInfos>> getNetworkModifications(@Paramete
return ResponseEntity.ok().body(networkModificationService.getNetworkModifications(groupUuid, onlyMetadata, errorOnGroupNotFound, onlyStashed));
}

@GetMapping(value = "/groups/{groupUuid}/network-modifications-count", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Get a groups's modification count")
@ApiResponse(responseCode = "200", description = "Count of group's modifications")
public ResponseEntity<Integer> getNetworkModificationsCount(@Parameter(description = "Group UUID") @PathVariable("groupUuid") UUID groupUuid,
@Parameter(description = "Stashed modifications") @RequestParam(name = "stashed", required = false, defaultValue = "false") Boolean stashed) {
return ResponseEntity.ok().body(networkModificationService.getNetworkModificationsCount(groupUuid, stashed));
}

@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 @@ -37,4 +37,6 @@ public interface ModificationRepository extends JpaRepository<ModificationEntity

@EntityGraph(attributePaths = {"reactiveCapabilityCurvePoints"}, type = EntityGraph.EntityGraphType.LOAD)
Set<GeneratorModificationEntity> findAllReactiveCapabilityCurvePointsByIdIn(List<UUID> ids);

Integer countByGroupIdAndStashed(UUID groupId, boolean stashed);
}
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,11 @@ private List<ModificationEntity> getModificationsEntities(UUID groupUuid) {
return getModificationEntityStream(groupUuid).collect(Collectors.toList());
}

@Transactional(readOnly = true)
public Integer getModificationsCount(@NonNull UUID groupUuid, boolean stashed) {
return modificationRepository.countByGroupIdAndStashed(groupUuid, stashed);
}

@Transactional(readOnly = true)
public List<ModificationEntity> getModificationsEntities(@NonNull List<UUID> uuids) {
// Spring-data findAllById doc says: the order of elements in the result is not guaranteed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ public ModificationInfos getNetworkModification(UUID networkModificationUuid) {
return networkModificationRepository.getModificationInfo(networkModificationUuid);
}

public Integer getNetworkModificationsCount(UUID groupUuid, boolean stashed) {
return networkModificationRepository.getModificationsCount(groupUuid, stashed);
}

public void deleteModificationGroup(UUID groupUuid, boolean errorOnGroupNotFound) {
networkModificationRepository.deleteModificationGroup(groupUuid, errorOnGroupNotFound);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1351,4 +1351,25 @@ public void testDeleteStashedNetworkModifications() throws Exception {
assertEquals(0, modificationRepository.getModifications(TEST_GROUP_ID, true, true, true).size());
mockMvc.perform(delete("/v1/groups/" + UUID.randomUUID() + "/stashed-modifications").queryParam("errorOnGroupNotFound", "false")).andExpect(status().isOk());
}

@Test
public void testGetModificationsCount() throws Exception {
MvcResult mvcResult;
createSomeSwitchModifications(TEST_GROUP_ID, 3);
mvcResult = mockMvc.perform(get("/v1/groups/{groupUuid}/network-modifications-count", TEST_GROUP_ID)
.queryParam("stashed", "false"))
.andExpect(status().isOk()).andReturn();
assertEquals(3, Integer.valueOf(mvcResult.getResponse().getContentAsString()).intValue());

mvcResult = mockMvc.perform(get("/v1/groups/{groupUuid}/network-modifications-count", TEST_GROUP_ID)
.queryParam("stashed", "true"))
.andExpect(status().isOk()).andReturn();
assertEquals(0, Integer.valueOf(mvcResult.getResponse().getContentAsString()).intValue());

//Test for stashed parameter default value
mvcResult = mockMvc.perform(get("/v1/groups/{groupUuid}/network-modifications-count", TEST_GROUP_ID))
.andExpect(status().isOk()).andReturn();
assertEquals(3, Integer.valueOf(mvcResult.getResponse().getContentAsString()).intValue());

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -1176,4 +1176,20 @@ public void testVoltageInitModification() {
assertEquals(0, networkModificationRepository.getModifications(TEST_GROUP_ID, true, true).size());
assertRequestsCount(2, 0, 0, 0);
}

@Test
public void testGetModificationCount() {
var modifEntity1 = EquipmentAttributeModificationInfos.builder().equipmentId("id2").equipmentAttributeName("attribute").equipmentAttributeValue("foo").equipmentType(IdentifiableType.VOLTAGE_LEVEL).build().toEntity();
var modifEntity2 = EquipmentAttributeModificationInfos.builder().equipmentId("id2").equipmentAttributeName("attribute").equipmentAttributeValue("foo").equipmentType(IdentifiableType.VOLTAGE_LEVEL).build().toEntity();
networkModificationRepository.saveModifications(TEST_GROUP_ID, List.of(modifEntity1, modifEntity2));
SQLStatementCountValidator.reset();
assertEquals(2, networkModificationRepository.getModificationsCount(TEST_GROUP_ID, false).intValue());
assertRequestsCount(1, 0, 0, 0);

SQLStatementCountValidator.reset();
assertEquals(0, networkModificationRepository.getModificationsCount(TEST_GROUP_ID, true).intValue());
assertRequestsCount(1, 0, 0, 0);

assertThrows(NullPointerException.class, () -> networkModificationRepository.getModificationsCount(null, true));
}
}

0 comments on commit 841b4b3

Please sign in to comment.